Esempio n. 1
0
 /**
  * 用户登录及权限验证
  * @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;
 }
Esempio n. 2
0
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);
    }
}
Esempio n. 3
0
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);
}
Esempio n. 4
0
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);
}
Esempio n. 5
0
 /**
 	从文件中读取创建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);
     }
 }
Esempio n. 6
0
 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;
 }
Esempio n. 7
0
/**
	编辑
*/
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);
}
Esempio n. 8
0
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);
}
Esempio n. 9
0
 /**
 	链接服务器&选择数据库
 	@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;
 }
Esempio n. 10
0
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>");
        //添加成功后返回的地址
    }
}
Esempio n. 11
0
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'));
    }
}
Esempio n. 12
0
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 签名错误!');
    }
}
Esempio n. 13
0
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);
}
Esempio n. 14
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);
}
Esempio n. 15
0
 /**
 	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);
 }
Esempio n. 16
0
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);
}
Esempio n. 17
0
 /**
 	返回记录集
 	@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;
 }
Esempio n. 18
0
 /**
 	对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;
 }
Esempio n. 19
0
/**
	编辑详细信息
*/
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);
}
Esempio n. 20
0
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);
}
Esempio n. 21
0
 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);
     }
 }
Esempio n. 22
0
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();
}
Esempio n. 23
0
/**
	添加/编辑碎片
*/
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);
}
Esempio n. 24
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);
}
Esempio n. 25
0
/**
	添加/编辑碎片
*/
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);
}
Esempio n. 26
0
/**
	把字符串写入文件,返回是否成功
	@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);
        }
    }
}
Esempio n. 27
0
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);
}
Esempio n. 28
0
/**
	上传付款凭证
*/
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();
}
Esempio n. 29
0
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
}
Esempio n. 30
0
/**
	编辑文本
*/
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);
}