/** * 用户登录及权限验证 * @param int $gid 用户组 * @return array */ public function access($gid = 0) { global $king; if (!($user = $this->checkLogin())) { //若未登录状态,则跳到登陆页 if ($GLOBALS['action'] == 'ajax') { //ajax页面里不做跳转 $js = "\$.kc_ajax('{URL:\\'" . $king->config('inst') . "user/index.php\\',CMD:\\'login\\',IS:1,METHOD:\\'GET\\'}')"; kc_ajax('', '', '', $js); } else { header("Location: " . $king->config('inst') . "user/login.php"); } } if ($gid !== 0) { //如果gid不等于0的话,则比较gid if ($gid != $user['gid']) { if ($GLOBALS['action'] == 'ajax') { kc_error($king->lang->get('user/error/gaccess')); } else { $tmp = new KC_Template_class($king->config('templatelogin', 'user'), $king->config('templatepath') . '/inside/system/error.htm'); $tmp->assign('main', $king->lang->get('user/error/gaccess')); $tmp->assign('title', $king->lang->get('system/common/error')); exit($tmp->output()); } } } //权限验证 return $user; }
function king_ajax_login() { /** 登录页面增加一个$act变量,做登录判断用。 */ global $king; $adminname = kc_post('adminname'); $adminpass = kc_post('adminpass'); $s = '<div class="k_login"><div><label>' . $king->lang->get('system/login/name') . ':</label><p><input type="text" class="k_in w150" id="adminname" name="adminname" value="' . htmlspecialchars($adminname) . '" maxlength="12" />'; $s .= kc_check(array(array('adminname', 0, $king->lang->get('system/check/e0'), 2, 12), array('adminname', 1, $king->lang->get('system/check/e1')))); $s .= '</p></div>'; $s .= '<div><label>' . $king->lang->get('system/login/pass') . ':</label><p><input type="password" class="k_in w150" id="adminpass" name="adminpass" maxlength="30" />'; $s .= kc_check(array(array('adminpass', 0, $king->lang->get('system/check/e0'), 6, 30))); if ($GLOBALS['ischeck']) { $s .= kc_check(array(array('adminpass', 12, $king->lang->get('system/login/check'), !king_ajax_login_check($adminname, $adminpass)))); } $s .= '</p></div>'; //expire $array_select = array(0 => $king->lang->get('system/time/cookie'), 86400 => $king->lang->get('system/time/oneday'), 2592000 => $king->lang->get('system/time/jan'), 15768000 => $king->lang->get('system/time/halfyear'), 315360000 => $king->lang->get('system/time/forever')); $s .= '<div><label>' . $king->lang->get('portal/user/expire') . ':</label><p>' . kc_htm_select('expire', $array_select, 86400) . '</p></div></div>'; $but = kc_htm_a($king->lang->get('system/common/login'), "{CMD:'login',IS:1}"); $but .= '<a href="javascript:;" title="' . $king->lang->get('system/common/close') . '" class="k_close">' . $king->lang->get('system/common/close') . '</a>'; // $s.='</p>'; if ($GLOBALS['ischeck']) { $_sql = "select adminlogin from %a_admin where adminname='" . $king->db->escape($adminname) . "';"; if ($_res = $king->db->getRows_one($_sql)) { $_location = $_res['adminlogin']; } kc_ajax('', '', 0, "parent.location='{$_location}'"); } else { kc_ajax($king->lang->get('system/login/title'), $s, $but, '', 420, 220); kc_error($but); } }
function king_view() { global $king; $king->access('portal_comment'); $cid = kc_get('cid', 2); $sql = "cid,kcontent,username,nip,ndate"; if (empty($cid)) { kc_error($king->lang->get('system/error/param')); } else { if (!($rs = $king->db->getRows_one("select {$sql} from %s_comment where cid={$cid}"))) { kc_error($king->lang->get('system/error/notrecord')); } foreach ($rs as &$r) { $r = htmlspecialchars($r); } $rs['kcontent'] = nl2br($rs['kcontent']); $s = $king->openForm($king->lang->get('portal/title/comment'), '', 'comment_view'); $s .= $king->htmForm($king->lang->get('portal/label/author'), $rs['username']); $s .= $king->htmForm($king->lang->get('portal/label/content'), $rs['kcontent']); $s .= $king->htmForm($king->lang->get('portal/label/date'), kc_formatdate($rs['ndate'])); $but = '<input type="button" onclick="javascript:history.back(-1)" value="' . $king->lang->get('system/common/back') . '[B]" class="big" accesskey="b"/>'; $s .= $king->htmForm(null, $but); $s .= $king->closeForm('none'); } list($left, $right) = inc_menu(); $king->skin->output($king->lang->get('portal/title/comment'), $left, $right, $s); }
function king_ajax_delete() { global $king; $king->access('portal_model_delete'); $_list = kc_getlist(); $_array = explode(',', $_list); if (!($_res = $king->db->getRows("select modelid,modeltable,modelname from %s_model where modelid in ({$_list});"))) { $_res = array(); } foreach ($_res as $rs) { $modeltable = $rs['modeltable']; $modelid = $rs['modelid']; //判断要删除的模型是否已经被应用 $count = $king->db->getRows_one("select count(*) from %s_list where modelid={$modelid}"); if ($count[0] > 0) { $king->cache->del('portal/model/model' . $modelid); $king->cache->del('portal/model'); kc_error($king->lang->get('portal/error/istmodel')); } $king->db->query("DROP TABLE %s__{$modeltable};", 1); $king->db->query("delete from %s_model where modelid={$modelid};"); $king->db->query("delete from %s_field where modelid={$modelid};"); $king->cache->del('portal/model/model' . $modelid); //写log $king->log(6, 'Model:' . $rs['modelname']); } $king->cache->del('portal/model'); kc_ajax('OK', "<p class=\"k_ok\">" . $king->lang->get('system/ok/delete') . "</p>", 1); }
/** 从文件中读取创建xml对象 @param string $filepath @return void */ public function load_file($filepath) { $path = ROOT . $filepath; if (is_file($path)) { kc_runtime('loadXMLFile'); $this->dom = simplexml_load_file($path); kc_runtime('loadXMLFile', 1); } else { global $king; kc_error($king->lang->get('system/error/notxmlfile') . ' ' . $path); } }
public function infoBlock($kid) { global $king; $cachepath = "block/info/{$kid}"; if (!($block = $king->cache->get($cachepath))) { if (!($block = $king->db->getRows_one("select * from %s_block where kid={$kid}"))) { kc_error($king->lang->get('system/error/param')); } $king->cache->put($cachepath, $block); } return $block; }
/** 编辑 */ function king_ajax_edt() { global $king; $king->access('portal_express_edt'); $eid = kc_get('eid', 2); $sql = "kname,nsprice,niprice,kremark,kaddress"; $array_sql = explode(',', $sql); if ($GLOBALS['ismethod'] || empty($eid)) { $data = $_POST; if (!$GLOBALS['ismethod']) { $data['kaddress'] = 'http://'; } } else { if (!($data = $king->db->getRows_one("select {$sql} from %s_express where eid={$eid}"))) { kc_error($king->lang->get('system/error/notre')); } } $data = kc_data($array_sql, $data); //kname $array = array(array('kname', 0, 1, 50)); $s = $king->htmForm($king->lang->get('portal/express/name'), kc_htm_input('kname', $data['kname'], 50, 200), $array); //nsprice $array = array(array('nsprice', 0, 1, 5), array('nsprice', 2)); $s .= $king->htmForm($king->lang->get('portal/express/sprice'), kc_htm_input('nsprice', $data['nsprice'], 5, 50), $array); //nsprice $array = array(array('niprice', 0, 1, 5), array('niprice', 2)); $s .= $king->htmForm($king->lang->get('portal/express/iprice'), kc_htm_input('niprice', $data['niprice'], 5, 50), $array); //kaddress $array = array(array('kaddress', 0, 1, 255), array('kaddress', 6)); $s .= $king->htmForm($king->lang->get('portal/express/address'), kc_htm_input('kaddress', $data['kaddress'], 255, 400), $array); //kremark $array = array(array('kremark', 0, 0, 3000)); $s .= $king->htmForm($king->lang->get('portal/common/remark'), '<textarea name="kremark" id="kremark" rows="6" cols="100" class="k_in w400">' . htmlspecialchars($data['kremark']) . '</textarea>', $array); if ($GLOBALS['ischeck']) { $array = array(); foreach ($array_sql as $val) { $array[$val] = $data[$val]; } if (empty($eid)) { //insert $king->db->insert('%s_express', $array); } else { $king->db->update('%s_express', $array, "eid={$eid}"); } $js = 'setTimeout("parent.location=\'manage.express.php\'",1000)'; kc_ajax('', '', '', $js); } $but = kc_htm_a($king->lang->get('system/common/save'), "{CMD:'edt',eid:'{$eid}',IS:1}"); kc_ajax($king->lang->get('portal/title/expressedt'), $s, $but, '', 440, 350 + $GLOBALS['check_num'] * 15); }
function king_ajax_delete() { global $king; $king->access('portal_tag_delete'); $_list = kc_getlist(); $_array = explode(',', $_list); if (!($_res = $king->db->getRows("select kid,ktag from %s_tag where kid in ({$_list});"))) { kc_error($king->lang->get('system/error/not')); } foreach ($_res as $rs) { //写log $king->log(6, 'Tag:' . $rs['ktag']); } $king->db->query("delete from %s_tag where kid in ({$_list});"); kc_ajax('OK', "<p class=\"k_ok\">" . $king->lang->get('system/ok/delete') . "</p>", 1); }
/** 链接服务器&选择数据库 @param string $_data 数据库路径 */ public function connect($data = '') { global $king; if (!isset($this->link)) { $file = $data ? ROOT . $data : ROOT . DB_SQLITE; if (!file_exists($file)) { //若找不到文件则报错 global $king; kc_error($king->lang->get('system/dberr/err6')); } try { $this->link = new PDO('sqlite:' . $file); } catch (PDOException $e) { exit('error!'); } } return $this->link; }
function king_ajax_add() { global $king; $fbtime = kc_cookie("fbtime"); //获得上次操作时间 $ktitle = kc_post('ktitle'); $kname = kc_post('kname'); $kemail = kc_post('kemail'); $kphone = kc_post('kphone'); $kqq = kc_post('kqq'); $kcontent = kc_post('kcontent'); //check ktitle if (!isset($ktitle[1]) || strlen($ktitle) > 50) { kc_error($king->lang->get('feedback/error/name', 0)); } //check kname if (!isset($kname[1]) || strlen($kname) > 30) { kc_error($king->lang->get('feedback/error/name', 1)); } //check kemail if (!kc_validate($kemail, 5)) { kc_error($king->lang->get('feedback/error/name', 2)); } //check kcontent if (!isset($kcontent[9])) { kc_error($king->lang->get('feedback/error/name', 3)); } if ($fbtime > time() - 3600) { kc_ajax($king->lang->get('system/common/tip'), $king->lang->get('feedback/error/name', 5), 0); } else { //记录本次发布时间 setcookie("fbtime", time(), time() + 3600, '/'); $array = array('ktitle' => $ktitle, 'kname' => $kname, 'kemail' => $kemail, 'kphone' => $kphone, 'kqq' => $kqq, 'kcontent' => $kcontent, 'norder' => $king->db->neworder('%s_feedback'), 'ndate' => time()); $king->db->insert('%s_feedback', $array); kc_ajax('OK', '<p class="k_ok">' . $king->lang->get('feedback/ok/add') . '</p>', "<a href=\"index.php\">" . $king->lang->get('system/common/enter') . "</a>"); //添加成功后返回的地址 } }
function king_def() { global $king; $array = array('version', 'cmdno', 'retcode', 'status', 'seller', 'total_fee', 'trade_price', 'transport_fee', 'buyer_id', 'chnid', 'cft_tid', 'mch_vno', 'attach'); $buffer = ''; foreach ($array as $val) { if (isset($_GET[$val])) { $buffer .= $val . '=' . $_GET[$val] . '&'; //$ret[$val]=$val.'='.$_GET[]; } } $md5_sign = strtoupper(md5($buffer . 'key=' . $king->config('tenpaykey', 'portal'))); if ($md5_sign = $_GET['sign']) { $oid = kc_get('attach', 2, 1); //attach来传递oid参数 $tmp = new KC_Template_class($king->config('templateorders'), $king->config('templatepath') . '/inside/user/orders_show.htm'); $tmp->assign('oid', $oid); $tmp->assign('title', $king->lang->get('portal/title/buyok')); echo $tmp->output(); } else { kc_error($king->lang->get('portal/error/payment')); } }
function king_def() { global $king; $array = array('version', 'cmdno', 'retcode', 'status', 'seller', 'total_fee', 'trade_price', 'transport_fee', 'buyer_id', 'chnid', 'cft_tid', 'mch_vno', 'attach'); $buffer = ''; foreach ($array as $val) { if (isset($_GET[$val])) { $buffer .= $val . '=' . $_GET[$val] . '&'; //$ret[$val]=$val.'='.$_GET[]; } } $md5_sign = strtoupper(md5($buffer . 'key=' . $king->config('tenpaykey', 'portal'))); if ($md5_sign = $_GET['sign']) { //更新 $oid = kc_get('attach', 2, 1); //attach来传递oid参数 $array = array('nstatus' => kc_get('status', 2, 1), 'tid' => $_GET['cft_tid'], 'buyer_id' => $_GET['buyer_id'], 'seller' => $_GET['seller'], 'paymethod' => 'tenpay'); $king->db->update('%s_orders', $array, "oid={$oid}"); echo "<meta name=\"TENCENT_ONLINE_PAYMENT\" content=\"China TENCENT\">"; echo $king->lang->get('portal/orders/status/s' . $_GET['status']); } else { kc_error('fail 签名错误!'); } }
function king_view() { global $king; $king->access('feedback'); $kid = kc_get('kid', 2); $sql = "kid,ktitle,kname,kemail,kqq,kphone,kcontent,ndate"; if (!($res = $king->db->getRows("select {$sql} from %s_feedback where kid={$kid}"))) { $res = array(); } if (empty($kid)) { kc_error($king->lang->get('system/error/param')); } else { if (!($rs = $king->db->getRows_one("select {$sql} from %s_feedback where kid={$kid} order by norder asc"))) { kc_error($king->lang->get('system/error/notrecord')); } foreach ($rs as &$r) { $r = htmlspecialchars($r); } $rs['kcontent'] = nl2br($rs['kcontent']); $s = $king->openForm($king->lang->get('feedback/name'), '', 'feedback_edt'); $s .= $king->htmForm($king->lang->get('feedback/label/title'), $rs['ktitle']); $s .= $king->htmForm($king->lang->get('feedback/label/name'), $rs['kname']); $s .= $king->htmForm($king->lang->get('feedback/label/email'), '<a href="mailto:' . $rs['kemail'] . '" title="' . $king->lang->get('feedback/list/sendmail') . $rs['kname'] . '">' . $rs['kemail'] . '</a>'); $s .= $king->htmForm($king->lang->get('feedback/label/qq'), $rs['kqq']); $s .= $king->htmForm($king->lang->get('feedback/label/phone'), $rs['kphone']); $s .= $king->htmForm($king->lang->get('feedback/label/content'), $rs['kcontent']); $s .= $king->htmForm($king->lang->get('feedback/label/date'), kc_formatdate($rs['ndate'])); $but = '<input type="button" onclick="javascript:history.back(-1)" value="' . $king->lang->get('system/common/back') . '[B]" class="big" accesskey="b"/>'; $s .= $king->htmForm(null, $but); $s .= $king->closeForm('none'); } //设置为已读状态 $king->db->update('%s_feedback', array('nread' => 1), 'kid=' . $kid); list($left, $right) = inc_menu(); $king->skin->output($king->lang->get('feedback/title/center'), $left, $right, $s); }
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"> </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); }
/** KingCMS标签解析回调函数 @param array $m @param array $val 传值 @return string */ public function regexcallback($m, $val = null) { /** $prefix 冒号前面的名称,一般不是king则为php $name 冒号后面的名称 $attributes 属性 $inner 循环部分 */ global $king; $s = ''; $ass = $val ? $val : $this->array; if (count($m) == 5) { $prefix = strtolower($m[2]); $name = strtolower($m[3]); $attributes = $m[4]; $attrib = $this->attrib2array($attributes, $ass); if (isset($attrib['conn'])) { //如果有conn属性,则不继续执行,直接远程调用数据 if ($getconn = $this->getConn($attrib['conn'], $m[0], $ass)) { return $getconn; //不需要 $this->str_format 过程,因为目标站里已经进行完了 } else { return False; } } switch ($prefix) { case 'king': if (array_key_exists($name, $ass)) { //如果在ACC列表中存在对象的话 $s = $ass[$name]; } else { //不在$ass列表中的,需要单独做判断 /* if(in_array($name,array('root'))){ return $king->config('inst'); } */ if (false !== ($ret = $this->sysinfo($name))) { return $ret; } //特殊的portal标签,增加portal标记,以便在portal中分析 if (in_array($name, array('nav', 'pagelist', 'list', 'menu', 'menu1', 'menu2', 'menu3', 'menu4', 'menu5'))) { $name = 'portal.' . $name; } //获得ClassName $clsName = kc_f_name($name); if (in_array($clsName, array('skin'))) { //,'db' $s = $king->{$clsName}->tag($name, '', $ass, $attrib); //判断这个class是否已经被安装 } elseif ($king->isModule($clsName)) { $classname = $clsName . '_class'; $cls = new $classname(); $s = $cls->tag($name, '', $ass, $attrib); } elseif (in_array($clsName, array('keywords', 'description'))) { $s = $ass['title']; } else { $s = ""; } } break; case 'config': $s = $king->getConfig($name); break; case 'lang': $s = $king->lang->get(str_replace('.', '/', $name)); break; case 'get': $s = kc_get($name, 0); $validate = kc_val($attrib, 'validate'); if (isset($validate[0])) { if (!kc_validate($s, $validate)) { kc_error($king->lang->get('system/error/param') . '<br/>ID:' . $name . ';Value:' . $s); } } break; case 'post': $s = kc_post($name, 0); $validate = kc_val($attrib, 'validate'); if (isset($validate[0])) { if (!kc_validate($s, $validate)) { kc_error($king->lang->get('system/error/param') . '<br/>ID:' . $name . ';Value:' . $s); } } break; } } else { //判断这个class对应的模型是否已经被安装 $prefix = strtolower($m[6]); $name = strtolower($m[7]); $attributes = $m[8]; $inner = $m[9]; $attrib = $this->attrib2array($attributes, $ass); if (isset($attrib['conn'])) { //如果有conn属性,则不继续执行,直接远程调用数据 if ($getconn = $this->getConn($attrib['conn'], $m[0], $ass)) { return $getconn; } else { return False; } } switch ($prefix) { case 'king': if (array_key_exists($name, $ass)) { //如果在ACC列表中存在对象的话 if (is_array($ass[$name])) { //如果直接传递数组的话,无需转换 $s = $this->array_format($inner, $ass[$name]); } else { $split = kc_val($attrib, 'split'); $explode = kc_val($attrib, 'explode'); if (isset($split[0])) { $assname = $ass[$name]; if (isset($assname[0])) { $array_split = explode($split, $ass[$name]); //拆分值为数组 $array = array(); $i = 1; foreach ($array_split as $val) { $array[$name . '_' . $i++] = $val; //设置成{king:V_N/}类型 } $s = $this->array_format($inner, array($array)); } } elseif (isset($explode[0])) { //如果是用explode拆分数据的话,输出可循环的 $assname = $ass[$name]; if (isset($assname[0])) { $array_explode = explode($explode, $ass[$name]); $array = array(); foreach ($array_explode as $val) { $array[] = array($name => $val); } $s = $this->array_format($inner, $array); } } elseif (kc_validate($ass[$name], 25)) { $ass_array = unserialize(base64_decode($ass[$name])); $s = $this->array_format($inner, $ass_array); } } } else { $iscache = False; if (in_array($name, array('nav', 'pagelist', 'list', 'menu', 'menu1', 'menu2', 'menu3', 'menu4', 'menu5'))) { $name = 'portal.' . $name; } $clsName = kc_f_name($name); //需要把$attributes中的值替换完成后传递下去 $attrib = $this->attrib2array($attributes, $ass); //这个是一个数组,结构:Array([listid] => 1 , [type] => 添加测试文章,标题是7486) $name = strtolower($name); //读取cache属性,如果有缓存,则直接读取对应的缓存文件。 if (isset($attrib['cache'])) { $cachepath = 'system/cache/' . strtolower($attrib['cache']); $s = $king->cache->get($cachepath, time() - $king->config('cachetime')); if (isset($s[0])) { return $s; } $iscache = True; } if (isset($attrib['remote'])) { //跨站解析标签 } if (in_array($clsName, array('skin'))) { //,'db' $s = $king->{$clsName}->tag($name, $inner, $ass, $attrib); } elseif ($king->isModule($clsName)) { $classname = kc_f_name($name) . '_class'; $cls = new $classname(); $s = $cls->tag($name, $inner, $ass, $attrib); } else { $s = "<!-- {$m[0]} -->"; } if ($iscache) { $king->cache->put($cachepath, $s); } //写cache } break; } } return $this->str_format($s, $attrib); }
function king_edt() { global $king; $_htmlcode = ''; $_arraycheck = array(); $_array_varchar = $king->portal->array_varchar; //varchar类型的字段 $king->access('portal_field_edt'); $_sql = 'ktitle,kfield,modelid,ntype,nvalidate,nsizemin,nsizemax,kdefault,koption,nstylewidth,nstyleheight,issearch,isadmin1,isadmin2,isuser1,isuser2,islist,khelp,isrelate,istitle'; $modelid = kc_get('modelid'); $kid = kc_get('kid', 2); $type = kc_get('type', 2); $kid1 = kc_get('kid1', 2); if ($type == '') { $type = 1; } $at_array = array(1, 4, 5, 7, 12, 13, 14); //允许添加的子字段 //ntype参数验证 if ($kid1 && !in_array($type, $at_array) || !in_array($type, $king->portal->ntype)) { kc_error($king->lang->get('system/error/param') . kc_clew(__FILE__, __LINE__)); } $fields = explode(',', $_sql); if ($GLOBALS['ismethod'] || $kid == '') { //POST过程或新添加的过程 $data = $_POST; if (!$GLOBALS['ismethod']) { //初始化新添加的数据 if (in_array($type, $_array_varchar)) { $data['nsizemin'] = 1; $data['nsizemax'] = 255; } else { $data['nsizemin'] = 1; $data['nsizemax'] = 999999; } $data['nstylewidth'] = 400; $data['nstyleheight'] = 70; $data['isadmin1'] = 1; $data['isadmin2'] = 1; $data['isuser1'] = 1; $data['isuser2'] = 1; $data['istitle'] = 1; if ($type == 12) { $data['nvalidate'] = 13; $data['kdefault'] = '#000000'; $data['nsizemax'] = 7; } if ($type == 14) { $data['nstylewidth'] = 100; $data['nsizemax'] = 10; $data['kdefault'] = 'TODAY'; $data['nvalidate'] = 9; //数据类型设置为日期类型 $data['nsizemin'] = 10; $data['nsizemax'] = 10; } } else { if ($kid != '') { $_res = $king->db->getRows_one('select ntype from %s_field where kid=' . $kid); //上面kc_get('kid')中有数据类型验证,无安全隐患 $_res ? $type = $_res['ntype'] : kc_error($king->lang->get('system/error/not')); } } } else { //编辑数据,从数据库读出 if ($data = $king->db->getRows_one('select ' . $_sql . ' from %s_field where kid=' . $kid . ' limit 1;')) { $type = $data['ntype']; $modelid = $data['modelid']; } else { kc_error($king->lang->get('system/error/param') . '<br/>select ' . $_sql . ' from %s_field where kid=' . $kid . ' limit 1;<br/>File:' . basename(__FILE__) . ';Line:' . __LINE__); } } $data = kc_data($fields, $data); $model = $king->portal->infoModel($modelid); $s = '<script type="text/javascript">'; $s .= 'function jumpmenu(obj){eval("parent.location=\'manage.field.php?action=edt&modelid=' . $modelid . '&kid1=' . $kid1 . '&type="+obj.options[obj.selectedIndex].value+"\'");}'; $s .= '</script>'; $s .= $king->openForm('manage.field.php?action=edt'); //字段类型 $_array = array(array('ntype', 2)); if ($kid) { $s .= $king->htmForm($king->lang->get('portal/list/ntype'), kc_htm_select('type', array($type => $king->lang->get('portal/type/n' . $type)), '', ' disabled="true"'), $_array); } else { $_array_select = array(); $array_type = $kid1 ? $at_array : $king->portal->ntype; foreach ($array_type as $val) { $_array_select[$val] = $king->lang->get('portal/type/n' . $val); } $s .= $king->htmForm($king->lang->get('portal/list/ntype'), kc_htm_select('type', $_array_select, $type, ' onChange="jumpmenu(this);"'), $_array); } //子项目中是否显示标题 if ($kid1 && $type != 13) { $checked = $data['istitle'] == 1 ? ' checked="checked"' : ''; $s_istitle = $kid1 ? '<input' . $checked . ' type="checkbox" id="istitle" name="istitle" value="1"/><label for="istitle">' . $king->lang->get('portal/label/showtitle') . '</label>' : ''; } else { $s_istitle = ''; } //字段标题 $_array = array(array('ktitle', 0, 2, 50)); $s .= $king->htmForm($king->lang->get('portal/list/ktitle') . ' (2-50)', '<input class="k_in w200" type="text" name="ktitle" value="' . htmlspecialchars($data['ktitle']) . '" maxlength="50" />' . $s_istitle, $_array); if ($type != 99) { //字段名 if ($kid) { //update $s .= $king->htmForm($king->lang->get('portal/list/kfield'), '<input class="k_in w200" type="text" disabled="true" value="' . htmlspecialchars($data['kfield']) . '" />'); $s .= kc_htm_hidden(array('kfield' => $data['kfield'])); } else { $_array = array(array('kfield', 0, 1, 50), array('kfield', 4), array('kfield', 12, $king->lang->get('system/check/none'), $king->db->getRows_one("select kid from %s_field where kfield='k_" . $king->db->escape(kc_post('kfield')) . "' and modelid={$modelid};"))); $s .= $king->htmForm($king->lang->get('portal/list/kfield') . ' (1-50)', '<input class="k_in w200" type="text" name="kfield" value="' . htmlspecialchars($data['kfield']) . '" maxlength="50" />', $_array); } //数据类型 if (in_array($type, array(1, 14))) { $array = array(0, 1, 2, 22, 3, 4, 5, 6, 7, 8, 9, 13); $_array_select = array(); foreach ($array as $val) { $_array_select += array($val => $king->lang->get('portal/validate/n' . $val)); } $s .= $king->htmForm($king->lang->get('portal/list/nvalidate'), kc_htm_select('nvalidate', $_array_select, $data['nvalidate']), array(array('nvalidate', 2))); } //长度 if (!in_array($type, array(0, 4, 5, 6, 7, 12, 13)) || $data['kfield'] == 'kcontent') { //系统标签和颜色值无需设置长度 $_size = '<input class="k_in w50" type="text" name="nsizemin" id="nsizemin" value="' . htmlspecialchars($data['nsizemin']) . '" maxlength="6" />'; $_size .= ' - <input class="k_in w100" type="text" name="nsizemax" id="nsizemax" value="' . htmlspecialchars($data['nsizemax']) . '" maxlength="11" />'; $_array = array(array('nsizemin', 2), array('nsizemax', 2), array('nsizemin', 0, 1, 6), array('nsizemax', 0, 1, 11)); if (in_array($type, $_array_varchar)) { $_lang = 'nsize'; $_array[] = array('nsizemin', 16, $king->lang->get('portal/check/nsize1'), 0, 255); $_array[] = array('nsizemax', 16, $king->lang->get('portal/check/nsize2'), 1, 255); } else { $_lang = 'nsizetext'; } $s .= $king->htmForm($king->lang->get('portal/label/' . $_lang), $_size, $_array); } else { $s .= kc_htm_hidden(array('nsizemin' => $data['nsizemin'], 'nsizemax' => $data['nsizemax'])); } //默认值 if (in_array($type, array(1, 4, 5, 6, 7, 8, 10))) { $_array = array(array('kdefault', 0, 0, 255)); $str = '<input class="k_in w400" type="text" id="kdefault" name="kdefault" value="' . htmlspecialchars($data['kdefault']) . '" maxlength="255" />'; /**/ if (in_array($type, array(8))) { $str .= kc_f_brow('kdefault', $king->config('uppath') . '/image', 0); } if (in_array($type, array(10))) { $str .= kc_f_brow('kdefault', $king->config('uppath') . '/file', 1); } /**/ $s .= $king->htmForm($king->lang->get('portal/label/kdefault') . ' (0-255)', $str, $_array); } elseif (in_array($type, array(12))) { //颜色 $_array = array(array('kdefault', 0, 7, 7), array('kdefault', 13)); $str = '<input class="k_in k_color" type="text" id="kdefault" name="kdefault" value="' . htmlspecialchars($data['kdefault']) . '" maxlength="7" ' . (kc_validate($data['kdefault'], 13) ? ' style="background:' . $data['kdefault'] . '"' : '') . '/>'; $s .= $king->htmForm($king->lang->get('portal/label/kdefault'), $str, $_array, null, kc_f_color('kdefault')); } elseif (in_array($type, array(14))) { $array = array('TODAY' => $king->lang->get('system/time/today')); $_array = array(array('kdefault', 0, 0, 20)); $s .= $king->htmForm($king->lang->get('portal/label/kdefault'), kc_htm_input('kdefault', $data['kdefault']), $_array, 0, kc_htm_setvalue('kdefault', $array)); } elseif (in_array($type, array(13))) { $array = array(1 => $king->lang->get('system/common/yes'), 0 => $king->lang->get('system/common/no')); $s .= $king->htmForm($king->lang->get('portal/label/kdefault'), kc_htm_radio('kdefault', $array, $data['kdefault'])); } else { $s .= kc_htm_hidden(array('kdefault' => '')); } } //end if($type==99) //选项 if (in_array($type, array(4, 5, 6, 7))) { $array = array(array('koption', 0, 1, 999999)); $_default = '<table class="k_side" cellspacing="0"><tr><td><textarea name="koption" class="k_in w400" cols="130" rows="7">' . htmlspecialchars($data['koption']) . '</textarea></td>'; $_default .= '<td>' . kc_help('portal/help/koption', 360, 310); $_default .= '</td></tr></table>'; $s .= $king->htmForm($king->lang->get('portal/label/koption'), $_default, $array); } elseif (in_array($type, array(1, 8, 10)) || in_array($data['kfield'], array('nprice', 'nnumber', 'nweight'))) { $array = array(array('koption', 0, 0, 999999)); $_default = '<table class="k_side" cellspacing="0"><tr><td><textarea name="koption" class="k_in w400" cols="130" rows="7">' . htmlspecialchars($data['koption']) . '</textarea></td>'; $_default .= '<td>' . kc_help('portal/help/kdefault', 360, 260); $_default .= '</td></tr></table>'; $s .= $king->htmForm($king->lang->get('portal/label/kdefault1'), $_default, $array); } else { $s .= kc_htm_hidden(array('koption' => '')); } //尺寸 if (in_array($type, array(2, 3, 6, 9, 11)) || $data['kfield'] == 'kcontent') { //长X宽 $_size = '<input class="k_in w50" type="text" name="nstylewidth" id="nstylewidth" value="' . htmlspecialchars($data['nstylewidth']) . '" maxlength="4" />'; $_size .= ' X <input class="k_in w50" type="text" name="nstyleheight" id="nstyleheight" value="' . htmlspecialchars($data['nstyleheight']) . '" maxlength="4" />(px)'; $_array = array(array('nstylewidth', 2), array('nstyleheight', 2), array('nstylewidth', 0, 1, 4), array('nstyleheight', 0, 1, 4)); $s .= $king->htmForm($king->lang->get('portal/label/nstyle'), $_size, $_array); } elseif (in_array($type, array(1, 8, 10))) { //长 $_size = '<input class="k_in w50" type="text" name="nstylewidth" id="nstylewidth" value="' . htmlspecialchars($data['nstylewidth']) . '" maxlength="4" />'; $_array = array(array('nstylewidth', 2), array('nstyleheight', 2), array('nstylewidth', 0, 1, 4), array('nstyleheight', 0, 1, 4)); $s .= kc_htm_hidden(array('nstyleheight' => 0)); $s .= $king->htmForm($king->lang->get('portal/label/nstylewidth'), $_size, $_array, '', kc_htm_setvalue('nstylewidth', array(50 => '50 px', 100 => '100 px', 200 => '200 px', 400 => '400 px'))); } else { $s .= kc_htm_hidden(array('nstylewidth' => 0, 'nstyleheight' => 0)); } /** //上传文件类型 if(in_array($type,array(8))){ $_array=array( array('nupfile',0,0,255), array('nupfile',2), ); $s.=$king->htmForm($king->lang->get('portal/label/nupfile'),'<input class="k_in w300" type="text" name="nupfile" value="'.htmlspecialchars($data['nupfile']).'" maxlength="255" />',$_array); }else{ $s.=kc_htm_hidden(array('nupfile'=>'')); } /**/ $_htmlcode = ''; //加入搜索和关联选项 if (in_array($type, array(1, 2))) { $data['issearch'] == 1 ? $_checked = ' checked="checked"' : ($_checked = ''); $_htmlcode = '<span><input type="checkbox" value="1" id="issearch" name="issearch"' . $_checked . '/>'; $_htmlcode .= '<label for="issearch">' . $king->lang->get('portal/label/attrib/issearch') . '</label></span>'; // $s.=$king->htmForm($king->lang->get('system/common/option'),$_htmlcode); } else { $s .= kc_htm_hidden(array('issearch' => 0)); } if (in_array($type, array(1, 4, 5))) { $data['isrelate'] == 1 ? $_checked = ' checked="checked"' : ($_checked = ''); $_htmlcode .= ' <span><input type="checkbox" value="1" id="isrelate" name="isrelate"' . $_checked . '/>'; $_htmlcode .= '<label for="isrelate">' . $king->lang->get('portal/label/attrib/isrelate1') . '</label></span>'; // $s.=$king->htmForm($king->lang->get('system/common/option'),$_htmlcode); } else { $s .= kc_htm_hidden(array('issearch' => 0)); } if ($_htmlcode) { $s .= $king->htmForm($king->lang->get('system/common/option'), $_htmlcode); } //是否显示 if ($type == 0 && $data['kfield'] == 'ktitle' || $type == 99) { $s .= kc_htm_hidden(array('isadmin1' => 1, 'isadmin2' => 1, 'isuser1' => 1, 'isuser2' => 1)); } else { $_htmlcode = '<span>'; $data['isadmin1'] == 1 ? $_checked = ' checked="checked"' : ($_checked = ''); $_htmlcode .= '<input type="checkbox" value="1" id="isadmin1" name="isadmin1"' . $_checked . '/>'; $_htmlcode .= '<label for="isadmin1">' . $king->lang->get('portal/label/attrib/isadmin1') . '</label>'; $data['isadmin2'] == 1 ? $_checked = ' checked="checked"' : ($_checked = ''); $_htmlcode .= '<input type="checkbox" value="1" id="isadmin2" name="isadmin2"' . $_checked . '/>'; $_htmlcode .= '<label for="isadmin2">' . $king->lang->get('portal/label/attrib/isadmin2') . '</label>'; $data['isuser1'] == 1 ? $_checked = ' checked="checked"' : ($_checked = ''); $_htmlcode .= '<input type="checkbox" value="1" id="isuser1" name="isuser1"' . $_checked . '/>'; $_htmlcode .= '<label for="isuser1">' . $king->lang->get('portal/label/attrib/isuser1') . '</label>'; $data['isuser2'] == 1 ? $_checked = ' checked="checked"' : ($_checked = ''); $_htmlcode .= '<input type="checkbox" value="1" id="isuser2" name="isuser2"' . $_checked . '/>'; $_htmlcode .= '<label for="isuser2">' . $king->lang->get('portal/label/attrib/isuser2') . '</label>'; if (!in_array($type, array(0, 2, 3, 9, 11))) { $data['islist'] == 1 ? $_checked = ' checked="checked"' : ($_checked = ''); $_htmlcode .= '<input type="checkbox" value="1" id="islist" name="islist"' . $_checked . '/>'; $_htmlcode .= '<label for="islist">' . $king->lang->get('portal/label/attrib/islist') . '</label>'; } $_htmlcode .= '</span>'; $s .= $king->htmForm($king->lang->get('portal/label/attrib/isshow'), $_htmlcode); } //khelp if ($type != 0 && !$kid1) { $s .= $king->htmForm($king->lang->get('portal/list/khelp'), '<table class="k_side" cellspacing="0"><tr><td><textarea class="k_in w400" rows="5" name="khelp" >' . htmlspecialchars($data['khelp']) . '</textarea></td><td>' . kc_help('portal/help/khelp', 300, 160) . '</td></tr></table>'); } $s .= kc_htm_hidden(array('modelid' => $modelid, 'kid' => $kid, 'ntype' => $type, 'kid1' => $kid1)); $s .= $king->closeForm('save'); //数据处理 if ($GLOBALS['ischeck']) { $_sql = 'ktitle,nsizemin,nsizemax,kdefault,koption,nstylewidth,nstyleheight,khelp'; $_array = array(); $_array_sql = explode(',', $_sql); foreach ($_array_sql as $val) { if (isset($_POST[$val])) { $_array[$val] = $data[$val]; } } $array_is = array('issearch', 'isadmin1', 'isadmin2', 'isuser1', 'isuser2', 'islist', 'isrelate', 'istitle'); foreach ($array_is as $val) { $_array[$val] = $data[$val] == 1 ? 1 : 0; } $_array['nvalidate'] = $data['nvalidate'] ? $data['nvalidate'] : 0; //添加&更新数据 if ($kid) { //update if (!($resmt = $king->db->getRows_one("select modeltable from %s_model where modelid={$modelid};"))) { kc_error($king->lang->get('system/error/param') . '<br/>File:' . basename(__FILE__) . ';Line:' . __LINE__); } $_modeltable = $resmt['modeltable']; if (in_array($type, $_array_varchar)) { //varchar类型 $king->db->query('alter table %s__' . $king->db->escape($_modeltable) . ' modify ' . $king->db->escape(kc_post('kfield')) . ' varchar(' . $_array['nsizemax'] . ') null;'); } $king->db->update('%s_field', $_array, 'kid=' . $kid); $_nlog = 7; } else { $_array += array('ktitle' => $data['ktitle'], 'kfield' => $data['kfield'] ? 'k_' . $data['kfield'] : '', 'modelid' => $data['modelid'], 'ntype' => $data['ntype'], 'norder' => $king->db->neworder('%s_field', 'modelid=' . $modelid), 'khelp' => $data['khelp'], 'kid1' => $kid1 ? $kid1 : 0); if (in_array($data['ntype'], array('10,11'))) { //当文件上传字段的时候,才可以上传文件 $_array += array('ntype' => 1); } $king->db->insert('%s_field', $_array); $_nlog = 5; $res = $king->db->getRows_one("select modeltable from %s_model where modelid={$modelid};"); $_modeltable = $res['modeltable']; if (in_array($type, $_array_varchar)) { //varchar类型 $king->db->query('alter table %s__' . $king->db->escape($_modeltable) . ' add k_' . $king->db->escape($data['kfield']) . ' varchar(' . $_array['nsizemax'] . ') null;'); } elseif (in_array($type, array(13))) { //tinyint $king->db->query('alter table %s__' . $king->db->escape($_modeltable) . ' add k_' . $king->db->escape($data['kfield']) . ' tinyint(1) not null default 0;'); } elseif ($type == 99) { //组选项不需要字段 } else { $king->db->query('alter table %s__' . $king->db->escape($_modeltable) . ' add k_' . $king->db->escape($data['kfield']) . ' text null;'); } } $king->cache->del('portal/model/model' . $modelid); $king->cache->rd('data/_' . $_modeltable); //写log $king->log($_nlog, 'Field:' . $data['ktitle']); kc_goto($king->lang->get('system/goto/is'), 'manage.field.php?action=edt&modelid=' . $modelid . '&kid1=' . $kid1, 'manage.field.php?modelid=' . $modelid . '&kid1=' . $kid1); } list($left, $right) = king_inc_list(); $king->skin->output($king->lang->get('portal/title/field' . ($kid ? 'edt' : 'add')) . "({$model['modelname']})", $left, $right, $s); }
/** 返回记录集 @param string $_sql SQL语句 @param int $_is 是否带有分页1分页 @param int $_pid 页数 @param int $_rn 每页显示数 @return array */ public function getRows($_sql, $_is = 0, $_pid = 0, $_rn = 0) { if ($_is) { if ($_pid == 0) { $_pid = $this->pid; } //第x页 即当前页 if ($_rn == 0) { $_rn = $this->rn; } //每页显示 $_sql .= ' limit ' . $_rn * ($_pid - 1) . ',' . $_rn . ';'; $this->ispagelist = 1; } else { $this->ispagelist = 0; } $Row_Result = array(); $this->query($_sql); $this->getRows_number(); for ($i = 0; $i < $this->Rows; $i++) { if (!mysql_data_seek($this->mQuery, $i)) { global $king; if (DEBUG) { kc_error('<label>' . $king->lang->get('system/dberr/err3') . '</label><textarea>' . htmlspecialchars($_sql) . '</textarea>'); } else { kc_error('<label>' . $king->lang->get('system/dberr/err3') . '</label>'); } } $Row_Result[$i] = mysql_fetch_assoc($this->mQuery); } return $Row_Result; }
/** 对URL进行数组处理 @return array url : This SERVER_NAME classname : This ClassName path_info : $_SERVER['PATH_INFO']值 */ public function getUrl() { $path_info = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : (isset($_SERVER['ORIG_PATH_INFO']) ? $_SERVER['ORIG_PATH_INFO'] : ''); if (isset($path_info[0]) && False !== strpos($_SERVER['SERVER_SOFTWARE'], 'IIS')) { $path_info = iconv('GBK', 'UTF-8', $path_info); } if (substr($path_info, 0, 10) == '/index.php') { $path_info = substr($path_info, 10); } if ($path_info == '' || $path_info == '/') { $array = array('url' => $_SERVER['SERVER_NAME'], 'classname' => 'portal_class', 'path_info' => ''); } else { $url = substr($path_info, 1, strlen($path_info) - strlen($this->config('rewriteend')) - 1); if (substr($url, 0, 10) == 'index.php/') { $url = substr($url, 10); } $array = kc_explode($this->config('rewriteline'), $url, 4); $array['url'] = $_SERVER['SERVER_NAME']; in_array($array[0], array('page', 'list', 'tag')) ? $module = 'portal' : ($module = $array[0]); $array['classname'] = $module . '_class'; $array['path_info'] = $path_info; //判断是否存在这个模块 if (!$this->isModule($module)) { kc_error($this->lang->get('system/error/param') . '<br/>File:' . basename(__FILE__) . ';Line:' . __LINE__ . '<br/>' . $module . '<br/>' . $path_info); } } return $array; }
/** 编辑详细信息 */ function king_edt() { global $king; $king->access('portal_orders_edt'); $oid = kc_get('oid', 2, 1); $sql = "kname,nstatus,realname,useraddress,userpost,usertel,usermail,ntotal,nexpress,kremark"; if ($GLOBALS['ismethod']) { $data = $_POST; } else { if (!($data = $king->db->getRows_one("select {$sql},ono,userid,kcontent from %s_orders where oid={$oid}"))) { kc_error($king->lang->get('system/error/notre')); } } $s = $king->openForm('manage.orders.php?action=edt', $king->lang->get('portal/orders/odinfo')); //ono $s .= $king->htmForm($king->lang->get('portal/orders/no'), kc_htm_input('ono', $data['ono'], 16, 150, 'readonly="true"')); //kname $array = array(array('kname', 0, 1, 30)); $s .= $king->htmForm($king->lang->get('portal/orders/name'), kc_htm_input('kname', $data['kname'], 30, 300), $array); //nstatus $array_statu = array(); for ($i = 1; $i <= 11; $i++) { $array_statu[$i] = $king->lang->get("portal/orders/status/s{$i}"); } $array = array(array('nstatus', 2)); $s .= $king->htmForm($king->lang->get('portal/orders/statu'), kc_htm_select('nstatus', $array_statu, $data['nstatus']), $array); //ntotal $array = array(array('ntotal', 3)); $s .= $king->htmForm($king->lang->get('portal/orders/total'), kc_htm_input('ntotal', $data['ntotal'], 14, 100) . $king->lang->get('portal/common/y'), $array); //nexpress $array = array(array('nexpress', 3)); $s .= $king->htmForm($king->lang->get('portal/orders/express'), kc_htm_input('nexpress', $data['nexpress'], 14, 100) . $king->lang->get('portal/common/y'), $array); //nalltotal $s .= $king->htmForm($king->lang->get('portal/list/alltotal'), '<span>' . number_format($data['ntotal'] + $data['nexpress'], 2) . $king->lang->get('portal/common/y') . '</span>'); $s .= $king->splitForm(); $contents = unserialize($data['kcontent']); $list = "<table class=\"k_side\">"; foreach ($contents as $key => $num) { list($listid, $kid) = explode('-', $key); $info = $king->portal->infoList($listid); $id = $king->portal->infoID($listid, $kid); $kpath = $king->portal->pathPage($info, $id['kid'], $id['kpath']); $list .= "<tr><td><a target=\"_blank\" href=\"manage.content.php?action=edt&listid={$listid}&kid={$kid}\">" . kc_icon('e5', $king->lang->get('system/common/edit')) . "</a>"; $list .= "<a target=\"_blank\" href=\"{$kpath}\">{$id['ktitle']}</a></td>"; $list .= "<td>" . kc_icon('q1') . number_format($id['nprice'], 2) . " x {$num}</tr>"; } $list .= "</table>"; $s .= $king->htmForm($king->lang->get('portal/orders/value'), $list); $s .= $king->splitForm($king->lang->get('portal/orders/userinfo')); $king->Load('user'); $user = $king->user->infoUser($data['userid']); $s .= $king->htmForm($king->lang->get('portal/user/name'), $user['username']); //realname $array = array(array('realname', 0, 1, 30)); $s .= $king->htmForm($king->lang->get('portal/orders/realname'), kc_htm_input('realname', $data['realname'], 30, 100), $array); //useraddress $array = array(array('useraddress', 0, 1, 30)); $s .= $king->htmForm($king->lang->get('portal/orders/address'), '<textarea name="useraddress" id="useraddress" rows="4" cols="100" class="k_in w400">' . htmlspecialchars($data['useraddress']) . '</textarea>', $array); //userpost $array = array(array('userpost', 0, 6, 6)); $s .= $king->htmForm($king->lang->get('portal/orders/post'), kc_htm_input('userpost', $data['userpost'], 6, 100), $array); //usertel $array = array(array('usertel', 0, 1, 30)); $s .= $king->htmForm($king->lang->get('portal/orders/tel'), kc_htm_input('usertel', $data['usertel'], 30, 200), $array); //usermail $array = array(array('usermail', 0, 5, 32), array('usermail', 5)); $s .= $king->htmForm($king->lang->get('portal/orders/mail'), kc_htm_input('usermail', $data['usermail'], 32, 200), $array); $s .= $king->splitForm($king->lang->get('portal/common/remark')); //kremark $array = array(array('kremark', 0, 0, 3000)); $s .= $king->htmForm($king->lang->get('portal/common/remark'), '<textarea name="kremark" id="kremark" rows="8" cols="100" class="k_in w400">' . htmlspecialchars($data['kremark']) . '</textarea>', $array); //隐藏域 $s .= kc_htm_hidden(array('oid' => $oid, 'userid' => $data['userid'], 'ono' => $data['ono'], 'kcontent' => $data['kcontent'])); $s .= $king->closeForm('save'); if ($GLOBALS['ischeck']) { $array_sql = explode(',', $sql); $array = array(); foreach ($array_sql as $val) { $array[$val] = $data[$val]; } $king->db->update('%s_orders', $array, "oid={$oid}"); kc_goto($king->lang->get('system/goto/saveok'), "manage.orders.php?action=edt&oid={$oid}"); } $left = array('' => array('href' => 'manage.orders.php', 'ico' => 'q5', 'title' => $king->lang->get('portal/title/ordersdef')), 'paid' => array('href' => 'manage.orders.php?action=paid', 'ico' => 'q6', 'title' => $king->lang->get('portal/title/orderspaid')), 'all' => array('href' => 'manage.orders.php?action=all', 'ico' => 'q4', 'title' => $king->lang->get('portal/title/ordersall')), 'edt' => array('href' => 'manage.orders.php?action=edt&oid=' . $oid, 'ico' => 'e7', 'title' => $king->lang->get('system/common/edit'))); $right = array(array('href' => 'manage.php', 'title' => $king->lang->get('portal/title/list'), 'ico' => 'a1')); $king->skin->output($king->lang->get('portal/title/orders'), $left, $right, $s); }
function king_ajax_lostpwd1() { global $king; $username = kc_post('username'); //ask if ($user = $king->db->getRows_one("select userid,uid,userask,useranswer,usermail from %s_user where isdelete=0 and username='******'username')) . "'")) { if (!$user['userask']) { kc_error($king->lang->get('user/error/ask')); } } else { kc_error($king->lang->get('system/error/param')); } $s = $king->htmForm($king->lang->get('user/label/ask'), htmlspecialchars($user['userask'])); //answer $array = array(array('useranswer', 0, 1, 16), array('useranswer', 12, $king->lang->get('portal/check/lost/answer'), $user['useranswer'] != kc_post('useranswer'))); $s .= $king->htmForm($king->lang->get('user/label/answer'), '<input class="k_in w150" type="text" name="useranswer" id="useranswer" maxlength="16" value="' . htmlspecialchars(kc_post('useranswer')) . '" />', $array); //mail $_array = array(array('usermail', 0, 6, 32), array('usermail', 5, $king->lang->get('portal/check/reg/u-4')), array('usermail', 12, $king->lang->get('portal/check/lost/mail'), strtolower($user['usermail']) != strtolower(kc_post('usermail')))); $s .= $king->htmForm($king->lang->get('portal/user/mail'), '<input class="k_in w250" type="text" name="usermail" value="' . htmlspecialchars(kc_post('usermail')) . '" maxlength="32" />', $_array); //pass $_array = array(array('userpass', 0, 6, 30), array('userpass', 17, null, 'userpass1')); $s .= $king->htmForm($king->lang->get('portal/user/pass') . ' (6-30)', '<input class="k_in w150" type="password" name="userpass" id="userpass" maxlength="30" value="' . htmlspecialchars(kc_post('userpass')) . '" />', $_array); //repass $s .= $king->htmForm($king->lang->get('portal/user/pass1'), '<input class="k_in w150" type="password" name="userpass1" id="userpass1" maxlength="30" value="' . htmlspecialchars(kc_post('userpass1')) . '" />'); $verify = new KC_Verify_class(); $s .= $verify->Show(); if ($GLOBALS['ischeck']) { $array = array(); $salt = kc_random(6); $md5pass = md5($salt . kc_post('userpass')); $array['userpass'] = $md5pass; $array['ksalt'] = $salt; $userid = $king->db->update('%s_user', $array, "userid={$user['userid']}"); //写Cookie $s = $king->user->userLogin($user['userid'], 2592000); $king->user->delUserInfo($user['userid']); kc_ajax($king->lang->get('system/common/welcome'), $s . "<p class=\"k_ok\">" . $king->lang->get('portal/user/lostok') . "</p>", 0); } $but = kc_htm_a($king->lang->get('system/common/submit'), "{URL:'" . $king->config('inst') . "user/index.php',CMD:'lostpwd1',username:'******',IS:1}"); $height = $king->config('verifyopen') ? 250 + $king->config('verifyheight') : 230; kc_ajax($king->lang->get('portal/user/name'), $s, $but, '', 420, $height + $GLOBALS['check_num'] * 15); }
public function createPage($listid, $kid, $pid = 1, $is = null) { global $king; if (!kc_validate($kid, 2)) { return false; } $info = $this->infoList($listid); $model = $this->infoModel($info['modelid']); $site = $this->infoSite($info['siteid']); if ($info['npage'] != 0 && $is == null) { return; } if ($info['modelid'] <= 0) { kc_error($king->lang->get('system/error/param') . kc_clew(__FILE__, __LINE__)); } $id = $this->infoID($listid, $kid); //读取模板 $tmp = new KC_Template_class($info['ktemplatepage1'], $info['ktemplatepage2']); $tmp->assign('type', 'page'); foreach ($this->getField('list', 'field') as $val) { $tmp->assign(substr($val, 1), $info[$val]); } foreach ($this->getField('list', 'site') as $val) { $tmp->assign($val, $site[$val]); } foreach ($this->getField('list', 'id') as $val) { $tmp->assign($val, $info[$val]); } foreach ($model['field']['html'] as $key => $val) { $tmp->assign(substr($key, 1), kc_val($id, $key)); } foreach ($model['field']['text'] as $key => $val) { $tmp->assign(substr($key, 1), kc_val($id, $key)); } foreach ($model['field']['attrib'] as $val) { $tmp->assign(substr($val, 1), kc_val($id, $val)); } foreach ($model['field']['id'] as $val) { $tmp->assign($val, $id[$val]); } foreach ($model['field']['images'] as $key => $val) { //图片组类型 $array = $this->tab2array(kc_val($id, $key), 'images'); $tmp->assign(substr($key, 1), $array); //替换已经提交过的字符串值 } foreach ($model['field']['files'] as $key => $val) { //文件组类型 $array = $this->tab2array(kc_val($id, $key), 'files'); $tmp->assign(substr($key, 1), $array); } $kpath = $this->pathPage($info, $kid, $id['kpath'], 0, 1); //第一页的路径,不要指定为$pid,会出错 $tmp->assign('path', $kpath); $tmp->assign('pid', $pid); //前置命令 $tmp->assign('add', $king->config('inst') . "portal/index.php?action=edt&listid={$listid}"); //添加新话题 $tmp->assign('reply', $king->config('inst') . "portal/index.php?action=edt&listid={$listid}&kid1={$kid}"); //回复话题 $tmp->assign('commentlink', $king->config('inst') . "comment.php?modelid={$info['modelid']}&listid={$listid}&kid={$kid}"); $tmp->assign('edit', $king->config('inst') . "portal/index.php?action=edt&listid={$listid}&kid={$kid}"); //编辑话题 $tmp->assign('hit', "<em id=\"k_hit\">" . ($info['npage'] == 0 ? 'Loading...' : $id['nhit'] + 1) . "</em><script type=\"text/javascript\" charset=\"UTF-8\"><!--\n\$.kc_ajax('{URL:\\'" . $king->config('inst') . "portal/index.php\\',CMD:\\'hit\\',kid:{$kid},modelid:{$info['modelid']},IS:1}')\n--></script>"); //访问统计 $tmp->assign('comment', "<em id=\"k_comment\">" . 'Loading...' . "</em><script type=\"text/javascript\" charset=\"UTF-8\"><!--\n\$.kc_ajax('{URL:\\'" . $king->config('inst') . "portal/index.php\\',CMD:\\'commentcount\\',kid:{$kid},modelid:{$info['modelid']},IS:1}')\n--></script>"); //评论统计 $tmp->assign('digg', "<div id=\"k_digg\"><p id=\"k_digg1\" onclick=\"\$.kc_ajax('{URL:\\'" . $king->config('inst') . "portal/index.php\\',CMD:\\'digg\\',kid:{$kid},modelid:{$info['modelid']},type:1,IS:1}');\">Loading...</p><p id=\"k_digg0\" onclick=\"\$.kc_ajax('{URL:\\'" . $king->config('inst') . "portal/index.php\\',CMD:\\'digg\\',kid:{$kid},modelid:{$info['modelid']},type:0,IS:1}');\">Loading...</p><script type=\"text/javascript\" charset=\"UTF-8\"><!--\n\$.kc_ajax('{URL:\\'" . $king->config('inst') . "portal/index.php\\',CMD:\\'digg\\',kid:{$kid},modelid:{$info['modelid']},type:2,IS:1}')\n--></script></div>"); //顶踩 if ($is || $info['npage'] != 0) { return $tmp->output(); } else { kc_f_put_contents($this->pathPage($info, $kid, $id['kpath'], 1, $pid), $tmp->output(), 1); } }
function king_def() { global $king; //die(uc_user_synlogin(2)); if ($GLOBALS['ismethod']) { //POST过程 $data = $_POST; } else { $data = array('re' => kc_val($_SERVER, 'HTTP_REFERER')); } $data = kc_data(array('re', 'username', 'userpass', 'expire')); if ($king->config('blackuser', 'user')) { $array_black = explode('|', $king->config('blackuser', 'user')); $array_black = array_diff($array_black, array(null)); } else { $array_black = array(); } $s = $king->openForm('login.php'); //username $_array = array(array('username', 0, 3, 15), array('username', 14, $king->lang->get('portal/check/reg/u-1'), array('*', '\\', ':', '?', '<', '>', '|', ';', ',', '\'', '!', '~', '$', '#', '@', '^', '(', ')', '{', '}', '=', '+', '%', '/')), array('username', 14, $king->lang->get('portal/check/reg/u-2'), $array_black)); $s .= $king->htmForm($king->lang->get('portal/user/name'), '<input class="k_in w150" type="text" name="username" value="' . htmlspecialchars($data['username']) . '" maxlength="15" />', $_array, null, "<tt><a href=\"javascript:; \" class=\"k_user_register\">" . $king->lang->get('portal/user/reg') . "</a></tt>"); //pass $_array = array(array('userpass', 0, 6, 30)); if ($data['userpass'] && $GLOBALS['ischeck']) { //有密码 并 账号验证成功的时候进行验证 $username = $data['username']; $is = False; if ($king->user->isuc) { //如果有UC if ($array_uc = uc_user_login($data['username'], $data['userpass'])) { //链接成功 if ((int) $array_uc[0] < 0) { //用户名不存在或密码错误 if ($res = $king->db->getRows_one("select usermail,userpass,ksalt,userid from %s_user where username='******' and uid=0")) { //判断本地是否存在这个用户并且未同步到uc $userid = $res['userid']; if (md5($res['ksalt'] . $data['userpass']) == $res['userpass']) { //检测密码 $uid = uc_user_register($username, $data['userpass'], $res['usermail']); //注册用户到uc $king->db->update('%s_user', array('lastlogindate' => time(), 'uid' => $uid > 0 ? $uid : 0), 'username=\'' . $king->db->escape($username . '\'')); uc_user_login($data['username'], $data['userpass']); } else { $is = True; $errId = -2; } } else { $is = True; $errId = $array_uc[0]; } } else { //登录成功的时候,检查一下本地是否有这个账号 $uid = $array_uc[0]; //UC中的UID if ($res = $king->db->getRows_one("select userpass,ksalt,userid from %s_user where username='******'")) { //如果有这么个账号 $userid = $res['userid']; if (md5($res['ksalt'] . $data['userpass']) != $res['userpass']) { //若不一致,则进行更新 $userpass = md5($res['ksalt'] . $data['userpass']); $king->db->update('%s_user', array('userpass' => $userpass, 'lastlogindate' => time()), 'username=\'' . $king->db->escape($username . '\'')); } else { $king->db->update('%s_user', array('lastlogindate' => time()), 'username=\'' . $king->db->escape($username . '\'')); } } else { //如果本地没有这个账号,则添加 $usermail = $array_uc[3]; $ksalt = kc_random(6); $array = array('username' => $username, 'userpass' => md5($ksalt . $data['userpass']), 'usermail' => $usermail, 'ksalt' => $ksalt, 'uid' => $uid, 'regdate' => time(), 'lastlogindate' => time()); $king->db->insert('%s_user', $array); $res = $king->db->getRows_one("select userid from %s_user where uid='" . $uid . "' and isdelete=0"); $userid = $res['userid']; } } } else { kc_error($king->lang->get('portal/error/connect')); //连接错误 } } else { //如果没有UC if ($res = $king->db->getRows_one("select userpass,ksalt,userid from %s_user where username='******' and isdelete=0")) { //如果有这么个账号 $md5pass = md5($res['ksalt'] . $data['userpass']); // kc_error($md5pass."\t".$res['userpass']); if ($md5pass != $res['userpass']) { //若不一致,提示错误 $is = True; $errId = -2; } else { //验证通过 $userid = $res['userid']; $king->db->update('%s_user', array('lastlogindate' => time()), 'userid=' . $userid); // $userpass=md5($res['ksalt'].$data['userpass']); } } else { $is = True; $errId = -1; } } if (!empty($errId)) { $_array[] = array('userpass', 12, $king->lang->get('portal/check/pwd/p' . $errId), $is); } } $s .= $king->htmForm($king->lang->get('portal/user/pass') . '', '<input class="k_in w150" type="password" name="userpass" maxlength="30" />', $_array, null, "<tt><a href=\"javascript:;\" class=\"k_user_lostpwd\">" . $king->lang->get('portal/user/lostpwd') . "</a></tt>"); //expire $array_select = array(0 => $king->lang->get('system/time/cookie'), 86400 => $king->lang->get('system/time/oneday'), 2592000 => $king->lang->get('system/time/jan'), 15768000 => $king->lang->get('system/time/halfyear'), 31536000 => $king->lang->get('system/time/ayear'), 315360000 => $king->lang->get('system/time/forever')); $s .= $king->htmForm($king->lang->get('portal/user/expire'), kc_htm_radio('expire', $array_select, 2592000)); //verify $verify = new KC_Verify_class(); $s .= $verify->Show(); $s .= kc_htm_hidden(array('re' => $data['re'])); $s .= $king->closeForm($king->lang->get('system/common/login')); if ($GLOBALS['ischeck']) { //写Cookie $s = $king->user->userLogin($userid, $data['expire']); $array = array('<a href="/">' . $king->lang->get('portal/user/return/home') . '</a>', '<a href="index.php">' . $king->lang->get('portal/user/return/uc') . '</a>'); if ($data['re']) { $array[] = '<a href="' . $data['re'] . '">' . $king->lang->get('portal/user/return/re') . ' : ' . $data['re'] . '</a>'; $goto = $data['re']; } else { $goto = $king->config('inst') . 'user/index.php'; } $s .= kc_htm_ol($king->lang->get('portal/user/loginok'), $array, $goto); } $tmp = new KC_Template_class($king->config('templateuser', 'user'), $king->config('templatepath') . '/inside/user/login.htm'); $tmp->assign('main', $s); $tmp->assign('title', $king->lang->get('portal/title/login')); echo $tmp->output(); }
/** 添加/编辑碎片 */ function king_ajax_edt() { global $king; $king->access('dbquery_edt'); $kid = kc_get('kid', 2); $sql = "kid,kname,ntype,dbhost,dbname,dbfile,dbuser,dbpass,dbcharset"; $array_sql = explode(',', $sql); if ($GLOBALS['ismethod'] || empty($kid) || kc_post('reset') == 1) { //若kid为空,则添加 $data = $_POST; if (!$GLOBALS['ismethod']) { //预置项 $data['ntype'] = isset($_POST['ntype']) ? $_POST['ntype'] : 1; } } else { //编辑数据,从数据库读出 if (!($data = $king->db->getRows_one("select {$sql} from %s_dbquery where kid={$kid} limit 1"))) { kc_error($king->lang->get('system/error/notrecord')); } } $data = kc_data($array_sql, $data); //ntype $array_type = array(1 => 'MySQL', 2 => 'SQLite'); $exp = " onClick=\"\$('#ntype').val(\$(this).val());setTimeout('\$.kc_ajax({URL:\\'../dbquery/manage.php\\',CMD:\\'edt\\',IS:1,METHOD:\\'GET\\',kid:\\'{$kid}\\',reset:1})',50)\" "; $s = $king->htmForm($king->lang->get('dbquery/label/type'), kc_htm_radio('ntype_show', $array_type, $data['ntype'], $exp)); $s .= kc_htm_hidden(array('ntype' => $data['ntype'])); //kname $array = array(array('kname', 0, 1, 50)); //验证重复值 if (empty($kid)) { $array[] = array('kname', 12, $king->lang->get('dbquery/error/name'), $king->db->getRows_one("select kid from %s_dbquery where kname='" . $king->db->escape($data['kname']) . "'")); } else { $array[] = array('kname', 12, $king->lang->get('dbquery/error/name'), $king->db->getRows_one("select kid from %s_dbquery where kname='" . $king->db->escape($data['kname']) . "' and kid<>{$kid}")); } $s .= $king->htmForm($king->lang->get('dbquery/label/name'), kc_htm_input('kname', $data['kname'], 50, 200), $array); if ($data['ntype'] == 1) { //mysql //dbhost $array = array(array('dbhost', 0, 1, 50)); $s .= $king->htmForm($king->lang->get('dbquery/label/dbhost'), kc_htm_input('dbhost', $data['dbhost'], 50, 400), $array); //dbname $array = array(array('dbname', 0, 1, 50)); $s .= $king->htmForm($king->lang->get('dbquery/label/dbname'), kc_htm_input('dbname', $data['dbname'], 50, 400), $array); //dbuser $array = array(array('dbuser', 0, 1, 50)); $s .= $king->htmForm($king->lang->get('dbquery/label/dbuser'), kc_htm_input('dbuser', $data['dbuser'], 50, 200), $array); //dbpass $array = array(array('dbpass', 0, 0, 50)); $s .= $king->htmForm($king->lang->get('dbquery/label/dbpass'), kc_htm_input('dbpass', $data['dbpass'], 50, 200), $array); //dbcharset $array = array(array('dbcharset', 0, 0, 50)); $array_charset = array('UTF-8' => 'UTF-8', 'GBK' => 'GBK'); $s .= $king->htmForm($king->lang->get('dbquery/label/dbcharset'), kc_htm_select('dbcharset', $array_charset, $data['dbcharset']), $array); $height = 340; } else { //dbfile $array = array(array('dbfile', 0, 4, 50), array('dbfile', 12, $king->lang->get('dbquery/error/dbfile'), !is_file(ROOT . $data['dbfile']))); $s .= $king->htmForm($king->lang->get('dbquery/label/dbfile'), kc_htm_input('dbfile', $data['dbfile'], 50, 400), $array); $height = 160; } if ($GLOBALS['ischeck']) { if ($data['ntype'] == 1) { $array = array('ntype' => 1, 'kname' => $data['kname'], 'dbhost' => $data['dbhost'], 'dbname' => $data['dbname'], 'dbuser' => $data['dbuser'], 'dbpass' => $data['dbpass'], 'dbcharset' => $data['dbcharset']); } else { $array = array('ntype' => 2, 'kname' => $data['kname'], 'dbfile' => $data['dbfile']); } if (empty($kid)) { //insert $array['norder'] = $king->db->neworder('%s_dbquery'); $king->db->insert('%s_dbquery', $array); } else { $king->db->update('%s_dbquery', $array, "kid={$kid}"); } $king->cache->del("dbquery/info/{$data['kname']}"); kc_ajax('OK', "<p class=\"k_ok\">" . $king->lang->get('system/ok/' . (empty($kid) ? 'add' : 'edt')) . "</p>", 1); } $tit = $king->lang->get('dbquery/title/' . (empty($kid) ? 'add' : 'edt')); $but = kc_htm_a($king->lang->get("system/common/" . (empty($kid) ? 'add' : 'edit')), "{URL:'../dbquery/manage.php',CMD:'edt',kid:'{$kid}',IS:1}"); kc_ajax($tit, $s, $but, '', 440, $height + $GLOBALS['check_num'] * 15); }
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); }
/** 添加/编辑碎片 */ function king_edt() { global $king; $king->access('block_edt'); $kid = kc_get('kid', 2); $sql = "kid,kname,kcontent,ntype,bid"; if (!($res = $king->db->getRows("select {$sql} from %s_block where kid={$kid}"))) { $res = array(); } $array_type = array(1 => $king->lang->get('block/common/list'), 2 => $king->lang->get('block/common/model'), 3 => $king->lang->get('block/common/site')); if (empty($kid)) { //add $s = $king->openForm('', $king->lang->get('block/th/add'), 'block_add'); $s .= $king->htmForm($king->lang->get('block/label/name'), kc_htm_input('kname', '', 100, 400)); $s .= $king->htmForm($king->lang->get('block/label/content'), kc_htm_textarea('kcontent')); $s .= $king->htmForm(null, kc_htm_button($king->lang->get('system/common/add'), "\$.kc_ajax({CMD:'edt',FORM:'block_add'});", 1)); $s .= $king->closeForm('none'); } else { //edit if (!($rs = $king->db->getRows_one("select {$sql} from %s_block where kid={$kid} order by norder asc"))) { kc_error($king->lang->get('system/error/notrecord')); } $s = $king->openForm('', $king->lang->get('block/th/default'), 'block_edt'); $but = " <input type=\"button\" value=\"" . $king->lang->get('system/common/up') . "\" onClick=\"\$.kc_ajax({CMD:'edt',kid:{$kid},FORM:'block_edt'});\" />"; $s .= $king->htmForm($king->lang->get('block/label/name'), kc_htm_input('kname', $rs['kname'], 100, 400) . $but); $s .= $king->htmForm($king->lang->get('block/label/content'), kc_htm_textarea('kcontent', $rs['kcontent'])); $s .= $king->closeForm('none'); if (!($res = $king->db->getRows("select {$sql} from %s_block where kid1={$kid} order by norder desc"))) { $res = array(); } foreach ($res as $i => $rs) { $s .= $king->openForm('', '', 'block_bind_' . $i); $b = kc_htm_select('ntype', $array_type, $rs['ntype']); $b .= " <span><label>" . $king->lang->get('block/label/bid') . "</label></span>"; $b .= kc_htm_input('bid', $rs['bid'], 10, 50); $b .= " <input type=\"button\" value=\"" . $king->lang->get('system/common/up') . "\" onClick=\"\$.kc_ajax({CMD:'bind_edt',kid:{$rs['kid']},kid1:{$kid},FORM:'block_bind_{$i}'});\" />"; $s .= $king->htmForm($king->lang->get('block/label/bind'), $b); $s .= $king->htmForm($king->lang->get('block/label/content'), kc_htm_textarea('kcontent', $rs['kcontent'])); $s .= $king->closeForm('none'); } //添加 $s .= $king->openForm('', $king->lang->get('block/th/bindadd'), 'block_bind_edt'); $b = kc_htm_select('ntype', $array_type, 1); $b .= " <span><label>" . $king->lang->get('block/label/bid') . "</label></span>"; $b .= kc_htm_input('bid', '', 10, 50); $b .= kc_help('block/help/bind'); $s .= $king->htmForm($king->lang->get('block/label/bind'), $b); $s .= $king->htmForm($king->lang->get('block/label/content'), kc_htm_textarea('kcontent')); $s .= $king->htmForm(null, kc_htm_button($king->lang->get('system/common/add'), "\$.kc_ajax({CMD:'bind_edt',FORM:'block_bind_edt',kid1:{$kid}});", 1)); $s .= $king->closeForm('none'); } list($left, $right) = inc_menu(); $king->skin->output($king->lang->get('block/title/center'), $left, $right, $s); }
/** 把字符串写入文件,返回是否成功 @param string $filename 要写入的文件地址,相对于安装目录 @param string $s 要写入的文本内容 @param bool $is 当写入失败的时候,是否提示错误,默认为不提示 @return bool */ function kc_f_put_contents($filename, $s, $is = false) { global $king; $filename = kc_f_iconv($filename, 1); kc_f_md(dirname($filename)); //创建目录 //去掉bom if (substr($s, 0, 3) == pack("CCC", 0xef, 0xbb, 0xbf)) { $s = substr($s, 3); } kc_runtime('putContent'); $strlen = @file_put_contents(ROOT . $filename, $s, LOCK_EX); kc_runtime('putContent', 1); if (is_int($strlen)) { //写入成功 return true; } else { //写入失败 if ($is) { kc_error($king->lang->get('system/error/putcontents') . '<br/>' . $filename); } } }
function king_lnkedt() { global $king; $king->access('#lnk'); $kid = kc_get('kid', 2); $adminid = kc_get('adminid', 2) ? kc_get('adminid', 2, 1) : $king->admin['adminid']; //当提交过来的adminid和当前管理员id不同的时候,验证管理员的级别 if ($adminid != $king->admin['adminid']) { $king->access('admin'); } $sql = 'kname,ktitle,kpath,adminid,kimage,isblank,konclick,isflo'; if ($GLOBALS['ismethod'] || $kid == '') { //POST过程或新添加的过程 $data = $_POST; if (!$GLOBALS['ismethod']) { //初始化新添加的数据 $data['kimage'] = 'lnk.gif'; $data['adminid'] = $adminid; } } else { if (!($data = $king->db->getRows_one("select {$sql} from %s_lnk where kid={$kid} limit 1;"))) { kc_error($king->lang->get('system/error/param') . '<br/>File:' . basename(__FILE__) . ';Line:' . __LINE__); } } $fields = explode(',', $sql); $data = kc_data($fields, $data); $s = $king->openForm('manage.php?action=lnkedt'); //kname $_array = array(array('kname', 0, 1, 20)); $s .= $king->htmForm($king->lang->get('system/lnk/kname') . ' (1-20)', '<input class="k_in w200" type="text" name="kname" value="' . htmlspecialchars($data['kname']) . '" maxlength="20" />', $_array); //ktitle $_array = array(array('ktitle', 0, 0, 100)); $s .= $king->htmForm($king->lang->get('system/lnk/ktitle') . ' (0-100)', '<input class="k_in w400" type="text" name="ktitle" value="' . htmlspecialchars($data['ktitle']) . '" maxlength="100" />', $_array); //kpath $_array = array(array('kpath', 0, 1, 100)); $s .= $king->htmForm($king->lang->get('system/lnk/kpath') . ' (1-100)', '<input class="k_in w400" type="text" name="kpath" value="' . htmlspecialchars($data['kpath']) . '" maxlength="100" />', $_array); //konclick $_array = array(array('konclick', 0, 0, 255)); $s .= $king->htmForm($king->lang->get('system/lnk/konclick') . ' (0-255)', '<input class="k_in w400" type="text" name="konclick" value="' . htmlspecialchars($data['konclick']) . '" maxlength="255" />', $_array); //isblank&isflo $array_blank = array(1 => $king->lang->get('system/lnk/blank')); $array_flo = array(1 => $king->lang->get('system/lnk/flo')); $s .= $king->htmForm($king->lang->get('system/lnk/attrib'), kc_htm_checkbox('isblank', $array_blank, $data['isblank']) . kc_htm_checkbox('isflo', $array_flo, $data['isflo'])); //kimage $_array = array(array('kimage', 0, 1, 100)); $array = kc_f_getdir('system/images/lnk', 'gif|png|jpg'); $image = '<div id="lnksel"><p>'; $i = 1; foreach ($array as $val) { $image .= '<a href="javascript:;" onclick="$(\'#kimage\').val(\'' . $val . '\');lnksel();"><img src="images/lnk/' . $val . '"/></a>'; if ($i++ == 6) { $image .= '</p><p>'; $i = 1; } } $image .= '</p></div>'; $s .= $king->htmForm($king->lang->get('system/lnk/image'), '<table class="k_side" cellspacing="0"><tr><td><img src="images/lnk/' . htmlspecialchars($data['kimage']) . '" id="klnkimage"/></td><td>' . $image . '</td></tr></table>', $_array, null, kc_help('system/help/lnkimg')); $s .= kc_htm_hidden(array('adminid' => $data['adminid'], 'kimage' => htmlspecialchars($data['kimage']), 'kid' => $kid)); $s .= '<script>function lnksel(){var kimage=$(\'#kimage\').val();$(\'#klnkimage\').attr(\'src\',\'images/lnk/\'+kimage);}</script>'; $s .= $king->closeForm('save'); if ($GLOBALS['ischeck']) { // $sql='kname,ktitle,kpath,adminid,kimage,isblank,konclick,isflo'; $array = array(); foreach ($fields as $val) { $array[$val] = $data[$val]; } $_array = array('isblank', 'isflo'); foreach ($_array as $val) { $array[$val] = $data[$val] ? 1 : 0; } if ($kid) { //update $king->db->update('%s_lnk', $array, "kid={$kid}"); $nlog = 7; } else { //insert $array['norder'] = $king->db->neworder('%s_lnk', "adminid={$data['adminid']}"); $nlog = 5; $king->db->insert('%s_lnk', $array); } $king->cache->del('system/lnk/' . $data['adminid']); $king->cache->del('system/lnk/flo_' . $data['adminid']); //写log $king->log($nlog, $data['kname']); kc_goto($king->lang->get('system/goto/is'), 'manage.php?action=lnkedt&adminid=' . $data['adminid'], 'manage.php?action=lnk&adminid=' . $data['adminid']); } $king->skin->output($king->lang->get('system/title/lnk'), king_inc_lnk_left(), '', $s); }
/** 上传付款凭证 */ function king_bank() { global $king; $oid = kc_get('oid', 2, 1); if (!($rs = $king->db->getRows_one("select ono,kname,nnumber,ntotal,kfeedback,eid,nexpress,userid,nstatus from %s_orders where oid={$oid}"))) { kc_error($king->lang->get('system/error/param')); } if ($rs['userid'] > 0) { $king->Load('user'); $king->user->access(); //如果有记录用户,则做登录验证 if ($king->user->userid != $rs['userid']) { $king->portal->error($king->lang->get('system/common/error'), $king->lang->get('portal/error/cart')); } } if ((int) $rs['nstatus'] !== 2) { $king->portal->error($king->lang->get('system/common/error'), $king->lang->get('portal/error/status')); } $s = '<table class="k_table_list" cellspacing="0">'; $s .= '<caption>' . $king->lang->get('portal/cart/prodinfo') . '</caption>'; $s .= '<tr><th class="w150">' . $king->lang->get('portal/cart/youorders') . '</th><td><strong class="red">' . $rs['ono'] . '</strong></td>'; $s .= '<th>' . $king->lang->get('portal/cart/prodname') . '</th><td>' . $rs['kname'] . '</td></tr>'; $s .= '<tr><th>' . $king->lang->get('portal/cart/total') . '</th><td>' . $rs['nnumber'] . '件</td>'; $s .= '<th>' . $king->lang->get('portal/cart/alltotal') . '</th><td>' . number_format($rs['ntotal'], 2) . '</td></tr>'; $s .= '</table>'; if ($_FILES) { $ext = strtolower(kc_f_ext($_FILES['bankfile']['name'])); kc_f_md($king->config('uppath') . "/orders"); if (!in_array($ext, array('jpg', 'jpeg'))) { $s .= '<p class="k_error">' . $king->lang->get('portal/error/ext') . '</p>'; //提示文件类型不正确 $s .= '<p><a href="cart.php?action=bank&oid=' . $oid . '">' . $king->lang->get('portal/cart/reup') . '</a></p>'; } elseif (move_uploaded_file($_FILES['bankfile']['tmp_name'], ROOT . $king->config('uppath') . "/orders/{$oid}.jpg")) { $s .= '<p>' . $king->lang->get('portal/cart/upok') . '</p>'; $array = array('paymethod' => 'bank'); $king->db->update('%s_orders', $array, "oid={$oid}"); } else { $s .= '<p class="k_error">' . $king->lang->get('portal/error/upbank') . '</p>'; } } else { $s .= $king->openForm('cart.php?action=bank', null, 1); $s .= '<p>' . $king->lang->get('portal/cart/bankmemo') . '</p>'; $s .= '<p>' . $king->lang->get('portal/cart/bankmemo1') . '</p>'; $s .= $king->htmForm($king->lang->get('portal/cart/upbank'), "<input type=\"file\" name=\"bankfile\" class=\"k_in w400\" />"); $hide = array('oid' => $oid, 'MAX_FILE_SIZE' => 204800); $s .= kc_htm_hidden($hide); $s .= $king->closeForm($king->lang->get('system/common/upfile')); } $tmp = new KC_Template_class($king->config('templateorders', 'portal')); $tmp->assign('oid', $oid); $tmp->assign('title', $king->lang->get('portal/cart/upbank')); $tmp->assign('nav', $king->lang->get('portal/cart/upbank')); $tmp->assign('type', 'edit'); $tmp->assign('inside', $s); echo $tmp->output(); }
function king_ajax_config() { global $king; //dbtype $dbtype = kc_post('dbtype'); if (!in_array($dbtype, array('mysql', 'sqlite'))) { kc_error($king->lang->get('system/install/dbtypeerr')); } //licensed $license = kc_post('license'); if ($license != 1) { kc_error($king->lang->get('system/install/licenseerr')); } $host = kc_post('host'); $data = kc_post('data'); $user = kc_post('user'); $pass = kc_post('pass'); $sqlitedata = kc_post('sqlitedata'); //验证 if ($dbtype == 'mysql') { //host if (!kc_validate($host, '/^[A-Za-z0-9\\.\\:\\/]+$/')) { kc_error($king->lang->get('system/install/ckhost')); } //data if (!kc_validate($data, '/^[A-Za-z0-9\\-\\_]+$/')) { kc_error($king->lang->get('system/install/ckdata')); } //user if (!kc_validate($user, '/^[A-Za-z0-9\\-\\_]+$/')) { kc_error($king->lang->get('system/install/ckuser')); } } else { //sqlitedata if (!kc_validate($sqlitedata, '/^[A-Za-z0-9\\-\\_\\.]+$/')) { kc_error($king->lang->get('system/install/ckdata')); } } //pre $pre = kc_post('pre'); if (!kc_validate($pre, '/^[A-Za-z0-9\\_]+$/')) { kc_error($king->lang->get('system/install/ckpre')); } //preadmin $preadmin = kc_post('preadmin'); if (!kc_validate($preadmin, '/^[A-Za-z0-9\\_]+$/')) { kc_error($king->lang->get('system/install/ckpreadmin')); } //adminname $adminname = kc_get('adminname', 1, 1); if (strlen($adminname) < 2 || strlen($adminname) > 12) { kc_error($king->lang->get('system/install/ckadminname')); } //adminpass $adminpass = kc_get('adminpass', 0, 1); if (strlen($adminpass) < 6 || strlen($adminname) > 30) { kc_error($king->lang->get('system/install/ckadminpass')); } //cache $cache = kc_post('cache'); if (!kc_validate($cache, '/^[A-Za-z0-9\\_]+$/')) { kc_error($king->lang->get('system/install/ckcache')); } //inst $inst = kc_post('inst'); //timediff $timediff = kc_get('timediff', 2, 1); //debug $debug = kc_post('debug') == 1 ? 'True' : 'False'; //isdelete $isdelete = kc_post('isdelete') == 1 ? 1 : 0; $s = kc_f_get_contents('config.php'); $s = preg_replace("%(define\\('DB_TYPE',')([A-Za-z]+)('\\))%s", "\${1}{$dbtype}\${3}", $s); $s = preg_replace("%(define\\('DB_PRE',')([A-Za-z0-9\\_]*)('\\))%s", "\${1}{$pre}\${3}", $s); $s = preg_replace("%(define\\('KC_DB_ADMIN',')([A-Za-z0-9\\_]*)('\\))%s", "\${1}{$preadmin}\${3}", $s); //sqlite $s = preg_replace("%(define\\('DB_SQLITE',')([A-Za-z0-9\\-\\_\\.\\/]+)('\\))%s", "\${1}{$sqlitedata}\${3}", $s); //mysql $s = preg_replace("%(define\\('DB_HOST',')([A-Za-z0-9\\.\\:\\/]+)('\\))%s", "\${1}{$host}\${3}", $s); $s = preg_replace("%(define\\('DB_DATA',')([A-Za-z0-9\\-\\_]+)('\\))%s", "\${1}{$data}\${3}", $s); $s = preg_replace("%(define\\('DB_USER',')([A-Za-z0-9\\-\\_]+)('\\))%s", "\${1}{$user}\${3}", $s); $s = preg_replace("%(define\\('DB_PASS',')([^']*)('\\))%s", "\${1}{$pass}\${3}", $s); $s = preg_replace("%(define\\('PATH_CACHE',')([A-Za-z0-9\\_]*)('\\))%s", "\${1}{$cache}\${3}", $s); $s = preg_replace("%(define\\('DEBUG',)(True|False)(\\))%s", "\${1}{$debug}\${3}", $s); if (kc_f_put_contents('config.php', $s)) { //写入成功 $js = "\$.kc_ajax('{CMD:\\'install\\',adminname:\\'{$adminname}\\',adminpass:\\'{$adminpass}\\',timediff:\\'{$timediff}\\',inst:\\'{$inst}\\',isdelete:\\'{$isdelete}\\'}')"; kc_ajax('OK', "<p class=\"k_ok\">" . $king->lang->get('system/install/crtdb') . "</p>", "<a href=\"javascript:;\">" . $king->lang->get('system/common/cancel') . "</a>", $js); } else { kc_error($king->lang->get('system/install/puterror')); } //写config.php,并输出ajax执行程序,进入下一步install }
/** 编辑文本 */ function king_ajax_edit() { global $king; $king->access('webftp_edit'); $path = kc_post('path'); $ext = kc_f_ext($path); switch ($ext) { case 'html': $code = 'html'; break; case 'htm': $code = 'html'; break; case 'shtml': $code = 'html'; break; case 'shtm': $code = 'html'; break; case 'css': $code = 'css'; break; case 'js': $code = 'js'; break; case 'php': $code = 'php'; break; case 'php3': $code = 'php'; break; case 'php4': $code = 'php'; break; case 'sql': $code = 'sql'; break; case 'xml': $code = 'xml'; break; default: $code = ''; } if (isset($_POST['webftpcontent'])) { //写文件 kc_f_put_contents($path, $_POST['webftpcontent'], 1); kc_ajax('OK', "<p class=\"k_ok\">" . $king->lang->get('system/ok/save') . "</p>"); } if (!kc_f_isfile($path)) { kc_error($king->lang->get('system/error/notfile')); } $content = kc_f_get_contents($path); $js = "editAreaLoader.init({\r\n\t\t\tid: \"webftpcontent\"\r\n\t\t\t,start_highlight: " . (strlen($content) > 10240 ? 'false' : 'true') . "\r\n\t\t\t,allow_resize: \"both\"\r\n\t\t\t,allow_toggle: false\r\n\t\t\t,word_wrap: true\r\n\t\t\t,language: \"en\"\r\n\t\t\t,syntax: \"php\"\r\n\t\t});"; $s = "<textarea id=\"webftpcontent\" name=\"webftpcontent\" rows=\"15\" cols=\"80\" style=\"width:870px;height:420px\">"; $s .= htmlspecialchars($content); $s .= "</textarea>"; $but = kc_htm_a($king->lang->get('system/common/save'), "{CMD:'edit',IS:1,path:'{$path}'}"); kc_ajax($king->lang->get('system/common/edit') . ' : ' . $path, $s, $but, $js, 900, 450); }