Server : nginx/1.22.1
System : Linux iZwz9daxib3w3i063fw434Z 3.10.0-1127.19.1.el7.x86_64 #1 SMP Tue Aug 25 17:23:54 UTC 2020 x86_64
User : www ( 1000)
PHP Version : 5.6.40
Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Directory :  /www/wwwroot/www.jkmold.com/phpcms/modules/tag/
Upload File :
Current Directory [ Writeable ] Root Directory [ Writeable ]


Current File : /www/wwwroot/www.jkmold.com/phpcms/modules/tag/tag.php
<?php

defined('IN_PHPCMS') or exit('No permission resources.');

pc_base::load_app_class('admin', 'admin', 0);



class tag extends admin {

	private $db, $dbsource;

	public function __construct() {

		$this->db = pc_base::load_model('tag_model');

		$this->dbsource = pc_base::load_model('dbsource_model');

		parent::__construct();

	}

	

	/**

	 * 标签向导列表

	 */

	public function init() {

		$big_menu = array('javascript:window.top.art.dialog({id:\'add\',iframe:\'?m=tag&c=tag&a=add\', title:\''.L('add_tag').'\', 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('add_tag'));

		$page = isset($_POST['page']) && intval($_POST['page']) ? intval($_POST['page']) : 1;

		$list = $this->db->listinfo('','id desc', $page, 20);

		$pages = $this->db->pages;

		include $this->admin_tpl('tag_list');

	}



	/**

	 * 添加标签向导

	 */

	public function add() {

		pc_base::load_app_func('global', 'dbsource');

		if (isset($_POST['dosubmit'])) {

			$name = isset($_POST['name']) && trim($_POST['name']) ? trim($_POST['name']) : showmessage(L('name').L('empty'));

			$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;

			$ac = isset($_GET['ac']) && !empty($_GET['ac']) ? trim($_GET['ac']) : '';

			//检查名称是否已经存在

			if ($this->db->get_one(array('name'=>$name)))  {

				showmessage(L('name').L('exists'));

			}

			$siteid = $this->get_siteid();

			if ($type == '1') { //自定义SQL

				$sql = isset($_POST['data']) && trim($_POST['data']) ? trim($_POST['data']) : showmessage(L('custom_sql').L('empty'));

				$data['sql'] = $sql;

				$tag = '{pc:get sql="'.$sql.'" ';

				if ($cache) {

					$tag .= 'cache="'.$cache.'" ';

				}

				if ($_POST['page']) {

					$tag .= 'page="'.$_POST['page'].'" ';

				}

				if ($_POST['dbsource']) {

					$data['dbsource'] = $_POST['dbsource'];

					$tag .= 'dbsource= "'.$_POST['dbsource'].'" ';

				}

				if ($_POST['return']) {

					$tag .= 'return="'.$_POST['return'].'"';

				}

				$tag .= '}';

			} elseif ($type == 0) { //模型配置

				$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();

				$tag = '{pc:'.$module.' action="'.$action.'" ';

				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']);

							}

						}

						$tag .= $key.'="'.$$key.'" ';

						$data[$key] = $$key;

					}

				}

				if ($_POST['page']) {

					$tag .= 'page="'.$_POST['page'].'" ';

				}

				if ($num) {

					$tag .= ' num="'.$num.'" ';

				}

				if ($_POST['return']) {

					$tag .= ' return="'.$_POST['return'].'" ';

				}

				if ($cache) {

					$tag .= ' cache="'.$cache.'" ';

				}

				$tag .= '}';

			} else { //碎片

				$data = isset($_POST['block']) && trim($_POST['block']) ? trim($_POST['block']) : showmessage(L('block_name_not_empty'));

				$tag = '{pc:block pos="'.$data.'"}';

			}

			$tag .= "\n".'{loop $data $n $r}'."\n".'<li><a href="{$r[\'url\']}" title="{$r[\'title\']}">{$r[\'title\']}</a></li>'."\n".'{/loop}'."\n".'{/pc}';

			$tag = new_addslashes($tag);

			$data = is_array($data) ? array2string($data) : $data;

			$this->db->insert(array('siteid'=>$siteid, 'tag'=>$tag, 'name'=>$name, 'type'=>$type, 'module'=>$module, 'action'=>$action, 'data'=>$data, 'page'=>$_POST['page'], 'return'=>$_POST['return'], 'cache'=>$cache, 'num'=>$num));

			if ($ac=='js') {

				include $this->admin_tpl('tag_show');

			} else {

				showmessage('', '', '', 'add');

			}

		} 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;

			$siteid = $this->get_siteid();

			$dbsource_data = $dbsource = array();

			$dbsource[] = L('please_select');

			$dbsource_data = $this->dbsource->select(array('siteid'=>$siteid), 'name');

			foreach ($dbsource_data as $dbs) {

				$dbsource[$dbs['name']] = $dbs['name'];

			}

			$ac = isset($_GET['ac']) && !empty($_GET['ac']) ? trim($_GET['ac']) : '';

			$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('tag_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', 'dbsource');

		if (isset($_POST['dosubmit'])) {

			$name = isset($_POST['name']) && trim($_POST['name']) ? trim($_POST['name']) : showmessage(L('name').L('empty'));

			$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'));

				}

			}

			$siteid = $this->get_siteid();

			if ($type == '1') { //自定义SQL

				$sql = isset($_POST['data']) && trim($_POST['data']) ? trim($_POST['data']) : showmessage(L('custom_sql').L('empty'));

				$data['sql'] = $sql;

				$tag = '{pc:get sql="'.$sql.'" ';

				if ($cache) {

					$tag .= 'cache="'.$cache.'" ';

				}

				if ($_POST['page']) {

					$tag .= 'page="'.$_POST['page'].'" ';

				}

				if ($_POST['dbsource']) {

					$data['dbsource'] = $_POST['dbsource'];

					$tag .= 'dbsource= "'.$_POST['dbsource'].'" ';

				}

				if ($_POST['return']) {

					$tag .= 'return="'.$_POST['return'].'"';

				}

				$tag .= '}';

			} elseif ($type == 0) { //模型配置

				$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();

				$tag = '{pc:'.$module.' action="'.$action.'" ';

				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']);

							}

						}

						$tag .= $key.'="'.$$key.'" ';

						$data[$key] = $$key;

					}

				}

				if ($_POST['page']) {

					$tag .= 'page="'.$_POST['page'].'" ';

				}

				if ($num) {

					$tag .= ' num="'.$num.'" ';

				}

				if ($_POST['return']) {

					$tag .= ' return="'.$_POST['return'].'" ';

				}

				if ($cache) {

					$tag .= ' cache="'.$cache.'" ';

				}

				$tag .= '}';

			} else { //碎片

				$data = isset($_POST['block']) && trim($_POST['block']) ? trim($_POST['block']) : showmessage(L('block_name_not_empty'));

				$tag = '{pc:block pos="'.$data.'"}';

			}

			$tag .= "\n".'{loop $data $n $r}'."\n".'<li><a href="{$r[\'url\']}" title="{$r[\'title\']}">{$r[\'title\']}</a></li>'."\n".'{/loop}'."\n".'{/pc}';

			$tag = new_addslashes($tag);

			$data = is_array($data) ? array2string($data) : $data;

			$this->db->update(array('siteid'=>$siteid, 'tag'=>$tag, 'name'=>$name, 'type'=>$type, 'module'=>$module, 'action'=>$action, 'data'=>$data, 'page'=>$_POST['page'], 'return'=>$_POST['return'], 'cache'=>$cache, 'num'=>$num), array('id'=>$id));

			showmessage('', '', '', 'edit');

		} 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']) : $edit_data['type'];

			$siteid = $this->get_siteid();

			$dbsource_data = $dbsource = array();

			$dbsource[] = L('please_select');

			$dbsource_data = $this->dbsource->select(array('siteid'=>$siteid), 'name');

			foreach ($dbsource_data as $dbs) {

				$dbsource[$dbs['name']] = $dbs['name'];

			}

			$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 || $edit_data['type'] == 1) $form_data = string2array($edit_data['data']);

			if ($module) $html = pc_tag_class($module);

			pc_base::load_app_func('global','template');

			include $this->admin_tpl('tag_edit');

		}

	}

	

	/**

	 * 标签向导列表

	 */

	public function lists() {

		$page = isset($_POST['page']) && intval($_POST['page']) ? intval($_POST['page']) : 1;

		$list = $this->db->listinfo('','id desc', $page, 20);

		$pages = $this->db->pages;

		include $this->admin_tpl('tag_lists');

	}



	/**

	 * 删除标签向导

	 */

	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');

		}

	}

}

?>