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 : 7.2.33
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/formguide/
Upload File :
Current Directory [ Writeable ] Root Directory [ Writeable ]


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

//模型原型存储路径

define('MODEL_PATH',PC_PATH.'modules'.DIRECTORY_SEPARATOR.'formguide'.DIRECTORY_SEPARATOR.'fields'.DIRECTORY_SEPARATOR);

define('CACHE_MODEL_PATH',PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR.'caches_model'.DIRECTORY_SEPARATOR.'caches_data'.DIRECTORY_SEPARATOR);

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

pc_base::load_app_func('util');



class formguide_field extends admin {

	public function __construct() {

		parent::__construct();

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

		$this->model_db = pc_base::load_model('sitemodel_model');

		$this->siteid = $this->get_siteid();

	}

	

	public function init() {

		if (isset($_GET['formid']) && !empty($_GET['formid'])) {

			$formid = intval($_GET['formid']);

			$this->cache_field($formid);

			$datas = $this->db->select(array('modelid'=>$formid),'*',100,'listorder ASC');

			$r = $this->model_db->get_one(array('modelid'=>$formid));

		} else {

			$data = $datas = array();

			$data = getcache('form_public_field_array', 'model');

			if (is_array($data)) {

				foreach ($data as $_k => $_v) {

					$datas[$_k] = $_v['info'];

				}

			}

		}

		$show_header = $show_validator = $show_dialog = '';

		require MODEL_PATH.'fields.inc.php';

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

	}

	

	/**

	 * 添加字段,当没有formid时为添加公用字段

	 */

	public function add() {

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

			$field = $_POST['info']['field'];

			$minlength = $_POST['info']['minlength'] ? $_POST['info']['minlength'] : 0;

			$maxlength = $_POST['info']['maxlength'] ? $_POST['info']['maxlength'] : 0;

			$field_type = $_POST['info']['formtype'];

			//附加属性值

			$_POST['info']['setting'] = array2string($_POST['setting']);

			$_POST['info']['siteid'] = $this->siteid;

			$_POST['info']['unsetgroupids'] = isset($_POST['unsetgroupids']) ? implode(',',$_POST['unsetgroupids']) : '';

			$_POST['info']['unsetroleids'] = isset($_POST['unsetroleids']) ? implode(',',$_POST['unsetroleids']) : '';

			

			require MODEL_PATH.$field_type.DIRECTORY_SEPARATOR.'config.inc.php';

				

			if(isset($_POST['setting']['fieldtype'])) {

				$field_type = $_POST['setting']['fieldtype'];

			}

			if (isset($_POST['info']['modelid']) && !empty($_POST['info']['modelid'])) {

				$formid = intval($_POST['info']['modelid']);

				$forminfo = $this->model_db->get_one(array('modelid'=>$formid, 'siteid'=>$this->siteid), 'tablename');

				$tablename = $this->db->db_tablepre.'form_'.$forminfo['tablename'];

				require MODEL_PATH.'add.sql.php';

				

				$this->db->insert($_POST['info']);

				$this->cache_field($formid);

			} else {

				$unrunsql = 1;

				$tablename = 'formguide_table';

				require MODEL_PATH.'add.sql.php';

				

				$form_public_field_array = getcache('form_public_field_array', 'model');

				if (array_key_exists($_POST['info']['field'], $form_public_field_array)) {

					showmessage(L('fields').L('already_exist'), HTTP_REFERER);

				} else {

					$form_public_field_array[$_POST['info']['field']] = array('info'=>$_POST['info'], 'sql'=>$sql); 

					setcache('form_public_field_array', $form_public_field_array, 'model');	

				}

			}

			showmessage(L('add_success'),'?m=formguide&c=formguide_field&a=init&formid='.$formid);

		} else {

			$show_header = $show_validator = $show_dialog = '';

			pc_base::load_sys_class('form','',0);

			require MODEL_PATH.'fields.inc.php';

			$formid = intval($_GET['formid']);

			$f_datas = $this->db->select(array('modelid'=>$formid),'field,name',100,'listorder ASC');

			$m_r = $this->model_db->get_one(array('modelid'=>$formid));

			foreach($f_datas as $_k=>$_v) {

				$exists_field[] = $_v['field'];

			}



			$all_field = array();

			foreach($fields as $_k=>$_v) {

				$all_field[$_k] = $_v;

			}



			$grouplist = array();

			//会员组缓存

			$group_cache = getcache('grouplist','member');

			foreach($group_cache as $_key=>$_value) {

				$grouplist[$_key] = $_value['name'];

			}

			header("Cache-control: private");

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

		}

	}

	

	public function edit() {

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

			$field = $_POST['info']['field'];

			$minlength = $_POST['info']['minlength'] ? $_POST['info']['minlength'] : 0;

			$maxlength = $_POST['info']['maxlength'] ? $_POST['info']['maxlength'] : 0;

			$field_type = $_POST['info']['formtype'];

			

			//附加属性值

			$_POST['info']['setting'] = array2string($_POST['setting']);

			$_POST['info']['siteid'] = $this->siteid;

			$_POST['info']['unsetgroupids'] = isset($_POST['unsetgroupids']) ? implode(',',$_POST['unsetgroupids']) : '';

			$_POST['info']['unsetroleids'] = isset($_POST['unsetroleids']) ? implode(',',$_POST['unsetroleids']) : '';

			

			require MODEL_PATH.$field_type.DIRECTORY_SEPARATOR.'config.inc.php';

				

			if(isset($_POST['setting']['fieldtype'])) {

				$field_type = $_POST['setting']['fieldtype'];

			}

			$oldfield = $_POST['oldfield'];

			if (isset($_POST['info']['modelid']) && !empty($_POST['info']['modelid'])) {

				$formid = intval($_POST['info']['modelid']);

				$forminfo = $this->model_db->get_one(array('modelid'=>$formid, 'siteid'=>$this->siteid), 'tablename');

				$tablename = $this->db->db_tablepre.'form_'.$forminfo['tablename'];

				

				$fieldid = intval($_POST['fieldid']);



				require MODEL_PATH.'edit.sql.php';

				$this->db->update($_POST['info'],array('fieldid'=>$fieldid,'siteid'=>$this->siteid));

			} else {

				$unrunsql = 1;

				$tablename = 'formguide_table';

				require MODEL_PATH.'add.sql.php';

				

				$form_public_field_array = getcache('form_public_field_array', 'model');

				if ($oldfield) {

					if ($form_public_field_array[$oldfield]['info']['listorder']) {

						$_POST['info']['listorder'] = $form_public_field_array[$oldfield]['info']['listorder'];

					}

					if ($oldfield == $_POST['info']['field']) {

						$form_public_field_array[$_POST['info']['field']] = array('info'=>$_POST['info'], 'sql'=>$sql);

					} else {

						if (array_key_exists($_POST['info']['field'], $form_public_field_array)) {

							showmessage(L('fields').L('already_exist'), HTTP_REFERER);

						}

						$new_form_field = $form_public_field_array;

						$form_public_field_array = array();

						foreach ($new_form_field as $name => $v) {

							if ($name == $oldfield) {

								$form_public_field_array[$_POST['info']['field']] = array('info'=>$_POST['info'], 'sql'=>$sql);

							} else {

								$form_public_field_array[$name] = $v;

							}

						}

					}

				}

				setcache('form_public_field_array', $form_public_field_array, 'model');	

			}

			showmessage(L('update_success'),'?m=formguide&c=formguide_field&a=init&formid='.$formid);

		} else {

			if (isset($_GET['formid']) && !empty($_GET['formid'])) {

				pc_base::load_sys_class('form','',0);

				require MODEL_PATH.'fields.inc.php'; 

				$formid = intval($_GET['formid']);

				$fieldid = intval($_GET['fieldid']);

				

				$m_r = $this->model_db->get_one(array('modelid'=>$formid));

				$r = $this->db->get_one(array('fieldid'=>$fieldid));

				extract($r);

				require MODEL_PATH.$formtype.DIRECTORY_SEPARATOR.'config.inc.php';

			} else {

				if (!isset($_GET['field']) || empty($_GET['field'])) {

					showmessage(L('illegal_operation'), HTTP_REFERER);

				}

				

				$form_public_field_array = getcache('form_public_field_array', 'model');

				if (!array_key_exists($_GET['field'], $form_public_field_array)) {

					showmessage(L('illegal_operation'), HTTP_REFERER);

				}

				extract($form_public_field_array[$_GET['field']]);

				extract($info);

				$setting = stripslashes($setting);

				$show_header = $show_validator = $show_dialog = '';

				pc_base::load_sys_class('form','',0);

				require MODEL_PATH.'fields.inc.php';

			}

			$setting = string2array($setting);

			ob_start();

			include MODEL_PATH.$formtype.DIRECTORY_SEPARATOR.'field_edit_form.inc.php';

			$form_data = ob_get_contents();

			ob_end_clean();

			//会员组缓存

			$group_cache = getcache('grouplist','member');

			foreach($group_cache as $_key=>$_value) {

				$grouplist[$_key] = $_value['name'];

			}

			header("Cache-control: private");

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

		}

	}

	

	/**

	 * 禁用、开启字段

	 */

	public function disabled() {

		$fieldid = intval($_GET['fieldid']);

		$disabled = $_GET['disabled'] ? 0 : 1;

		$this->db->update(array('disabled'=>$disabled),array('fieldid'=>$fieldid,'siteid'=>$this->siteid));

		showmessage(L('operation_success'),HTTP_REFERER);

	}

	

	/**

	 * 删除字段

	 */

	public function delete() {

		if (isset($_GET['formid']) && !empty($_GET['formid']) && isset($_GET['fieldid']) && !empty($_GET['fieldid'])) {

			$formid = intval($_GET['formid']);

			$fieldid = intval($_GET['fieldid']);

			$r = $this->model_db->get_one(array('modelid'=>$formid), 'tablename');

			$rs = $this->db->get_one(array('fieldid'=>$fieldid, 'siteid'=>$this->siteid), 'field');

			$this->db->delete(array('fieldid'=>$fieldid, 'siteid'=>$this->siteid));

			if ($r) {

				$field = $rs['field'];

				$tablename = $this->db->db_tablepre.'form_'.$r['tablename'];

				require MODEL_PATH.'delete.sql.php';

			}

		} else {

			if (!isset($_GET['field']) || empty($_GET['field'])) showmessage(L('illegal_operation'), HTTP_REFERER);

			$field = $_GET['field'];

			$form_public_field_array = getcache('form_public_field_array', 'model');

			if (array_key_exists($field, $form_public_field_array)) {

				unset($form_public_field_array[$field]);

			}

			setcache('form_public_field_array', $form_public_field_array, 'model');

		}

		showmessage(L('update_success'), '?m=formguide&c=formguide_field&a=init&formid='.$formid);

	}

	

	/**

	 * 排序

	 */

	public function listorder() {

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

			if (isset($_GET['formid']) && !empty($_GET['formid'])) {

				foreach($_POST['listorders'] as $id => $listorder) {

					$this->db->update(array('listorder'=>$listorder),array('fieldid'=>$id));

				}

			} else {

				$form_public_field_array = getcache('form_public_field_array', 'model');

				asort($_POST['listorders']);

				$new_form_field = array();

				foreach ($_POST['listorders'] as $id => $listorder) {

					$form_public_field_array[$id]['info']['listorder'] = $listorder;

					$new_form_field[$id] = $form_public_field_array[$id];

				}

				unset($form_public_field_array);

				setcache('form_public_field_array', $new_form_field, 'model');

			}

			showmessage(L('operation_success'),HTTP_REFERER);

		} else {

			showmessage(L('operation_failure'));

		}

	}

	

	/**

	 * 检查字段是否存在

	 */

	public function public_checkfield() {

		$field = strtolower($_GET['field']);

		$oldfield = strtolower($_GET['oldfield']);

		if($field==$oldfield) exit('1');

		$modelid = intval($_GET['modelid']);

		

		if (in_array($field, array('dataid', 'userid', 'username', 'datetime', 'ip'))) {

			exit('0');	

		}

		

		if($modelid) {

			$forminfo = $this->model_db->get_one(array('modelid'=>$modelid), 'tablename');

			$this->db->table_name = $this->db->db_tablepre.'form_'.$forminfo['tablename'];

			$fields = $this->db->get_fields();

		} else {

			$fields = getcache('form_public_field_array', 'model');

		}

		if(is_array($fields) && array_key_exists($field,$fields)) {

			exit('0');

		} else {

			exit('1');

		}

	}

	

	/**

	 * 字段属性设置

	 */

	public function public_field_setting() {

		$fieldtype = $_GET['fieldtype'];

		require MODEL_PATH.$fieldtype.DIRECTORY_SEPARATOR.'config.inc.php';

		ob_start();

		include MODEL_PATH.$fieldtype.DIRECTORY_SEPARATOR.'field_add_form.inc.php';

		$data_setting = ob_get_contents();

		//$data_setting = iconv('gbk','utf-8',$data_setting);

		ob_end_clean();

		$settings = array('field_basic_table'=>$field_basic_table,'field_minlength'=>$field_minlength,'field_maxlength'=>$field_maxlength,'field_allow_search'=>$field_allow_search,'field_allow_fulltext'=>$field_allow_fulltext,'field_allow_isunique'=>$field_allow_isunique,'setting'=>$data_setting);

		echo json_encode($settings);

		return true;

	}

	

	/**

	 * 更新指定表单向导的字段缓存

	 * 

	 * @param $formid 表单向导id

	 * @param $disabled 字段状态

	 */

	public function cache_field($formid = 0, $disabled = 0) {

		$field_array = array();

		$fields = $this->db->select(array('modelid'=>$formid,'disabled'=>$disabled),'*',100,'listorder ASC');

		foreach($fields as $_value) {

			$setting = string2array($_value['setting']);

			$_value = array_merge($_value,$setting);

			$field_array[$_value['field']] = $_value;

		}

		setcache('formguide_field_'.$formid,$field_array,'model');

		return true;

	}

}

?>