| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 | <?phpdefined('IN_PHPCMS') or exit('No permission resources.');pc_base::load_app_class('admin', 'admin', 0);class data extends admin {	private $db;	public function __construct() {		$this->db = pc_base::load_model('datacall_model');		parent::__construct();	}		public function init() {		$big_menu = array('javascript:window.top.art.dialog({id:\'add\',iframe:\'?m=dbsource&c=data&a=add\', title:\''.L('adding_data_source_call').'\', width:\'700\', height:\'500\', lock:true}, function(){var d = window.top.art.dialog({id:\'add\'}).data.iframe;var form = d.document.getElementById(\'dosubmit\');form.click();return false;}, function(){window.top.art.dialog({id:\'add\'}).close()});void(0);', L('adding_data_source_call'));		$page = isset($_GET['page']) && intval($_GET['page']) ? intval($_GET['page']) : 1;		$list = $this->db->listinfo('','id desc', $page, 20);		$pages = $this->db->pages;		include $this->admin_tpl('data_list');	}		public function add() {		pc_base::load_app_func('global');		if (isset($_POST['dosubmit'])) {			$name = isset($_POST['name']) && trim($_POST['name']) ? trim($_POST['name']) : showmessage(L('name').L('empty'));			$dis_type = isset($_POST['dis_type']) && intval($_POST['dis_type']) ? intval($_POST['dis_type']) : 1;			$cache = isset($_POST['cache']) && intval($_POST['cache']) ? intval($_POST['cache']) : 0;			$num = isset($_POST['num']) && intval($_POST['num']) ? intval($_POST['num']) : 0;			$type = isset($_POST['type']) && intval($_POST['type']) ? intval($_POST['type']) : 0;			//检查名称是否已经存在			if ($this->db->get_one(array('name'=>$name)))  {				showmessage(L('name').L('exists'));			}			$sql = array();			if ($type == '1') { //自定义SQL				$data = isset($_POST['data']) && trim($_POST['data']) ? trim($_POST['data']) : showmessage(L('custom_sql').L('empty'));				$sql = array('data'=>$data);			} else { //模型配置方式				$module = isset($_POST['module']) && trim($_POST['module']) ? trim($_POST['module']) : showmessage(L('please_select_model'));				$action = isset($_POST['action']) && trim($_POST['action']) ? trim($_POST['action']) : showmessage(L('please_select_action'));				$html = pc_tag_class($module);				$data = array();				if (isset($html[$action]) && is_array($html[$action])) {					foreach ($html[$action] as $key=>$val) {						$val['validator']['reg_msg'] = $val['validator']['reg_msg'] ? $val['validator']['reg_msg'] : $val['name'].L('inputerror');						$$key = isset($_POST[$key]) && trim($_POST[$key]) ? trim($_POST[$key]) : '';						if (!empty($val['validator'])) {							if (isset($val['validator']['min']) && strlen($$key) < $val['validator']['min']) {								showmessage($val['name'].L('should').L('is_greater_than').$val['validator']['min'].L('lambda'));							} 							if (isset($val['validator']['max']) && strlen($$key) > $val['validator']['max']) {								showmessage($val['name'].L('should').L('less_than').$val['validator']['max'].L('lambda'));							} 							if (!preg_match('/'.$val['validator']['reg'].'/'.$val['validator']['reg_param'], $$key)) {								showmessage($val['name'].$val['validator']['reg_msg']);							}						}						$data[$key] = $$key;					}				}				$sql = array('data'=>array2string($data), 'module'=>$module, 'action'=>$action);			}						if ($dis_type == 3) {				$sql['template'] = isset($_POST['template']) && trim($_POST['template']) ? trim($_POST['template']) : '';			}			//初始化数据			$sql['name'] = $name;			$sql['type'] = $type;			$sql['dis_type'] = $dis_type;			$sql['cache'] = $cache;			$sql['num'] = $num;			if ($id = $this->db->insert($sql,true)) {				//当为JS时,输出模板文件				if ($dis_type == 3) {					$tpl = pc_base::load_sys_class('template_cache');					$str = $this->db->get_one(array('id'=>$id), 'template');					$str = $tpl->template_parse($str['template']);					$filepath = CACHE_PATH.'caches_template'.DIRECTORY_SEPARATOR.'dbsource'.DIRECTORY_SEPARATOR;					if(!is_dir($filepath)) {						mkdir($filepath, 0777, true);				    }					@file_put_contents($filepath.$id.'.php', $str);				}								showmessage('', '', '', 'add');			} else {				showmessage(L('operation_failure'));			}		} else {			pc_base::load_sys_class('form','',0);			$modules = array_merge(array(''=>L('please_select')),pc_base::load_config('modules'));			$show_header = $show_validator = true;			$type = isset($_GET['type']) && intval($_GET['type']) ? intval($_GET['type']) : 0;			$module = isset($_GET['module']) && trim($_GET['module']) ? trim($_GET['module']) : '';			$action = isset($_GET['action']) && trim($_GET['action']) ? trim($_GET['action']) : '';			if ($module) $html = pc_tag_class($module);			pc_base::load_app_func('global','template');			include $this->admin_tpl('data_add');		}	}		public function edit() {		$id = isset($_GET['id']) && intval($_GET['id']) ? intval($_GET['id']) :  showmessage(L('illegal_parameters'), HTTP_REFERER);		if (!$edit_data = $this->db->get_one(array('id'=>$id))) {			showmessage(L('notfound'));		}		pc_base::load_app_func('global');		if (isset($_POST['dosubmit'])) {			$name = isset($_POST['name']) && trim($_POST['name']) ? trim($_POST['name']) : showmessage(L('name').L('empty'));			$dis_type = isset($_POST['dis_type']) && intval($_POST['dis_type']) ? intval($_POST['dis_type']) : 1;			$cache = isset($_POST['cache']) && intval($_POST['cache']) ? intval($_POST['cache']) : 0;			$num = isset($_POST['num']) && intval($_POST['num']) ? intval($_POST['num']) : 0;			$type = isset($_POST['type']) && intval($_POST['type']) ? intval($_POST['type']) : 0;			//检查名称是否已经存在		if ($edit_data['name'] != $name) {				if ($this->db->get_one(array('name'=>$name), 'id'))  {					showmessage(L('name').L('exists'));				}			}			$sql = array();			if ($type == '1') { //自定义SQL				$data = isset($_POST['data']) && trim($_POST['data']) ? trim($_POST['data']) : showmessage(L('custom_sql').L('empty'));				$sql = array('data'=>$data);			} else { //模型配置方式				$module = isset($_POST['module']) && trim($_POST['module']) ? trim($_POST['module']) : showmessage(L('please_select_model'));				$action = isset($_POST['action']) && trim($_POST['action']) ? trim($_POST['action']) : showmessage(L('please_select_action'));				$html = pc_tag_class($module);				$data = array();				if (isset($html[$action]) && is_array($html[$action])) {					foreach ($html[$action] as $key=>$val) {						$val['validator']['reg_msg'] = $val['validator']['reg_msg'] ? $val['validator']['reg_msg'] : $val['name'].L('inputerror');						$$key = isset($_POST[$key]) && trim($_POST[$key]) ? trim($_POST[$key]) : '';					if (!empty($val['validator'])) {							if (isset($val['validator']['min']) && strlen($$key) < $val['validator']['min']) {								showmessage($val['name'].L('should').L('is_greater_than').$val['validator']['min'].L('lambda'));							} 							if (isset($val['validator']['max']) && strlen($$key) > $val['validator']['max']) {								showmessage($val['name'].L('should').L('less_than').$val['validator']['max'].L('lambda'));							} 							if (!preg_match('/'.$val['validator']['reg'].'/'.$val['validator']['reg_param'], $$key)) {								showmessage($val['name'].$val['validator']['reg_msg']);							}						}						$data[$key] = $$key;					}				}				$sql = array('data'=>array2string($data), 'module'=>$module, 'action'=>$action);			}						if ($dis_type == 3) {				$sql['template'] = isset($_POST['template']) && trim($_POST['template']) ? trim($_POST['template']) : '';			}			//初始化数据			$sql['name'] = $name;			$sql['type'] = $type;			$sql['dis_type'] = $dis_type;			$sql['cache'] = $cache;			$sql['num'] = $num;			if ($this->db->update($sql,array('id'=>$id))) {				//当为JS时,输出模板文件				if ($dis_type == 3) {					$tpl = pc_base::load_sys_class('template_cache');					$str = $this->db->get_one(array('id'=>$id), 'template');					$str = $tpl->template_parse($str['template']);					$filepath = CACHE_PATH.'caches_template'.DIRECTORY_SEPARATOR.'dbsource'.DIRECTORY_SEPARATOR;					if(!is_dir($filepath)) {						mkdir($filepath, 0777, true);				    }					@file_put_contents($filepath.$id.'.php', $str);				}								showmessage('', '', '', 'edit');			} else {				showmessage(L('operation_failure'));			}		} else {			pc_base::load_sys_class('form','',0);			$modules = array_merge(array(''=>L('please_select')),pc_base::load_config('modules'));			$show_header = $show_validator = true;			$type = isset($_GET['type']) ? intval($_GET['type']) : $edit_data['type'];			$module = isset($_GET['module']) && trim($_GET['module']) ? trim($_GET['module']) : $edit_data['module'];			$action = isset($_GET['action']) && trim($_GET['action']) ? trim($_GET['action']) : $edit_data['action'];			if ($edit_data['type'] == 0) $form_data = string2array($edit_data['data']);			if ($module) $html = pc_tag_class($module);			pc_base::load_app_func('global','template');			include $this->admin_tpl('data_edit');		}	}		public function del() {		$id = isset($_GET['id']) ? $_GET['id'] : '';		if (is_array($id)) {			foreach ($id as $key => $v) {				if (intval($v)) {					$id[$key] = intval($v);				} else {					unset($id[$key]);				}			}			$sql = implode('\',\'', $id);			$this->db->delete("id in ('$sql')");			showmessage(L('operation_success'), HTTP_REFERER);		} else {			$id = intval($id);			if(empty($id)) showmessage(L('illegal_parameters'), HTTP_REFERER);			if ($this->db->delete(array('id'=>$id))) {				showmessage(L('operation_success'), HTTP_REFERER);			} else {				showmessage(L('operation_failure'), HTTP_REFERER);			}		}	}		public function public_name() {		$name = isset($_GET['name']) && trim($_GET['name']) ? (pc_base::load_config('system', 'charset') == 'gbk' ? iconv('utf-8', 'gbk', trim($_GET['name'])) : trim($_GET['name'])) : exit('0');		$id = isset($_GET['id']) && intval($_GET['id']) ? intval($_GET['id']) : ''; 		$data = array();		if ($id) {			$data = $this->db->get_one(array('id'=>$id), 'name');			if (!empty($data) && $data['name'] == $name) {				exit('1');			}		}		if ($this->db->get_one(array('name'=>$name), 'id')) {			exit('0');		} else {			exit('1');		}	}}
 |