Example #1
0
function king_edt()
{
    global $king;
    $king->access('portal_content_edt');
    //初始化
    $listid = kc_get('listid', 2, 1);
    //$info['listid'];
    $info = $king->portal->infoList($listid);
    $model = $king->portal->infoModel($info['modelid']);
    //	kc_error('<pre>'.print_r($array_field,1));
    $kid = kc_get('kid', 2);
    $kid1 = kc_get('kid1', 2);
    $isadmin = $kid1 ? 'isadmin2' : 'isadmin1';
    //次页:首页
    $array_field = array_keys($model['field'][$isadmin]);
    $sql_field = implode(',', $array_field);
    //[tablemodel]字段调用
    //	$listid=kc_get('listid',2);
    if ($GLOBALS['ismethod'] || $kid == '') {
        //POST过程或新添加的过程
        $data = $_POST;
        if (!$GLOBALS['ismethod']) {
            //初始化新添加的数据
            $data['kpath'] = $king->portal->depathMode($info);
            $data['nshow'] = 1;
            $array_field_default = $model['field']['default'];
            foreach ($array_field_default as $key => $val) {
                $data[$key] = $val;
            }
        }
    } else {
        //编辑数据,从数据库读出
        if (!($data = $king->db->getRows_one('select ' . $sql_field . ' from %s__' . $model['modeltable'] . ' where kid=' . $kid . ' limit 1;'))) {
            kc_error($king->lang->get('system/error/param') . '<br/>select ' . $sql_field . ' from %s__' . $model['modeltable'] . ' where kid=' . $kid . ' limit 1;' . '<br/>File:' . basename(__FILE__) . ';Line:' . __LINE__);
        }
    }
    $data = kc_data($array_field, $data);
    $data['kid'] = $kid;
    if (!($res = $king->db->getRows("select * from %s_field where modelid={$info['modelid']} and {$isadmin}=1 and kid1=0 order by norder,kid;"))) {
        //全部调用
        $res = array();
    }
    $s = $king->openForm('manage.content.php?action=edt');
    $s .= kc_htm_hidden(array('listid' => $listid, 'kid' => $kid, 'kid1' => $kid1));
    //这个隐藏域不要放在下面
    //kc_error("select * from %s_field where modelid={$info['modelid']} and {$isshow}=1 and kid1=0 order by norder,kid;");
    //kc_error('<pre>'.print_r($res,1));
    foreach ($res as $rs) {
        $s .= $king->portal->formdecode($rs, $data, $info, 1, $kid1 ? 2 : 1);
    }
    $s .= $king->htmForm($king->lang->get('portal/common/exp'), kc_htm_checkbox('pag', array(1 => $king->lang->get('portal/goto/addpag')), kc_post('pag')));
    $s .= $king->closeForm('save');
    //数据处理
    if ($GLOBALS['ischeck']) {
        $_array = array();
        //设置为空数组
        //收集字段的值
        foreach ($array_field as $val) {
            if (in_array($val, array('nshow', 'nhead', 'ncommend', 'nup', 'nfocus', 'nhot')) || array_key_exists($val, $model['field']['offon'])) {
                //增加判断offon
                $_array[$val] = $data[$val] ? 1 : 0;
            } else {
                if (is_array($data[$val])) {
                    $_array[$val] = implode(',', $data[$val]);
                } else {
                    $_array[$val] = $data[$val];
                }
                //抓图和过滤链接
                if ($val == 'kcontent') {
                    if (kc_post('isgrab')) {
                        //抓图
                        $_array[$val] = kc_grab($_array[$val]);
                    }
                    if (kc_post('isremovea')) {
                        //过滤链接
                        $_array[$val] = preg_replace('/<a ([^>]*)>|<\\/a>/is', '', $_array[$val]);
                    }
                    if (kc_post('isremovetable')) {
                        //过滤表格
                        $_array[$val] = preg_replace('/<(table|tbody|thead|tr|td|th|caption) ?([^>]*)>|<\\/(table|tbody|thead|tr|td|th|caption)>/is', '', $_array[$val]);
                    }
                    if (kc_post('isremovestyle')) {
                        //过滤样式
                        $_array[$val] = preg_replace('/(<([^>]*))( style=)(["\'])(.*?)\\4(([^>]*)\\/?>)/is', '$1 $6', $_array[$val]);
                    }
                    if (kc_post('isremoveid')) {
                        //过滤样式
                        $_array[$val] = preg_replace('/(<([^>]*))( id=)(["\'])(.*?)\\4(([^>]*)\\/?>)/is', '$1 $6', $_array[$val]);
                    }
                    if (kc_post('isremoveclass')) {
                        //过滤样式
                        $_array[$val] = preg_replace('/(<([^>]*))( class=)(["\'])(.*?)\\4(([^>]*)\\/?>)/is', '$1 $6', $_array[$val]);
                    }
                }
            }
        }
        if (in_array('kimage', $_array) && in_array('kcontent', $_array)) {
            //如果有选择第一个图作为缩略图 并 kimage在列表里
            if (kc_post('isoneimage')) {
                //抓第一张图为缩略图
                if ($oneimage = preg_match('/(<img([^>]*))( src=)(["\'])(.*?)\\4(([^>]*)\\/?>)/is', $_array['kcontent'], $oneimage_array)) {
                    $smartimg = $oneimage_array[5];
                    if (is_file(ROOT . substr($smartimg, strlen($king->config('inst'))))) {
                        //判断是否为本地文件
                        $_array['kimage'] = substr($smartimg, strlen($king->config('inst')));
                    } else {
                        //若是远程文件,则抓取
                        if ($path = kc_grab_get($smartimg)) {
                            //抓取成功
                            if ($path != $smartimg) {
                                //值不一样,说明抓取成功
                                $_array['kimage'] = $path;
                            }
                        }
                    }
                }
            }
        }
        //listid & kid1
        $_array['listid'] = $data['listid'];
        $_array['kid1'] = $data['kid1'] ? $data['kid1'] : 0;
        /**
        		检查kpath是否在键名列表里,如果有则判断是否为空值
        		如果没有,则补充
        */
        if (empty($_array['kpath'])) {
            $_array['kpath'] = $king->portal->depathMode($info);
        }
        /**
        		检查kkeywords,如果没有,则自动补充其值
        		如果有,则更新列表
        */
        $_array['kkeywords'] = !empty($data['kkeywords']) ? $king->portal->getKey($_array['ktitle'], $_array['kkeywords']) : $king->portal->getKey($_array['ktitle']);
        /**
        	关键字替换功能的实现概论
        	从$_array['kkeywords']中获得关键字列表,从预置的[关键字链接页/待做的表]中查找相关关键字
        	kname 关键字
        	kkeywords 关键字相关关键字
        	kpath 关键字链接网址
        	preg_replace('',$rs['kpath'],$_array['kcontent'],1);
        */
        /**
        		检查ktag,如果没有,则自动补充其值
        		如果有,则更新列表
        */
        $_array['ktag'] = !empty($data['ktag']) ? $king->portal->getTag($_array['ktitle'], $_array['ktag']) : $king->portal->gettag($_array['ktitle']);
        /**
        		如果description值为空,则从content中获取
        */
        if (empty($data['kdescription']) && !empty($data['kcontent'])) {
            $kdescription = strip_tags($data['kcontent']);
            $kdescription = preg_replace('/(\\&[a-z]{1,6};)|\\s/', '', $kdescription);
            $_array['kdescription'] = kc_substr($kdescription, 0, 200);
        }
        //副标题长度
        $_array['nsublength'] = isset($data['ksubtitle']) ? kc_strlen($data['ksubtitle']) : 0;
        //更新时间
        $_array['nlastdate'] = time();
        //如果有kid1值,则对kid1对应的nlastdate进行更新
        if ($kid1) {
            $king->db->update('%s__' . $model['modeltable'], array('nlastdate' => time()), 'kid=' . $kid1);
        }
        //图片框写远程路径的时候,抓图
        foreach ($model['field']['image'] as $key => $val) {
            if (isset($_array[$key])) {
                //当有image类型的字段的时候,检查一下其值
                if (kc_validate($_array[$key], 6)) {
                    //若为网址类型的话,自动抓图到本地
                    $_array[$key] = kc_grab_get($_array[$key]);
                }
            }
        }
        //添加&更新数据
        if ($kid) {
            //update
            $king->db->update('%s__' . $model['modeltable'], $_array, 'kid=' . $kid);
            $_nlog = 7;
        } else {
            $_array['ndate'] = time();
            $_array['adminid'] = $king->admin['adminid'];
            $_array['userid'] = -1;
            $_array['norder'] = $king->db->neworder('%s__' . $model['modeltable']);
            //不同的浏览器不同的分页标签,前台不支持
            switch (strtolower($king->admin['admineditor'])) {
                case 'fckeditor':
                    $pagebreak = '<div style="page-break-after: always"><span style="display: none">&nbsp;</span></div>';
                    break;
                case 'tiny_mce':
                    $pagebreak = '<!-- pagebreak -->';
                    break;
                case 'edit_area':
                    $pagebreak = '<!-- pagebreak -->';
                    break;
            }
            if (isset($pagebreak) && isset($_array['kcontent'])) {
                $array = explode($pagebreak, $_array['kcontent']);
                foreach ($array as $key => $val) {
                    $_array['kcontent'] = $val;
                    $_array['norder']++;
                    if ($key === 0) {
                        //第一个
                        $kid = $king->db->insert('%s__' . $model['modeltable'], $_array);
                    } else {
                        $_array['kpath'] = $king->portal->depathMode($info);
                        $_array['kid1'] = $data['kid1'] ? $data['kid1'] : $kid;
                        $king->db->insert('%s__' . $model['modeltable'], $_array);
                    }
                }
            } else {
                $kid = $king->db->insert('%s__' . $model['modeltable'], $_array);
            }
            $_nlog = 5;
            if ($kid == 0) {
                kc_error($king->lang->get('system/error/insert') . kc_clew(__FILE__, __LINE__, nl2br(print_r($_array, 1))));
            }
        }
        //更新列表信息
        $king->portal->lastUpdated($listid, 'list');
        //删除缓存重建缓存
        $king->cache->del('portal/list/' . $listid);
        kc_f_delete($king->config('xmlpath', 'portal') . '/portal/' . $info['modelid'] . '/' . wordwrap($kid, 1, '/', 1) . '.xml');
        $id = $king->portal->infoID($listid, $kid);
        if ($kid1) {
            kc_f_delete($king->config('xmlpath', 'portal') . '/portal/' . $info['modelid'] . '/' . wordwrap($kid1, 1, '/', 1) . '.xml');
            $id = $king->portal->infoID($listid, $kid1);
        }
        //生成操作
        if ($info['npage'] == 0) {
            if ($info['npagenumber'] == 1) {
                $king->portal->createPage($listid, $kid1 ? $kid1 : $kid);
                //$listid,$kid,$pid=1,$is=null
                $subkid = $id['subkid'];
                if ($subkid) {
                    $subid = explode(',', $subkid);
                    foreach ($subid as $sid) {
                        $king->portal->createPage($listid, $sid);
                    }
                }
            } else {
                $pcount = ceil($id['ncount'] / $info['npagenumber']);
                for ($i = 1; $i <= $pcount; $i++) {
                    $king->portal->createPage($listid, $kid1 ? $kid1 : $kid, $i);
                }
            }
        }
        //写log
        $king->log($_nlog, $model['modeltable'] . ':' . $data['ktitle']);
        //		if(kc_post('pag')[0]==1){
        if (kc_post('pag') == 1) {
            $s = kc_goto($king->lang->get('system/goto/saveok'), 'manage.content.php?action=edtpag&listid=' . $data['listid'] . '&kid1=' . ($kid1 ? $kid1 : $kid));
        } else {
            if ($kid1) {
                kc_goto($king->lang->get('system/goto/is'), 'manage.content.php?action=edtpag&listid=' . $data['listid'] . '&kid1=' . $kid1, 'manage.content.php?action=pag&listid=' . $data['listid'] . '&kid1=' . $kid1);
            } else {
                kc_goto($king->lang->get('system/goto/is'), 'manage.content.php?action=edt&listid=' . $data['listid'], 'manage.content.php?listid=' . $data['listid']);
            }
        }
    }
    list($left, $right) = king_inc_list();
    $king->skin->output($info['ktitle'], $left, $right, $s);
}
Example #2
0
/**
	表单验证
	@param array $_array	二维数组,大体结构如下:
		$_array=array(
			array($formname , $type   , $tip   ,  exp),
			array(表单名称,   验证类型  错误提示  扩展
			array(...),
			...
		)
		@param string     $formname    表单名称
		@param int|string $type        表单数据类型
			0 :
					扩展部分为空时,不能为空
					扩展部分不为空时,限定字符串长度 [,最小长度,最大长度] 如: array('adminname',0,'长度不正确' [ ,2,12] )
					举例:
						array1('title',0,null,1,100)//输出默认错误提示,字符串长度为1-100
						array1('title',0,1,100)//同上,简化了null
						array1('title',0)//不能为空
			1 : 必须由 字母 和 数字 组成
			2 : 必须为 整数
			3 : 数字,逗号
			4 : 数字、字母和下划线
			5 : 邮箱
			6 : 网址
			7 : 图片网址
			8 : 日期+时间 验证
			9 : 日期 验证
			12: True/False判断,True的时候输出错误提示 [,True或False]
			13: 颜色值
			14: 不能包含特殊规定的符号或单词,数组类型
			15: 不能包含特殊符号['\:*?<>|;,],并开头不能用斜线/,用来判断文件路径及类型
			16: 必须为数字,并且数字有取值范围 [,最小值,最大值]
			17: 重复密码验证 [,表单名称]
			18: 保留对象,即不能等于,数组类型
			19: 必须包含的值
			20: 必须为指定范围的值,即设定取值范围,和18相反
			21: html提交框的安全验证
			22: 数字,有符号
			23: 必须为指定范围的值,提交值之间用逗号分开,用来验证多选项目的值
			24: 保留用户名
			33: 带符号的数字组合,逗号分开
			default: 自定义正则验证,如:array(表单名称, 正则表达式,错误提示)
		@param string $tip         错误提示,不填写则输出系统预置的提示
	@return string
*/
function kc_check($_array)
{
    global $king;
    $post = '';
    $_errlang = '<span class="k_error">%s</span>';
    if (!$GLOBALS['ismethod']) {
        $GLOBALS['ischeck'] = False;
        //如果在这里返回javascript来进行数据验证,结果会更加完美。
        return '';
    }
    for ($i = 0; $i < count($_array); $i++) {
        $post_str = kc_post($_array[$i][0]);
        //获得POST对应值
        $post = is_array($post_str) ? implode(',', $post_str) : $post_str;
        //判断提交值是否为数组类型
        if (empty($post) && !in_array($_array[$i][1], array(0, 12))) {
            break;
        }
        //提交值为空 并 验证类型 不等于长度验证 或 是否验证 的时候,无需验证
        switch ($_array[$i][1]) {
            case 0:
                if (count($_array[$i]) == 3 || count($_array[$i]) == 2) {
                    $_is = !(kc_strlen($post) > 0);
                    $_array[$i][1] = '00';
                } elseif (count($_array[$i]) == 4) {
                    $_is = kc_strlen($post) < $_array[$i][2] || kc_strlen($post) > $_array[$i][3];
                    $_array[$i][2] = null;
                } elseif (count($_array[$i]) == 5) {
                    $_is = kc_strlen($post) < $_array[$i][3] || kc_strlen($post) > $_array[$i][4];
                } else {
                    $_is = True;
                }
                break;
            case 1:
                $_is = !kc_validate($post, 1);
                break;
            case 2:
                $_is = !kc_validate($post, 2);
                break;
            case 3:
                $_is = !kc_validate($post, 3);
                break;
            case 4:
                $_is = !kc_validate($post, 4);
                break;
            case 5:
                $_is = !kc_validate($post, 5);
                break;
            case 6:
                $_is = !kc_validate($post, 6);
                break;
            case 7:
                $filetype = $king->config('upimg');
                $_is = !in_array(kc_f_ext($post), explode('|', $filetype));
                break;
            case 8:
                $_is = !kc_validate($post, 8);
                break;
            case 9:
                $_is = !kc_validate($post, 9);
                break;
            case 12:
                $_is = $_array[$i][3];
                break;
            case 13:
                $_is = !kc_validate($post, 13);
                break;
            case 14:
                //			if($_array[$i][3]){//首先,要保证这个数组成立??空数组?
                $array = $_array[$i][3];
                foreach ($array as $val) {
                    if (kc_validate(stripos($post, $val), 2)) {
                        $_is = True;
                        break;
                    }
                }
                //			}
                break;
            case 15:
                $_arr_str1 = array('/', '.');
                $s2 = '*?<>|;,\'!~$#@^(){}=+%';
                if (count($_array[$i]) == 4) {
                    $filetype = $_array[$i][3];
                } else {
                    $filetype = $king->config('templateext');
                }
                $_is = in_array(substr($post, 0, 1), $_arr_str1);
                //如果$_is=True 或 最后一个为/,则没有必要继续验证
                if (!$_is && substr($post, -1, 1) != '/' && isset($post[0])) {
                    $_is = !in_array(kc_f_ext($post), explode('|', $filetype));
                }
                //路径中不能包含.php
                if (!$_is) {
                    $_is = kc_validate(stripos($post, '.php'), 2);
                }
                //如果$_is=True,则没有必要继续验证
                if (!$_is) {
                    for ($j = 0; $j < strlen($s2); $j++) {
                        if (false !== strpos($post, $s2[$j])) {
                            $_is = True;
                            break;
                        }
                    }
                }
                break;
            case 16:
                $_is = $post < $_array[$i][3] || $post > $_array[$i][4];
                break;
            case 17:
                $_is = !($post == stripslashes($_POST[$_array[$i][3]]));
                break;
            case 18:
                $_is = in_array($post, $_array[$i][3]);
                break;
            case 19:
                $_is = !kc_validate(strpos($post, $_array[$i][3]), 2);
                break;
            case 20:
                $_is = !in_array($post, $_array[$i][3]);
                break;
            case 21:
                $_is = preg_match("/(<(\\/?)(script|base|iframe|style|html|body|title|link|meta|\\?|\\%)([^>]*?)>|(<[^>]*)\\son[a-zA-Z]+\\s*=([^>]*>))/isU", $post);
                break;
            case 22:
                $_is = !kc_validate($post, 22);
                break;
            case 23:
                //			$post_str
                $array_post = is_array($post_str) ? $post_str : explode(',', $post);
                //		$_is=False;
                foreach ($array_post as $val) {
                    if (!in_array($val, $_array[$i][3])) {
                        $_is = True;
                        break;
                    }
                }
            case 33:
                $_is = !kc_validate($post, 33);
                break;
                break;
            default:
                $_is = !kc_validate($post, $_array[$i][1]);
                $_array[$i][1] = '999';
        }
        if ($_is) {
            //上面得到的$_is为True的时候,提示错误
            $GLOBALS['ischeck'] = False;
            $GLOBALS['check_num']++;
            $_tip = isset($_array[$i][2]) ? $_array[$i][2] : $king->lang->get('system/check/e' . $_array[$i][1]);
            return sprintf($_errlang, $_tip);
        }
    }
}
Example #3
0
function king_edt()
{
    global $king;
    $king->load('user');
    //初始化zf
    $listid = kc_get('listid', 2, 1);
    //$info['listid'];
    $info = $king->portal->infoList($listid);
    $model = $king->portal->infoModel($info['modelid']);
    $kid = kc_get('kid', 2);
    $kid1 = kc_get('kid1', 2);
    $isuser = $kid1 ? 'isuser2' : 'isuser1';
    //次页:首页
    $array_field = array_keys($model['field'][$isuser]);
    $sql_field = implode(',', $array_field);
    //[tablemodel]字段调用
    //读取管理员列表
    $editors = $king->portal->getListEditor($listid);
    if (!is_array($editors)) {
        $editors = array();
    }
    //用户权限及登录验证
    if ($info['gidpublish'] == -1) {
        $user = array('userid' => 0, 'username' => '[' . $king->lang->get('user/name/guest') . ']');
    } else {
        $user = $king->user->access();
        if (!in_array($king->user->userid, $editors) && $info['gidpublish']) {
            //非栏目编辑 并 限制组会员 ;栏目编辑员则跳过此验证
            $king->user->access($info['gidpublish']);
        }
    }
    //发帖验证,检查是否为不允许发布
    //0不允许发布|1直接发布|2验证后发布
    if (!in_array($user['userid'], $editors)) {
        //栏目编辑员无需验证
        if ((int) $info['ispublish' . ($kid1 ? 2 : 1)] === 0) {
            $king->portal->error($king->lang->get('portal/title/stop'), $king->lang->get('portal/error/stop'));
        }
    }
    //当kid有值的时候(编辑),进行所有权验证
    if ($kid) {
        $user = empty($user) ? $king->user->access() : $user;
        //如果$user为null则进行登录验证,目的是要获得userid
        $id = $king->portal->infoID($listid, $kid);
        if (in_array($king->user->userid, $editors) || (int) $id['userid'] === (int) $king->user->userid) {
            if (!in_array($king->user->userid, $editors)) {
                //如果不是栏目管理员,则进行有效期验证
                if (time() - $model['nlocktime'] * 3600 > $id['ndate'] && (int) $model['nlocktime'] !== 0) {
                    //如果超过可允许编辑时间期限 并 可编辑时间不能为0,则提示错误
                    $king->portal->error($king->lang->get('portal/title/stop'), $king->lang->get('portal/error/timeout'));
                }
            }
        } else {
            $king->portal->error($king->lang->get('portal/title/stop'), $king->lang->get('portal/error/noaccess'));
        }
    }
    $fields = explode(',', $sql_field);
    if ($GLOBALS['ismethod'] || $kid == '') {
        //POST过程或新添加的过程
        $data = $_POST;
        if (!$GLOBALS['ismethod']) {
            //初始化新添加的数据
            $data['kpath'] = $king->portal->depathMode($info);
            $data['nshow'] = 1;
            $array_field_default = $model['field']['default'];
            foreach ($array_field_default as $key => $val) {
                $data[$key] = $val;
            }
            //从URL中获取初始值
            foreach ($fields as $val) {
                if (isset($_GET[$val])) {
                    $data[$val] = $_GET[$val];
                }
            }
        }
    } else {
        //编辑数据,从数据库读出
        //判断是否为栏目编辑 或 所有人
        if (!($data = $king->db->getRows_one('select ' . $sql_field . ' from %s__' . $model['modeltable'] . ' where kid=' . $kid . ' limit 1;'))) {
            kc_error($king->lang->get('system/error/param') . '<br/>select ' . $sql_field . ' from %s__' . $model['modeltable'] . ' where kid=' . $kid . ' limit 1;' . '<br/>File:' . basename(__FILE__) . ';Line:' . __LINE__);
        }
    }
    $data = kc_data($fields, $data);
    $data['kid'] = $kid;
    if (!($res = $king->db->getRows("select * from %s_field where modelid={$info['modelid']} and {$isuser}=1 and kid1=0 order by norder,kid;"))) {
        //全部调用
        $res = array();
    }
    $s = $king->openForm('index.php?action=edt');
    $s .= kc_htm_hidden(array('listid' => $listid, 'kid' => $kid, 'kid1' => $kid1));
    //这个隐藏域不要放在下面
    foreach ($res as $rs) {
        $s .= $king->portal->formdecode($rs, $data, $info, 0, $kid1 ? 2 : 1);
    }
    $s .= $king->closeForm($king->lang->get('system/common/publish'));
    //数据处理
    if ($GLOBALS['ischeck']) {
        $_array = array();
        //设置为空数组
        //收集字段的值
        foreach ($array_field as $val) {
            if (substr($val, 0, 1) == 'n') {
                $_array[$val] = $data[$val] ? 1 : 0;
            } else {
                if (is_array($data[$val])) {
                    $_array[$val] = implode(',', $data[$val]);
                } else {
                    $_array[$val] = $data[$val];
                }
            }
        }
        //listid & kid1
        $_array['listid'] = $data['listid'];
        $_array['kid1'] = $data['kid1'] ? $data['kid1'] : 0;
        /**
        		检查kpath是否在键名列表里,如果有则判断是否为空值
        		如果没有,则补充
        */
        if (empty($_array['kpath'])) {
            $_array['kpath'] = $king->portal->depathMode($info);
        }
        /**
        		检查kkeywords,如果没有,则自动补充其值
        		如果有,则更新列表
        */
        $_array['kkeywords'] = !empty($data['kkeywords']) ? $king->portal->getKey($_array['ktitle'], $_array['kkeywords']) : $king->portal->getKey($_array['ktitle']);
        /**
        		检查ktag,如果没有,则自动补充其值
        		如果有,则更新列表
        */
        $_array['ktag'] = !empty($data['ktag']) ? $king->portal->getTag($_array['ktitle'], $_array['ktag']) : $king->portal->gettag($_array['ktitle']);
        /**
        		如果description值为空,则从content中获取
        */
        if (empty($data['kdescription']) && !empty($data['kcontent'])) {
            $kdescription = strip_tags($data['kcontent']);
            $kdescription = preg_replace('/\\&[a-z]{1,6};/', '', $kdescription);
            $_array['kdescription'] = kc_substr($kdescription, 0, 200);
        }
        //副标题长度
        $_array['nsublength'] = isset($data['ksubtitle']) ? kc_strlen($data['ksubtitle']) : 0;
        //更新时间
        $_array['nlastdate'] = time();
        //如果有kid1值,则对kid1对应的nlastdate进行更新
        if ($kid1) {
            $king->db->update('%s__' . $model['modeltable'], array('nlastdate' => time()), 'kid=' . $kid1 . ' limit 1');
        }
        //添加&更新数据
        if ($kid) {
            //update
            $king->db->update('%s__' . $model['modeltable'], $_array, 'kid=' . $kid);
            $_nlog = 7;
        } else {
            $_array['ndate'] = time();
            $_array['norder'] = $king->db->neworder('%s__' . $model['modeltable']);
            $_array['userid'] = $user['userid'];
            $_array['nshow'] = $info['ispublish' . ($kid1 ? 2 : 1)];
            $kid = $king->db->insert('%s__' . $model['modeltable'], $_array);
            $_nlog = 5;
            if ($kid == 0) {
                kc_error($king->lang->get('system/error/insert') . kc_clew(__FILE__, __LINE__, nl2br(print_r($_array, 1))));
            }
        }
        //更新列表信息
        $king->portal->lastUpdated($listid, 'list');
        //删除缓存重建缓存
        $king->cache->del('portal/list/' . $listid);
        kc_f_delete($king->config('xmlpath', 'portal') . '/portal/' . $info['modelid'] . '/' . wordwrap($kid, 1, '/', 1) . '.xml');
        $id = $king->portal->infoID($listid, $kid);
        if ($kid1) {
            kc_f_delete($king->config('xmlpath', 'portal') . '/portal/' . $info['modelid'] . '/' . wordwrap($kid1, 1, '/', 1) . '.xml');
            $id = $king->portal->infoID($listid, $kid1);
        }
        //生成操作
        if ($info['npage'] == 0) {
            if ($info['npagenumber'] == 1) {
                $king->portal->createPage($listid, $kid1 ? $kid1 : $kid);
                //$listid,$kid,$pid=1,$is=null
                $subkid = $id['subkid'];
                if (isset($subkid)) {
                    $subid = explode(',', $subkid);
                    foreach ($subid as $sid) {
                        $king->portal->createPage($listid, $sid);
                    }
                }
            } else {
                $pcount = ceil($id['ncount'] / $info['npagenumber']);
                for ($i = 1; $i <= $pcount; $i++) {
                    $king->portal->createPage($listid, $kid1 ? $kid1 : $kid, $i);
                }
            }
        }
        //跳转,当留言反馈类型的时候,这个跳转需要改动
        echo "<script type=\"text/javascript\">parent.location='" . $king->portal->pathPage($info, $id['kid'], $id['kpath']) . "'</script>";
    }
    $tmp = new KC_Template_class($model['ktemplatepublish']);
    $tmp->assign('inside', $s);
    $tmp->assign('listid', $listid);
    $tmp->assign('title', $info['klistname']);
    $tmp->assign('type', 'edit');
    echo $tmp->output();
    //	list($left,$right)=king_inc_list();
    //	$king->skin->output($king->lang->get('portal/title/content'.($kid?'edt':'add')),$left,$right,$s);
}