diff --git a/module/article/admin/index.html b/module/article/admin/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/article/admin/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/article/admin/index.inc.php b/module/article/admin/index.inc.php
new file mode 100644
index 0000000..bc6940c
--- /dev/null
+++ b/module/article/admin/index.inc.php
@@ -0,0 +1,243 @@
+ 9 ? " AND level>0" : " AND level=$level";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+ if($thumb) $condition .= " AND thumb<>''";
+ if($link) $condition .= " AND islink>0";
+ if($guest) $condition .= " AND username=''";
+ if($ip) $condition .= " AND ip='$ip'";
+ if($username) $condition .= " AND username='$username'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+
+ $timetype = strpos($dorder[$order], 'edit') === false ? 'add' : '';
+}
+switch($action) {
+ case 'add':
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ $do->add($post);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ if($MOD['show_html'] && $post['status'] > 2) $do->tohtml($do->itemid);
+ dmsg('添加成功', '?moduleid='.$moduleid.'&action='.$action.'&catid='.$post['catid']);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $content = '';
+ $status = 3;
+ $addtime = timetodate($DT_TIME);
+ $username = $_username;
+ $item = array();
+ $menuid = 0;
+ isset($url) or $url = '';
+ if($url) {
+ $tmp = fetch_url($url);
+ if($tmp) extract($tmp);
+ }
+ $pagebreak = 0;
+ $history = 0;
+ include tpl('edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ $item = $do->get_one();
+ extract($item);
+ $history = history($moduleid, $itemid);
+ $pagebreak = strpos($item['content'], 'de-pagebreak') === false ? 0 : 1;
+ $addtime = timetodate($addtime);
+ $menuon = array('5', '4', '2', '1', '3');
+ $menuid = $menuon[$status];
+ include tpl($action, $module);
+ }
+ break;
+ case 'move':
+ if($submit) {
+ $fromids or msg('请填写来源ID');
+ if($tocatid) {
+ $db->query("UPDATE {$table} SET catid=$tocatid WHERE `{$fromtype}` IN ($fromids)");
+ dmsg('移动成功', $forward);
+ } else {
+ msg('请选择目标分类');
+ }
+ } else {
+ $itemid = $itemid ? implode(',', $itemid) : '';
+ $menuid = 6;
+ include tpl($action);
+ }
+ break;
+ case 'update':
+ is_array($itemid) or msg('请选择'.$MOD['name']);
+ foreach($itemid as $v) {
+ $do->update($v);
+ }
+ dmsg('更新成功', $forward);
+ break;
+ case 'tohtml':
+ is_array($itemid) or msg('请选择'.$MOD['name']);
+ $html_itemids = $itemid;
+ foreach($html_itemids as $itemid) {
+ tohtml('show', $module);
+ }
+ dmsg('生成成功', $forward);
+ break;
+ case 'delete':
+ $itemid or msg('请选择'.$MOD['name']);
+ isset($recycle) ? $do->recycle($itemid) : $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'restore':
+ $itemid or msg('请选择'.$MOD['name']);
+ $do->restore($itemid);
+ dmsg('还原成功', $forward);
+ break;
+ case 'clear':
+ $do->clear();
+ dmsg('清空成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择'.$MOD['name']);
+ $level = intval($level);
+ $do->level($itemid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ case 'recycle':
+ $lists = $do->get_list('status=0'.$condition, $dorder[$order]);
+ $menuid = 5;
+ include tpl('index', $module);
+ break;
+ case 'reject':
+ if($itemid && !$psize) {
+ $do->reject($itemid);
+ dmsg('拒绝成功', $forward);
+ } else {
+ $lists = $do->get_list('status=1'.$condition, $dorder[$order]);
+ $menuid = 4;
+ include tpl('index', $module);
+ }
+ break;
+ case 'expire':
+ if(isset($refresh)) {
+ $db->query("UPDATE {$table} SET status=3 WHERE status=4 AND addtime<$DT_TIME");
+ dmsg('刷新成功', $forward);
+ } else {
+ $lists = $do->get_list('status=4'.$condition);
+ $menuid = 3;
+ include tpl('index', $module);
+ }
+ break;
+ case 'check':
+ if($itemid && !$psize) {
+ $do->check($itemid);
+ dmsg('审核成功', $forward);
+ } else {
+ $lists = $do->get_list('status=2'.$condition, $dorder[$order]);
+ $menuid = 2;
+ include tpl('index', $module);
+ }
+ break;
+ case 'author':
+ $condition = "status=3";
+ if($keyword) $condition .= " AND `author` LIKE '%$keyword%'";
+ $lists = array();
+ $result = $db->query("SELECT COUNT(`author`) AS num,author FROM {$table} WHERE $condition GROUP BY `author` ORDER BY num DESC LIMIT 0,50");
+ $lists[]['author'] = '本站原创';
+ $lists[]['author'] = '佚名';
+ while($r = $db->fetch_array($result)) {
+ if(!$r['author']) continue;
+ $lists[] = $r;
+ }
+ include tpl('author', $module);
+ break;
+ case 'from':
+ $condition = "status=3";
+ if($keyword) $condition .= " AND (`copyfrom` LIKE '%$keyword%' OR `fromurl` LIKE '%$keyword%')";
+ $lists = array();
+ $result = $db->query("SELECT COUNT(`copyfrom`) AS num,copyfrom,fromurl FROM {$table} WHERE $condition GROUP BY `copyfrom` ORDER BY num DESC LIMIT 0,50");
+ while($r = $db->fetch_array($result)) {
+ if(!$r['copyfrom']) continue;
+ $lists[] = $r;
+ }
+ include tpl('from', $module);
+ break;
+ default:
+ $lists = $do->get_list('status=3'.$condition, $dorder[$order]);
+ $menuid = 1;
+ include tpl('index', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/article/admin/install.inc.php b/module/article/admin/install.inc.php
new file mode 100644
index 0000000..f8809d9
--- /dev/null
+++ b/module/article/admin/install.inc.php
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/module/article/admin/remkdir.inc.php b/module/article/admin/remkdir.inc.php
new file mode 100644
index 0000000..ebd2769
--- /dev/null
+++ b/module/article/admin/remkdir.inc.php
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/module/article/admin/template/author.tpl.php b/module/article/admin/template/author.tpl.php
new file mode 100644
index 0000000..48f3ac5
--- /dev/null
+++ b/module/article/admin/template/author.tpl.php
@@ -0,0 +1,32 @@
+
+
+
+
+作者列表
+
+$v) {
+ if($k%5==0) { echo '';}
+?>
+
+';}
+}
+?>
+
+
+
\ No newline at end of file
diff --git a/module/article/admin/template/edit.tpl.php b/module/article/admin/template/edit.tpl.php
new file mode 100644
index 0000000..927f1b1
--- /dev/null
+++ b/module/article/admin/template/edit.tpl.php
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+
+
+
+
+单页采编
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/article/admin/template/from.tpl.php b/module/article/admin/template/from.tpl.php
new file mode 100644
index 0000000..f27e70b
--- /dev/null
+++ b/module/article/admin/template/from.tpl.php
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+来源
+网址
+选择
+
+$v) { ?>
+
+
+
+[选择]
+
+
+
+
+
\ No newline at end of file
diff --git a/module/article/admin/template/html.tpl.php b/module/article/admin/template/html.tpl.php
new file mode 100644
index 0000000..339891c
--- /dev/null
+++ b/module/article/admin/template/html.tpl.php
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/article/admin/template/index.html b/module/article/admin/template/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/article/admin/template/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/article/admin/template/setting.tpl.php b/module/article/admin/template/setting.tpl.php
new file mode 100644
index 0000000..a2e50b8
--- /dev/null
+++ b/module/article/admin/template/setting.tpl.php
@@ -0,0 +1,520 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/article/admin/uninstall.inc.php b/module/article/admin/uninstall.inc.php
new file mode 100644
index 0000000..7c6acf7
--- /dev/null
+++ b/module/article/admin/uninstall.inc.php
@@ -0,0 +1,5 @@
+query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_data_".$moduleid."`");
+?>
\ No newline at end of file
diff --git a/module/article/common.inc.php b/module/article/common.inc.php
new file mode 100644
index 0000000..3f748b1
--- /dev/null
+++ b/module/article/common.inc.php
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/module/article/global.func.php b/module/article/global.func.php
new file mode 100644
index 0000000..7ca7b97
--- /dev/null
+++ b/module/article/global.func.php
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/module/article/index.htm.php b/module/article/index.htm.php
new file mode 100644
index 0000000..3d20bae
--- /dev/null
+++ b/module/article/index.htm.php
@@ -0,0 +1,43 @@
+get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].'index.php?page={destoon_page}');
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ if(!$r['islink']) $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put(str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename), $data);
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/article/index.html b/module/article/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/article/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/article/index.inc.php b/module/article/index.inc.php
new file mode 100644
index 0000000..c447759
--- /dev/null
+++ b/module/article/index.inc.php
@@ -0,0 +1,40 @@
+ 1 ? 'index.php?page='.$page : '');
+} else {
+ $condition = "status=3";
+ if($cityid) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize);
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ if(!$r['islink']) $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+}
+$seo_file = 'index';
+include DT_ROOT.'/include/seo.inc.php';
+include template($MOD['template_index'] ? $MOD['template_index'] : 'index', $module);
+?>
\ No newline at end of file
diff --git a/module/article/list.inc.php b/module/article/list.inc.php
new file mode 100644
index 0000000..51e8184
--- /dev/null
+++ b/module/article/list.inc.php
@@ -0,0 +1,89 @@
+count($table, $condition, $CFG['db_expires']);
+ } else {
+ if($page == 1) {
+ $items = $db->count($table, $condition, $CFG['db_expires']);
+ if($items != $CAT['item']) {
+ $CAT['item'] = $items;
+ $db->query("UPDATE {$DT_PRE}category SET item=$items WHERE catid=$catid");
+ }
+ } else {
+ $items = $CAT['item'];
+ }
+ }
+ $pagesize = $MOD['pagesize'];
+ $offset = ($page-1)*$pagesize;
+ $pages = listpages($CAT, $items, $page, $pagesize);
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ if(!$r['islink']) $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ $showpage = 1;
+ $datetype = 3;
+ $cols = 5;
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].listurl($CAT, $page > 1 ? $page : 0);
+} else {
+ if(!$CAT || $CAT['moduleid'] != $moduleid) message($L['msg_not_cate']);
+ if(!check_group($_groupid, $MOD['group_list']) || !check_group($_groupid, $CAT['group_list'])) message($L['msg_no_right']);
+ $condition = "status=3";
+ $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($cityid) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($CAT, '{destoon_page}'));
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ if(!$r['islink']) $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid;
+ }
+ if($CAT['parentid']) $PCAT = get_cat($CAT['parentid']);
+ $head_title = $head_name = $CAT['catname'];
+}
+$seo_file = 'list';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $CAT['template'] ? $CAT['template'] : ($MOD['template_list'] ? $MOD['template_list'] : 'list');
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/article/my.inc.php b/module/article/my.inc.php
new file mode 100644
index 0000000..0e92ef5
--- /dev/null
+++ b/module/article/my.inc.php
@@ -0,0 +1,223 @@
+get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND status>1");
+ $limit_used = $r['num'];
+ $limit_free = $mod_limit > $limit_used ? $mod_limit - $limit_used : 0;
+}
+switch($action) {
+ case 'add':
+ if($mod_limit && $limit_used >= $mod_limit) dalert(lang($L['info_limit'], array($mod_limit, $limit_used)), $_userid ? '?mid='.$mid : '?action=index');
+ if($MG['hour_limit']) {
+ $today = $DT_TIME - 3600;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND addtime>$today");
+ if($r && $r['num'] >= $MG['hour_limit']) dalert(lang($L['hour_limit'], array($MG['hour_limit'])), $_userid ? '?mid='.$mid : '?action=index');
+ }
+ if($MG['day_limit']) {
+ $today = $DT_TODAY - 86400;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND addtime>$today");
+ if($r && $r['num'] >= $MG['day_limit']) dalert(lang($L['day_limit'], array($MG['day_limit'])), $_userid ? '?mid='.$mid : '?action=index');
+ }
+ if($mod_free_limit >= 0) {
+ $fee_add = ($MOD['fee_add'] && (!$MOD['fee_mode'] || !$MG['fee_mode']) && $limit_used >= $mod_free_limit && $_userid) ? dround($MOD['fee_add']) : 0;
+ } else {
+ $fee_add = 0;
+ }
+ $fee_currency = $MOD['fee_currency'];
+ $fee_unit = $fee_currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $need_password = $fee_add && $fee_currency == 'money' && $fee_add > $DT['quick_pay'];
+ $need_captcha = $MOD['captcha_add'] == 2 ? $MG['captcha'] : $MOD['captcha_add'];
+ $need_question = $MOD['question_add'] == 2 ? $MG['question'] : $MOD['question_add'];
+ $could_color = check_group($_groupid, $MOD['group_color']) && $MOD['credit_color'] && $_userid;
+
+ if($submit) {
+ if($fee_add && $fee_add > ($fee_currency == 'money' ? $_money : $_credit)) dalert($L['balance_lack']);
+ if($need_password && !is_payword($_username, $password)) dalert($L['error_payword']);
+ if($MG['add_limit']) {
+ $last = $db->get_one("SELECT addtime FROM {$table} WHERE $sql ORDER BY itemid DESC");
+ if($last && $DT_TIME - $last['addtime'] < $MG['add_limit']) dalert(lang($L['add_limit'], array($MG['add_limit'])));
+ }
+ $msg = captcha($captcha, $need_captcha, true);
+ if($msg) dalert($msg);
+ $msg = question($answer, $need_question, true);
+ if($msg) dalert($msg);
+ if(isset($post['islink'])) unset($post['islink']);
+ if($do->pass($post)) {
+ $CAT = get_cat($post['catid']);
+ if(!$CAT || !check_group($_groupid, $CAT['group_add'])) dalert(lang($L['group_add'], array($CAT['catname'])));
+ $post['addtime'] = $post['level'] = $post['fee'] = 0;
+ $post['style'] = $post['template'] = $post['note'] = $post['filepath'] = '';
+ $need_check = $MOD['check_add'] == 2 ? $MG['check'] : $MOD['check_add'];
+ $post['status'] = get_status(3, $need_check);
+ $post['hits'] = 0;
+ $post['username'] = $_username;
+ $post['save_remotepic'] = $MOD['save_remotepic'] ? 1 : 0;
+ $post['clear_link'] = $MOD['clear_link'] ? 1 : 0;
+ $post['introduce_length'] = $MOD['introduce_length'] ? $MOD['introduce_length'] : 0;
+ $post['areaid'] = $cityid;
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($could_color && $color && $_credit > $MOD['credit_color']) {
+ $post['style'] = $color;
+ credit_add($_username, -$MOD['credit_color']);
+ credit_record($_username, -$MOD['credit_color'], 'system', $L['title_color'], '['.$MOD['name'].']'.$post['title']);
+ }
+ $do->add($post);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ if($MOD['show_html'] && $post['status'] > 2) $do->tohtml($do->itemid);
+ if($fee_add) {
+ if($fee_currency == 'money') {
+ money_add($_username, -$fee_add);
+ money_record($_username, -$fee_add, $L['in_site'], 'system', lang($L['credit_record_add'], array($MOD['name'])), 'ID:'.$do->itemid);
+ } else {
+ credit_add($_username, -$fee_add);
+ credit_record($_username, -$fee_add, 'system', lang($L['credit_record_add'], array($MOD['name'])), 'ID:'.$do->itemid);
+ }
+ }
+
+ $msg = $post['status'] == 2 ? $L['success_check'] : $L['success_add'];
+ $js = '';
+ if(isset($post['sync_sina']) && $post['sync_sina']) $js .= sync_weibo('sina', $moduleid, $do->itemid);
+ if($_userid) {
+ set_cookie('dmsg', $msg);
+ $forward = '?mid='.$mid.'&status='.$post['status'];
+ $msg = '';
+ } else {
+ $forward = '?mid='.$mid.'&action=add';
+ }
+ $js .= 'window.onload=function(){parent.window.location="'.$forward.'";}';
+ dalert($msg, '', $js);
+ } else {
+ dalert($do->errmsg, '', ($need_captcha ? reload_captcha() : '').($need_question ? reload_question() : ''));
+ }
+ } else {
+ $_catid = $catid;
+ foreach($do->fields as $v) {
+ $$v = '';
+ }
+ $content = '';
+ $catid = $_catid;
+ $areaid = $cityid;
+ $item = array();
+ }
+ break;
+ case 'edit':
+ $itemid or message();
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['username'] != $_username) message();
+
+ if($MG['edit_limit'] < 0) message($L['edit_refuse']);
+ if($MG['edit_limit'] && $DT_TIME - $item['addtime'] > $MG['edit_limit']*86400) message(lang($L['edit_limit'], array($MG['edit_limit'])));
+
+ if($submit) {
+ if($item['islink']) {
+ $post['islink'] = 1;
+ } else if(isset($post['islink'])) {
+ unset($post['islink']);
+ }
+ if($do->pass($post)) {
+ $CAT = get_cat($post['catid']);
+ if(!$CAT || !check_group($_groupid, $CAT['group_add'])) dalert(lang($L['group_add'], array($CAT['catname'])));
+ $post['addtime'] = timetodate($item['addtime']);
+ $post['level'] = $item['level'];
+ $post['fee'] = $item['fee'];
+ $post['style'] = addslashes($item['style']);
+ $post['template'] = addslashes($item['template']);
+ $post['filepath'] = addslashes($item['filepath']);
+ $post['note'] = addslashes($item['note']);
+ $need_check = $MOD['check_add'] == 2 ? $MG['check'] : $MOD['check_add'];
+ $post['status'] = get_status($item['status'], $need_check);
+ $post['username'] = $_username;
+ $post['hits'] = $item['hits'];
+ $post['save_remotepic'] = $MOD['save_remotepic'] ? 1 : 0;
+ $post['clear_link'] = $MOD['clear_link'] ? 1 : 0;
+ $post['get_introduce'] = $MOD['get_introduce'] ? 1 : 0;
+ $post['introduce_length'] = $MOD['introduce_length'] ? $MOD['introduce_length'] : 0;
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ $do->edit($post);
+ if($post['status'] < 3 && $item['status'] > 2) history($moduleid, $itemid, 'set', $item);
+ set_cookie('dmsg', $post['status'] == 2 ? $L['success_edit_check'] : $L['success_edit']);
+ dalert('', '', 'parent.window.location="'.($post['status'] == 2 ? '?mid='.$moduleid.'&status=2' : $forward).'"');
+ } else {
+ dalert($do->errmsg);
+ }
+ } else {
+ extract($item);
+ }
+ break;
+ case 'delete':
+ $MG['delete'] or message();
+ $itemid or message();
+ $itemids = is_array($itemid) ? $itemid : array($itemid);
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $db->get_one("SELECT username FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['username'] != $_username) message();
+ $do->recycle($itemid);
+ }
+ dmsg($L['success_delete'], $forward);
+ break;
+ default:
+ $status = isset($status) ? intval($status) : 3;
+ in_array($status, array(1, 2, 3)) or $status = 3;
+ $condition = "username='$_username'";
+ $condition .= " AND status=$status";
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($catid) $condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ $timetype = strpos($MOD['order'], 'edit') === false ? 'add' : '';
+ $lists = $do->get_list($condition, $MOD['order']);
+ break;
+}
+if($_userid) {
+ $nums = array();
+ for($i = 1; $i < 4; $i++) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE username='$_username' AND status=$i");
+ $nums[$i] = $r['num'];
+ }
+}
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MODULE[2]['linkurl'], $MODULE[2]['mobile'], $DT_URL);
+} else {
+ $foot = '';
+ if($action == 'add' || $action == 'edit') {
+ //
+ } else {
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ foreach($lists as $k=>$v) {
+ $lists[$k]['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $v['linkurl']);
+ $lists[$k]['date'] = timetodate($v[$time], 5);
+ }
+ $pages = mobile_pages($items, $page, $pagesize);
+ $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : 'my.php');
+ }
+}
+$head_title = lang($L['module_manage'], array($MOD['name']));
+include template($MOD['template_my'] ? $MOD['template_my'] : 'my_'.$module, 'member');
+?>
\ No newline at end of file
diff --git a/module/article/task.inc.php b/module/article/task.inc.php
new file mode 100644
index 0000000..4f99c30
--- /dev/null
+++ b/module/article/task.inc.php
@@ -0,0 +1,87 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3) exit;
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ $currency = $MOD['fee_currency'];
+ $fee_unit = $currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $fee_name = $currency == 'money' ? $DT['money_name'] : $DT['credit_name'];
+ $inner = false;
+ if(check_group($_groupid, $MOD['group_show'])) {
+ if($fee) {
+ $inner = true;
+ if($MG['fee_mode'] && $MOD['fee_mode']) {
+ $user_status = 3;
+ } else {
+ $mid = $moduleid;
+ if($_userid) {
+ $user_status = check_pay($mid, $itemid) ? 3 : 2;
+ } else {
+ $user_status = 0;
+ }
+ }
+ } else {
+ $user_status = 3;
+ }
+ } else {
+ $inner = true;
+ $user_status = $_userid ? 1 : 0;
+ }
+ if($_username && $_username == $item['username']) $user_status = 3;
+ if($inner) {
+ if($user_status == 3 || $user_status == 2) {
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $content = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $content['content'];
+ if($content) {
+ if(strpos($content, 'pagebreak') !== false) {
+ $contents = DC::pagebreak($content);
+ if($contents) {
+ $total = count($contents);
+ $pages = pages($total, $page, 1, $MOD['linkurl'].itemurl($item, '{destoon_page}'));
+ if($pages) $pages = substr($pages, 0, strpos($pages, ''));
+ $content = $contents[$page-1];
+ }
+ }
+ if($content) {
+ if($user_status == 2) $description = DC::description($content, $MOD['pre_view']);
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ $content = DC::format($content, $DT_PC);
+ }
+ }
+ }
+ $content = strip_nr(ob_template('content', 'chip'), true);
+ echo 'Inner("content", \''.$content.'\');';
+ }
+ $update = '';
+ if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+ if($MOD['hits']) echo 'Inner("hits", \''.$item['hits'].'\');';
+ if($MOD['show_html'] && $task_item && $DT_TIME - @filemtime(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl']) > $task_item) tohtml('show', $module);
+} else if($html == 'list') {
+ $catid or exit;
+ if($MOD['list_html'] && $task_list && $CAT) {
+ $num = 1;
+ $totalpage = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $demo = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, '{DEMO}');
+ $fid = $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $page + 1;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $totalpage + 1 - $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ }
+} else if($html == 'index') {
+ if($DT['cache_hits'] && $MOD['hits']) {
+ $file = DT_CACHE.'/hits-'.$moduleid;
+ if($DT_TIME - @filemtime($file.'.dat') > $DT['cache_hits'] || @filesize($file.'.php') > 102400) update_hits($moduleid, $table);
+ }
+ if($MOD['index_html']) {
+ $file = DT_ROOT.'/'.$MOD['moduledir'].'/'.$DT['index'].'.'.$DT['file_ext'];
+ if($DT_TIME - @filemtime($file) > $task_index) tohtml('index', $module);
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/brand/admin/config.inc.php b/module/brand/admin/config.inc.php
new file mode 100644
index 0000000..86900f7
--- /dev/null
+++ b/module/brand/admin/config.inc.php
@@ -0,0 +1,26 @@
+
\ No newline at end of file
diff --git a/module/brand/admin/html.inc.php b/module/brand/admin/html.inc.php
new file mode 100644
index 0000000..e60e6ea
--- /dev/null
+++ b/module/brand/admin/html.inc.php
@@ -0,0 +1,119 @@
+get_one("SELECT * FROM {$DT_PRE}category WHERE moduleid=$moduleid AND catid>$catids ORDER BY catid");
+ if($CAT) {
+ $bcatid = $catid = $CAT['catid'];
+ $total = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $num = 50;
+ $bfid = $fid;
+ isset($fpage) or $fpage = 1;
+ if($fpage <= $total) {
+ $fid = $fpage;
+ tohtml('list', $module);
+ $fid = $bfid;
+ msg($MOD['name'].' ['.$CAT['catname'].'] 第'.$fpage.'页至第'.($fpage+$num-1).'页生成成功'.progress(0, $fid, $tid), '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids='.$catids.'&fid='.$fid.'&tid='.$tid.'&all='.$all.'&one='.$one.'&fpage='.($fpage+$num), 0);
+ }
+ $fid++;
+ msg($MOD['name'].' ['.$CAT['catname'].'] 生成成功'.progress(0, $fid, $tid), '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids='.$catid.'&fid='.$fid.'&tid='.$tid.'&all='.$all.'&one='.$one);
+ } else {
+ $all ? msg($MOD['name'].'列表生成成功', '?moduleid='.$moduleid.'&file='.$file.'&action=show&all='.$all.'&one='.$one) : msg($MOD['name'].'列表生成成功', $this_forward);
+ }
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}category WHERE moduleid=$moduleid");
+ $tid = $r['num'];
+ msg('', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids=0&fid=1&&tid='.$tid.'&all='.$all.'&one='.$one);
+ }
+ break;
+ case 'show':
+ $update = (isset($update) && $update) ? 1 : 0;
+ if(!$update && !$MOD['show_html']) {
+ if($one) dheader( '?file=html&action=back&mid='.$moduleid);
+ $all ? msg($MOD['name'].'生成成功', $this_forward) : dmsg($MOD['name'].'生成成功', $this_forward);
+ }
+ $catid = isset($catid) ? intval($catid) : '';
+ $sql = $catid ? " AND catid=$catid" : '';
+ if(!isset($fid)) {
+ $r = $db->get_one("SELECT min(itemid) AS fid FROM {$table} WHERE status>2 {$sql}");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ }
+ isset($sid) or $sid = $fid;
+ if(!isset($tid)) {
+ $r = $db->get_one("SELECT max(itemid) AS tid FROM {$table} WHERE status>2 {$sql}");
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ }
+ if($update) {
+ require DT_ROOT.'/module/'.$module.'/'.$module.'.class.php';
+ $do = new $module($moduleid);
+ }
+ isset($num) or $num = 100;
+ if($fid <= $tid) {
+ $result = $db->query("SELECT itemid FROM {$table} WHERE status>2 AND itemid>=$fid {$sql} ORDER BY itemid LIMIT 0,$num");
+ if($db->affected_rows($result)) {
+ while($r = $db->fetch_array($result)) {
+ $itemid = $r['itemid'];
+ $update ? $do->update($itemid) : tohtml('show', $module);
+ }
+ $itemid += 1;
+ } else {
+ $itemid = $fid + $num;
+ }
+ } else {
+ if($update) {
+ $all ? msg('', '?moduleid='.$moduleid.'&file='.$file.'&action=index&all=1&one='.$one) : dmsg('更新成功', $this_forward);
+ } else {
+ if($one) dheader( '?file=html&action=back&mid='.$moduleid);
+ $all ? msg($MOD['name'].'生成成功', $this_forward) : dmsg($MOD['name'].'生成成功', $this_forward);
+ }
+ }
+ msg('ID从'.$fid.'至'.($itemid-1).$MOD['name'].($update ? '更新' : '生成').'成功'.progress($sid, $fid, $tid), "?moduleid=$moduleid&file=$file&action=$action&sid=$sid&fid=$itemid&tid=$tid&num=$num&update=$update&all=$all&one=$one", 0);
+ break;
+ case 'cate':
+ $catid or msg('请选择分类');
+ isset($num) or $num = 50;
+ isset($fid) or $fid = 1;
+ $total = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ if($fpage && $tpage) {
+ $fid = $fpage;
+ $num = $tpage - $fpage + 1;
+ tohtml('list', $module);
+ dmsg('生成成功', $this_forward);
+ }
+ if($fid <= $total) {
+ tohtml('list', $module);
+ msg('第'.$fid.'页至第'.($fid+$num-1).'页生成成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catid='.$catid.'&fid='.($fid+$num).'&num='.$num.'&fpage='.$fpage.'&tpage='.$tpage, 0);
+ } else {
+ dmsg('生成成功', $this_forward);
+ }
+ break;
+ case 'item':
+ $catid or msg('请选择分类');
+ msg('', '?moduleid='.$moduleid.'&file='.$file.'&action=show&catid='.$catid.'&num='.$num);
+ break;
+ default:
+ $r = $db->get_one("SELECT min(itemid) AS fid,max(itemid) AS tid FROM {$table} WHERE status=3");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ include tpl('html', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/brand/admin/index.html b/module/brand/admin/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/brand/admin/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/brand/admin/install.inc.php b/module/brand/admin/install.inc.php
new file mode 100644
index 0000000..17f7dec
--- /dev/null
+++ b/module/brand/admin/install.inc.php
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/module/brand/admin/menu.inc.php b/module/brand/admin/menu.inc.php
new file mode 100644
index 0000000..c50d2ab
--- /dev/null
+++ b/module/brand/admin/menu.inc.php
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/module/brand/admin/remkdir.inc.php b/module/brand/admin/remkdir.inc.php
new file mode 100644
index 0000000..092b1c7
--- /dev/null
+++ b/module/brand/admin/remkdir.inc.php
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/module/brand/admin/setting.inc.php b/module/brand/admin/setting.inc.php
new file mode 100644
index 0000000..c0d7609
--- /dev/null
+++ b/module/brand/admin/setting.inc.php
@@ -0,0 +1,50 @@
+$v) {
+ if(strpos($k, 'seo_') === false) continue;
+ seo_check($v) or msg('SEO信息包含非法字符');
+ }
+ update_setting($moduleid, $setting);
+ cache_module($moduleid);
+ if($setting['php_list_urlid'] != $MOD['php_list_urlid'] || $setting['htm_list_urlid'] != $MOD['htm_list_urlid'] || $setting['htm_list_prefix'] != $MOD['htm_list_prefix'] || $setting['list_html'] != $MOD['list_html']) {
+ $_MOD = $MOD;
+ $MOD = $setting;
+ $result = $db->query("SELECT * FROM {$DT_PRE}category WHERE moduleid=$moduleid");
+ while($r = $db->fetch_array($result)) {
+ update_category($r);
+ }
+ cache_category($moduleid);
+ $MOD = $_MOD;
+ }
+ if($setting['php_item_urlid'] != $MOD['php_item_urlid'] || $setting['htm_item_urlid'] != $MOD['htm_item_urlid'] || $setting['htm_item_prefix'] != $MOD['htm_item_prefix'] || $setting['show_html'] != $MOD['show_html']) {
+ msg('设置保存成功,开始更新地址', '?moduleid='.$moduleid.'&file=html&action=show&update=1&num=1000');
+ }
+ dmsg('设置保存成功', '?moduleid='.$moduleid.'&file='.$file.'&tab='.$tab);
+} else {
+ $GROUP = cache_read('group.php');
+ $r = $db->get_one("SELECT MAX(itemid) AS maxid FROM {$table}");
+ $maxid = $r['maxid'];
+ extract(dhtmlspecialchars($MOD));
+ if($kw) {
+ $all = 1;
+ ob_start();
+ }
+ include tpl('setting', $module);
+ if($kw) {
+ $data = $content = ob_get_contents();
+ ob_clean();
+ $data = preg_replace('\'(?!((<.*?)|(]*?)>)|([^>]*?)|([^>]*?))\'si', ''.$kw.' ', $data);
+ $data = preg_replace('//', '', $data, 1);
+ echo $data ? $data : $content;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/brand/admin/template/edit.tpl.php b/module/brand/admin/template/edit.tpl.php
new file mode 100644
index 0000000..cae9c25
--- /dev/null
+++ b/module/brand/admin/template/edit.tpl.php
@@ -0,0 +1,232 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+单页采编
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/brand/admin/template/index.html b/module/brand/admin/template/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/brand/admin/template/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/brand/admin/template/setting.tpl.php b/module/brand/admin/template/setting.tpl.php
new file mode 100644
index 0000000..232290d
--- /dev/null
+++ b/module/brand/admin/template/setting.tpl.php
@@ -0,0 +1,491 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/brand/common.inc.php b/module/brand/common.inc.php
new file mode 100644
index 0000000..3f748b1
--- /dev/null
+++ b/module/brand/common.inc.php
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/module/brand/global.func.php b/module/brand/global.func.php
new file mode 100644
index 0000000..7ca7b97
--- /dev/null
+++ b/module/brand/global.func.php
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/module/brand/index.htm.php b/module/brand/index.htm.php
new file mode 100644
index 0000000..7d0f009
--- /dev/null
+++ b/module/brand/index.htm.php
@@ -0,0 +1,46 @@
+get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].'index.php?page={destoon_page}');
+ $tags = array();
+ if($items) {
+ $order = $MOD['order'];
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put(str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename), $data);
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/brand/index.html b/module/brand/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/brand/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/brand/index.inc.php b/module/brand/index.inc.php
new file mode 100644
index 0000000..1982e28
--- /dev/null
+++ b/module/brand/index.inc.php
@@ -0,0 +1,40 @@
+ 1 ? 'index.php?page='.$page : '');
+} else {
+ $condition = "status=3";
+ if($cityid) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize);
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+}
+$seo_file = 'index';
+include DT_ROOT.'/include/seo.inc.php';
+include template($MOD['template_index'] ? $MOD['template_index'] : 'index', $module);
+?>
\ No newline at end of file
diff --git a/module/brand/list.inc.php b/module/brand/list.inc.php
new file mode 100644
index 0000000..b9f4a39
--- /dev/null
+++ b/module/brand/list.inc.php
@@ -0,0 +1,88 @@
+count($table, $condition, $CFG['db_expires']);
+ } else {
+ if($page == 1) {
+ $items = $db->count($table, $condition, $CFG['db_expires']);
+ if($items != $CAT['item']) {
+ $CAT['item'] = $items;
+ $db->query("UPDATE {$DT_PRE}category SET item=$items WHERE catid=$catid");
+ }
+ } else {
+ $items = $CAT['item'];
+ }
+ }
+ $pagesize = $MOD['pagesize'];
+ $offset = ($page-1)*$pagesize;
+ $pages = listpages($CAT, $items, $page, $pagesize);
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ $showpage = 1;
+ $datetype = 5;
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].listurl($CAT, $page > 1 ? $page : 0);
+} else {
+ if(!$CAT || $CAT['moduleid'] != $moduleid) message($L['msg_not_cate']);
+ if(!check_group($_groupid, $MOD['group_list']) || !check_group($_groupid, $CAT['group_list'])) message($L['msg_no_right']);
+ $condition = "status=3";
+ $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($cityid) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($CAT, '{destoon_page}'));
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid;
+ }
+ if($CAT['parentid']) $PCAT = get_cat($CAT['parentid']);
+ $head_title = $head_name = $CAT['catname'];
+}
+$seo_file = 'list';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $CAT['template'] ? $CAT['template'] : ($MOD['template_list'] ? $MOD['template_list'] : 'list');
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/brand/message.inc.php b/module/brand/message.inc.php
new file mode 100644
index 0000000..5f08e52
--- /dev/null
+++ b/module/brand/message.inc.php
@@ -0,0 +1,112 @@
+ -1 or message(lang('message->without_permission'));
+require DT_ROOT.'/module/'.$module.'/common.inc.php';
+include load('misc.lang');
+$item = $db->get_one("SELECT title,linkurl,username,company,vip,status FROM {$table} WHERE itemid=$itemid");
+$item or message($L['not_exists']);
+$item['status'] == 3 or message($L['not_exists']);
+$item['username'] or message($L['com_not_member']);
+$_username != $item['username'] or message($L['send_self']);
+
+$limit_used = $limit_free = 0;
+if($MG['message_limit']) {
+ $today = $DT_TODAY - 86400;
+ $sql = $_userid ? "fromuser='$_username'" : "ip='$DT_IP'";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}message WHERE $sql AND addtime>$today AND status=3");
+ $limit_used = $r['num'];
+ $limit_used < $MG['message_limit'] or message(lang($L['message_limit'], array($MG['message_limit'], $limit_used)));
+ $limit_free = $MG['message_limit'] > $limit_used ? $MG['message_limit'] - $limit_used : 0;
+}
+
+$linkurl = $MOD['linkurl'].$item['linkurl'];
+$need_captcha = $MOD['captcha_message'] == 2 ? $MG['captcha'] : $MOD['captcha_message'];
+$need_question = $MOD['question_message'] == 2 ? $MG['question'] : $MOD['question_message'];
+require DT_ROOT.'/include/post.func.php';
+if($_userid) {
+ $user = userinfo($_username);
+ $company = $user['company'];
+ $truename = $user['truename'];
+ $telephone = $user['telephone'] ? $user['telephone'] : $user['mobile'];
+ $email = $user['mail'] ? $user['mail'] : $user['email'];
+ $qq = $user['qq'];
+ $wx = $user['wx'];
+ $ali = $user['ali'];
+ $skype = $user['skype'];
+}
+if($submit) {
+ captcha($captcha, $need_captcha);
+ question($answer, $need_question);
+ $title = dhtmlspecialchars(trim($title));
+ if(!$title) message($L['msg_type_title']);
+ $content = dhtmlspecialchars(trim($content));
+ if(!$content) message($L['msg_type_content']);
+ if(!$_userid) {
+ $truename = dhtmlspecialchars(trim($truename));
+ if(!$truename) message($L['msg_type_truename']);
+ $telephone = dhtmlspecialchars(trim($telephone));
+ if(!$telephone) message($L['msg_type_telephone']);
+ $email = dhtmlspecialchars(trim($email));
+ $company = dhtmlspecialchars(trim($company));
+ if($DT['im_qq']) $qq = dhtmlspecialchars(trim($qq));
+ if($DT['im_wx']) $wx = dhtmlspecialchars(trim($wx));
+ if($DT['im_ali'])$ali = dhtmlspecialchars(trim($ali));
+ if($DT['im_skype']) $skype = dhtmlspecialchars(trim($skype));
+ }
+ $content = nl2br($content);
+ if($company) $content .= ' '.$L['content_company'].''.$company.' ';
+ if($truename) $content .= ' '.$L['content_truename'].''.$truename.' ';
+ if($telephone) $content .= ' '.$L['content_telephone'].''.$telephone.' ';
+ if(is_email($email)) $content .= ' '.$L['content_email'].''.$email.' ';
+ if($DT['im_qq'] && is_qq($qq)) $content .= ' '.$L['content_qq'].' '.im_qq($qq).' '.$qq.' ';
+ if($DT['im_wx'] && is_wx($wx)) $content .= ' '.$L['content_wx'].' '.im_wx($wx, $_username).' '.$wx.' ';
+ if($DT['im_ali'] && $ali) $content .= ' '.$L['content_ali'].' '.im_ali($ali).' '.$ali.' ';
+ if($DT['im_skype'] && $skype) $content .= ' '.$L['content_skype'].' '.im_skype($skype).' '.$skype.' ';
+ if(is_date($date)) $content .= ' '.lang($L['content_date'], array($date));
+ $message = $L['content_brand'].''.$item['title'].' '.$content;
+ //send sms
+ if($DT['sms'] && $_sms && $item['username'] && isset($sendsms)) {
+ $touser = userinfo($item['username']);
+ if($touser['mobile']) {
+ $message = lang('sms->sms_message', array($item['title'], $itemid, $truename, $telephone));
+ $message = strip_sms($message);
+ $word = word_count($message);
+ $sms_num = ceil($word/$DT['sms_len']);
+ if($sms_num <= $_sms) {
+ $sms_code = send_sms($touser['mobile'], $message, $word);
+ if(strpos($sms_code, $DT['sms_ok']) !== false) {
+ $tmp = explode('/', $sms_code);
+ if(is_numeric($tmp[1])) $sms_num = $tmp[1];
+ if($sms_num) sms_add($_username, -$sms_num);
+ if($sms_num) sms_record($_username, -$sms_num, $_username, $MOD['name'].$L['sms_message'], 'ID:'.$itemid);
+ }
+ }
+ }
+ }
+ //send sms
+ $forward = $DT_PC ? $linkurl : str_replace($MOD['linkurl'], $MOD['mobile'], $linkurl);
+ if(send_message($item['username'], $title, $message, 3, $_username, $moduleid, $itemid)) {
+ $db->query("UPDATE {$table} SET messages=messages+1 WHERE itemid=$itemid");
+ message($L['msg_message_success'], $forward);
+ } else {
+ message($_userid ? $L['msg_member_failed'] : $L['msg_guest_failed']);
+ }
+}
+$iask = explode('|', trim($MOD['message_ask']));
+isset($content) or $content = '';
+$date = timetodate($DT_TIME + 5*86400, 3);
+$title = lang($L['brand_message_title'], array($item['title']));
+$head_title = $L['brand_head_title'].$DT['seo_delimiter'].$item['title'].$DT['seo_delimiter'].$MOD['name'];
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+} else {
+ $forward = $MOD['mobile'].$item['linkurl'];
+ $head_name = $L['brand_head_title'];
+ if($sns_app) $seo_title = $MOD['name'];
+ $js_pull = 0;
+ $foot = '';
+}
+include template($MOD['template_message'] ? $MOD['template_message'] : 'message', $module);
+?>
\ No newline at end of file
diff --git a/module/brand/search.inc.php b/module/brand/search.inc.php
new file mode 100644
index 0000000..b78cb79
--- /dev/null
+++ b/module/brand/search.inc.php
@@ -0,0 +1,157 @@
+ $DT['max_kw']) message(lang($L['word_limit'], array($DT['min_kw'], $DT['max_kw'])), $MOD['linkurl'].'search.php');
+ if($DT['search_limit'] && $page == 1) {
+ if(($DT_TIME - $DT['search_limit']) < get_cookie('last_search')) message(lang($L['time_limit'], array($DT['search_limit'])), $MOD['linkurl'].'search.php');
+ set_cookie('last_search', $DT_TIME);
+ }
+ }
+
+ $pptsql = '';
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $PPT = property_condition($catid);
+ foreach($PPT as $k=>$v) {
+ $PPT[$k]['select'] = '';
+ $oid = $v['oid'];
+ $tmp = 'ppt_'.$oid;
+ if(isset($$tmp)) {
+ $PPT[$k]['select'] = $tmp = strip_kw($$tmp);
+ if($tmp && in_array($tmp, $v['options'])) {
+ $tmp = 'O'.$oid.':'.$tmp.';';
+ $pptsql .= match_kw('pptword', $tmp);
+ }
+ }
+ }
+ }
+ $fds = $MOD['fields'];
+ $condition = '';
+ if($catid) $condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($dfields[$fields] == 'content') {
+ if($keyword && $MOD['fulltext'] == 1) $condition .= match_kw($dfields[$fields], $keyword);
+ $condition = str_replace('AND ', 'AND i.', $condition);
+ $condition = str_replace('i.content', 'd.content', $condition);
+ $condition = "i.status=3 AND i.itemid=d.itemid".$condition;
+ if($keyword && $MOD['fulltext'] == 2) $condition .= " AND MATCH(`content`) AGAINST('$kw'".(preg_match("/[+-<>()~*]/", $kw) ? ' IN BOOLEAN MODE' : '').")";
+ $table = $table.' i,'.$table_data.' d';
+ $fds = 'i.'.str_replace(',', ',i.', $fds);
+ } else {
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($pptsql) $condition .= $pptsql;//PPT
+ $condition = "status=3".$condition;
+ }
+ $pagesize = $MOD['pagesize'];
+ $offset = ($page-1)*$pagesize;
+ $items = $db->count($table, $condition, $DT['cache_search']);
+ $pages = pages($items, $page, $pagesize);
+ if($items) {
+ $order = $dorder[$order] ? " ORDER BY $dorder[$order]" : '';
+ $result = $db->query("SELECT {$fds} FROM {$table} WHERE {$condition}{$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ if($kw) {
+ $replacef = explode(' ', $kw);
+ $replacet = array_map('highlight', $replacef);
+ }
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ if($kw) $r['title'] = str_replace($replacef, $replacet, $r['title']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ }
+ if($page == 1 && $kw && $DT['search_kw']) keyword($DT['search_kw'], $_username, $kw, $items, $moduleid);
+ $showpage = 1;
+ $datetype = 5;
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+} else {
+ if($kw) {
+ check_group($_groupid, $MOD['group_search']) or message($L['msg_no_search']);
+ } else if($catid) {
+ $CAT or message($L['msg_not_cate']);
+ if(!check_group($_groupid, $MOD['group_list']) || !check_group($_groupid, $CAT['group_list'])) message($L['msg_no_right']);
+ } else {
+ check_group($_groupid, $MOD['group_index']) or message($L['msg_no_right']);
+ }
+ $head_title = $MOD['name'].$DT['seo_delimiter'].$head_title;
+ if($kw) $head_title = $kw.$DT['seo_delimiter'].$head_title;
+ if(!$areaid && $cityid && strpos($DT_URL, 'areaid') === false) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ }
+ $elite = isset($elite) ? intval($elite) : 0;
+ (isset($orderby) && in_array($orderby, array('dmessages', 'dhits', 'dcomments'))) or $orderby = '';
+ $tags = array();
+ if($DT_QST) {
+ $condition = "status=3";
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($catid) $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($areaid) $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($elite) $condition .= " AND level>0";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize);
+ if($items) {
+ $order = $MOD['order'];
+ if($orderby) $order = substr($orderby, 0, 1) == 'd' ? substr($orderby, 1).' DESC' : substr($orderby, 1).' ASC';
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY {$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ while($r = $db->fetch_array($result)) {
+ if($kw) $r['title'] = str_replace($kw, ''.$kw.' ', $r['title']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = preg_replace("/(.*)([&?]page=[0-9]*)(.*)/i", "\\1\\3", rewrite($DT_URL, 1)).'&job=ajax';
+ }
+ if($page == 1 && $kw && $DT['search_kw']) keyword($DT['search_kw'], $_username, $kw, $items, $moduleid);
+ }
+ if($job == 'ajax') {
+ if($tags) include template('list-'.$module, 'tag');
+ exit;
+ }
+ $head_title = $MOD['name'].$L['search'];
+}
+$seo_file = 'search';
+include DT_ROOT.'/include/seo.inc.php';
+include template($MOD['template_search'] ? $MOD['template_search'] : 'search', $module);
+?>
\ No newline at end of file
diff --git a/module/brand/show.inc.php b/module/brand/show.inc.php
new file mode 100644
index 0000000..20d74e0
--- /dev/null
+++ b/module/brand/show.inc.php
@@ -0,0 +1,92 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if($item['groupid'] == 2) include load('404.inc');
+ if($item && $item['status'] > 2) {
+ if($MOD['show_html'] && is_file(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl'])) d301($MOD['linkurl'].$item['linkurl']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ } else {
+ include load('404.inc');
+ }
+ $CAT = get_cat($catid);
+ if(!check_group($_groupid, $CAT['group_show'])) include load('403.inc');
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ if($lazy) $content = DC::lazy($content);
+ $content = DC::format($content, $DT_PC);
+ }
+ $CP = $MOD['cat_property'] && $CAT['property'];
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+ }
+ $adddate = timetodate($addtime, 3);
+ $editdate = timetodate($edittime, 3);
+ $linkurl = $MOD['linkurl'].$linkurl;
+ $maincat = get_maincat(0, $moduleid);
+ $update = '';
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ if(check_group($_groupid, $MOD['group_contact'])) {
+ if($fee) {
+ $user_status = 4;
+ $destoon_task = "moduleid=$moduleid&html=show&itemid=$itemid";
+ } else {
+ $user_status = 3;
+ $member = $item['username'] ? userinfo($item['username']) : array();
+ if($item['totime'] && $item['totime'] < $DT_TIME && $item['status'] == 3) $update .= ",status=4";
+ if($member) {
+ $update_user = update_user($member, $item);
+ if($update_user) $db->query("UPDATE LOW_PRIORITY {$table} SET ".substr($update_user, 1)." WHERE username='$username'", 'UNBUFFERED');
+ }
+ }
+ } else {
+ $user_status = $_userid ? 1 : 0;
+ if($_username && $item['username'] == $_username) {
+ $member = userinfo($item['username']);
+ $user_status = 3;
+ }
+ }
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $linkurl);
+} else {
+ $itemid or dheader($MOD['mobile']);
+ $item = $db->get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ ($item && $item['status'] > 2) or message($L['msg_not_exist']);
+ if($item['groupid'] == 2) message($L['msg_not_exist']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $CAT = get_cat($catid);
+ if(!check_group($_groupid, $MOD['group_show']) || !check_group($_groupid, $CAT['group_show'])) message($L['msg_no_right']);
+ $member = array();
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ include DT_ROOT.'/mobile/api/contact.inc.php';
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ if($share_icon) $share_icon = DC::icon($thumb, $content);
+ $content = DC::format($content, 0);
+ }
+ $editdate = timetodate($edittime, 5);
+ $could_message = ($user_status == 3 && $username && $username != $_username) ? 1 : 0;
+ $update = '';
+ $head_title = $head_name = $CAT['catname'];
+ $js_item = 1;
+ $foot = '';
+}
+if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+$seo_file = 'show';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $item['template'] ? $item['template'] : ($CAT['show_template'] ? $CAT['show_template'] : ($MOD['template_show'] ? $MOD['template_show'] : 'show'));
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/brand/task.inc.php b/module/brand/task.inc.php
new file mode 100644
index 0000000..7242051
--- /dev/null
+++ b/module/brand/task.inc.php
@@ -0,0 +1,67 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3) exit;
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ $currency = $MOD['fee_currency'];
+ $fee_unit = $currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $fee_name = $currency == 'money' ? $DT['money_name'] : $DT['credit_name'];
+ $member = array();
+ if(check_group($_groupid, $MOD['group_contact'])) {
+ if($fee) {
+ if($MG['fee_mode'] && $MOD['fee_mode']) {
+ $user_status = 3;
+ } else {
+ $mid = $moduleid;
+ if($_userid) {
+ $user_status = check_pay($mid, $itemid) ? 3 : 2;
+ } else {
+ $user_status = 0;
+ }
+ }
+ } else {
+ $user_status = 3;
+ }
+ } else {
+ $user_status = $_userid ? 1 : 0;
+ }
+ if($_username && $_username == $item['username']) $user_status = 3;
+ if($user_status == 3 && $item['username']) $member = userinfo($item['username']);
+ $contact = strip_nr(ob_template('contact', 'chip'), true);
+ echo 'Inner("contact", \''.$contact.'\');';
+ if($MOD['hits']) echo 'Inner("hits", \''.$item['hits'].'\');';
+ $update = '';
+ if($member) {
+ $update_user = update_user($member, $item);
+ if($update_user) $db->query("UPDATE LOW_PRIORITY {$table} SET ".substr($update_user, 1)." WHERE username='$username'", 'UNBUFFERED');
+ }
+ if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+ if($MOD['show_html'] && $task_item && $DT_TIME - @filemtime(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl']) > $task_item) tohtml('show', $module);
+} else if($html == 'list') {
+ $catid or exit;
+ if($MOD['list_html'] && $task_list && $CAT) {
+ $num = 1;
+ $totalpage = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $demo = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, '{DEMO}');
+ $fid = $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $page + 1;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $totalpage + 1 - $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ }
+} else if($html == 'index') {
+ if($DT['cache_hits'] && $MOD['hits']) {
+ $file = DT_CACHE.'/hits-'.$moduleid;
+ if($DT_TIME - @filemtime($file.'.dat') > $DT['cache_hits'] || @filesize($file.'.php') > 102400) update_hits($moduleid, $table);
+ }
+ if($MOD['index_html']) {
+ $file = DT_ROOT.'/'.$MOD['moduledir'].'/'.$DT['index'].'.'.$DT['file_ext'];
+ if($DT_TIME - @filemtime($file) > $task_index) tohtml('index', $module);
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/buy/admin/html.inc.php b/module/buy/admin/html.inc.php
new file mode 100644
index 0000000..e60e6ea
--- /dev/null
+++ b/module/buy/admin/html.inc.php
@@ -0,0 +1,119 @@
+get_one("SELECT * FROM {$DT_PRE}category WHERE moduleid=$moduleid AND catid>$catids ORDER BY catid");
+ if($CAT) {
+ $bcatid = $catid = $CAT['catid'];
+ $total = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $num = 50;
+ $bfid = $fid;
+ isset($fpage) or $fpage = 1;
+ if($fpage <= $total) {
+ $fid = $fpage;
+ tohtml('list', $module);
+ $fid = $bfid;
+ msg($MOD['name'].' ['.$CAT['catname'].'] 第'.$fpage.'页至第'.($fpage+$num-1).'页生成成功'.progress(0, $fid, $tid), '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids='.$catids.'&fid='.$fid.'&tid='.$tid.'&all='.$all.'&one='.$one.'&fpage='.($fpage+$num), 0);
+ }
+ $fid++;
+ msg($MOD['name'].' ['.$CAT['catname'].'] 生成成功'.progress(0, $fid, $tid), '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids='.$catid.'&fid='.$fid.'&tid='.$tid.'&all='.$all.'&one='.$one);
+ } else {
+ $all ? msg($MOD['name'].'列表生成成功', '?moduleid='.$moduleid.'&file='.$file.'&action=show&all='.$all.'&one='.$one) : msg($MOD['name'].'列表生成成功', $this_forward);
+ }
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}category WHERE moduleid=$moduleid");
+ $tid = $r['num'];
+ msg('', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids=0&fid=1&&tid='.$tid.'&all='.$all.'&one='.$one);
+ }
+ break;
+ case 'show':
+ $update = (isset($update) && $update) ? 1 : 0;
+ if(!$update && !$MOD['show_html']) {
+ if($one) dheader( '?file=html&action=back&mid='.$moduleid);
+ $all ? msg($MOD['name'].'生成成功', $this_forward) : dmsg($MOD['name'].'生成成功', $this_forward);
+ }
+ $catid = isset($catid) ? intval($catid) : '';
+ $sql = $catid ? " AND catid=$catid" : '';
+ if(!isset($fid)) {
+ $r = $db->get_one("SELECT min(itemid) AS fid FROM {$table} WHERE status>2 {$sql}");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ }
+ isset($sid) or $sid = $fid;
+ if(!isset($tid)) {
+ $r = $db->get_one("SELECT max(itemid) AS tid FROM {$table} WHERE status>2 {$sql}");
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ }
+ if($update) {
+ require DT_ROOT.'/module/'.$module.'/'.$module.'.class.php';
+ $do = new $module($moduleid);
+ }
+ isset($num) or $num = 100;
+ if($fid <= $tid) {
+ $result = $db->query("SELECT itemid FROM {$table} WHERE status>2 AND itemid>=$fid {$sql} ORDER BY itemid LIMIT 0,$num");
+ if($db->affected_rows($result)) {
+ while($r = $db->fetch_array($result)) {
+ $itemid = $r['itemid'];
+ $update ? $do->update($itemid) : tohtml('show', $module);
+ }
+ $itemid += 1;
+ } else {
+ $itemid = $fid + $num;
+ }
+ } else {
+ if($update) {
+ $all ? msg('', '?moduleid='.$moduleid.'&file='.$file.'&action=index&all=1&one='.$one) : dmsg('更新成功', $this_forward);
+ } else {
+ if($one) dheader( '?file=html&action=back&mid='.$moduleid);
+ $all ? msg($MOD['name'].'生成成功', $this_forward) : dmsg($MOD['name'].'生成成功', $this_forward);
+ }
+ }
+ msg('ID从'.$fid.'至'.($itemid-1).$MOD['name'].($update ? '更新' : '生成').'成功'.progress($sid, $fid, $tid), "?moduleid=$moduleid&file=$file&action=$action&sid=$sid&fid=$itemid&tid=$tid&num=$num&update=$update&all=$all&one=$one", 0);
+ break;
+ case 'cate':
+ $catid or msg('请选择分类');
+ isset($num) or $num = 50;
+ isset($fid) or $fid = 1;
+ $total = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ if($fpage && $tpage) {
+ $fid = $fpage;
+ $num = $tpage - $fpage + 1;
+ tohtml('list', $module);
+ dmsg('生成成功', $this_forward);
+ }
+ if($fid <= $total) {
+ tohtml('list', $module);
+ msg('第'.$fid.'页至第'.($fid+$num-1).'页生成成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catid='.$catid.'&fid='.($fid+$num).'&num='.$num.'&fpage='.$fpage.'&tpage='.$tpage, 0);
+ } else {
+ dmsg('生成成功', $this_forward);
+ }
+ break;
+ case 'item':
+ $catid or msg('请选择分类');
+ msg('', '?moduleid='.$moduleid.'&file='.$file.'&action=show&catid='.$catid.'&num='.$num);
+ break;
+ default:
+ $r = $db->get_one("SELECT min(itemid) AS fid,max(itemid) AS tid FROM {$table} WHERE status=3");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ include tpl('html', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/buy/admin/index.inc.php b/module/buy/admin/index.inc.php
new file mode 100644
index 0000000..347cf66
--- /dev/null
+++ b/module/buy/admin/index.inc.php
@@ -0,0 +1,251 @@
+=0 ) $condition .= " AND typeid=$typeid";
+ if($level) $condition .= $level > 9 ? " AND level>0" : " AND level=$level";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+ if($thumb) $condition .= " AND thumb<>''";
+ if($guest) $condition .= " AND username=''";
+ if($minvip) $condition .= " AND vip>=$minvip";
+ if($maxvip) $condition .= " AND vip<=$maxvip";
+ if($ip) $condition .= " AND ip='$ip'";
+ if($username) $condition .= " AND username='$username'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+
+ $timetype = strpos($dorder[$order], 'add') !== false ? 'add' : '';
+}
+switch($action) {
+ case 'add':
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ $do->add($post);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ if($MOD['show_html'] && $post['status'] > 2) $do->tohtml($do->itemid);
+ dmsg('添加成功', '?moduleid='.$moduleid.'&action='.$action);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $content = '';
+ $status = 3;
+ $addtime = timetodate($DT_TIME);
+ $totime = '';
+ $username = $_username;
+ $typeid = 0;
+ $item = $thumbs = array();
+ $menuid = 0;
+ isset($url) or $url = '';
+ if($url) {
+ $tmp = fetch_url($url);
+ if($tmp) extract($tmp);
+ }
+ $history = 0;
+ include tpl('edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ $item = $do->get_one();
+ extract($item);
+ $history = history($moduleid, $itemid);
+ $thumbs = get_thumbs($item);
+ $addtime = timetodate($addtime);
+ $totime = $totime ? timetodate($totime, 6) : '';
+ $menuon = array('5', '4', '2', '1', '3');
+ $menuid = $menuon[$status];
+ include tpl($action, $module);
+ }
+ break;
+ case 'move':
+ if($submit) {
+ $fromids or msg('请填写来源ID');
+ if($tocatid) {
+ $db->query("UPDATE {$table} SET catid=$tocatid WHERE `{$fromtype}` IN ($fromids)");
+ dmsg('移动成功', $forward);
+ } else {
+ msg('请选择目标分类');
+ }
+ } else {
+ $itemid = $itemid ? implode(',', $itemid) : '';
+ $menuid = 6;
+ include tpl($action);
+ }
+ break;
+ case 'update':
+ is_array($itemid) or msg('请选择'.$MOD['name']);
+ foreach($itemid as $v) {
+ $do->update($v);
+ }
+ dmsg('更新成功', $forward);
+ break;
+ case 'tohtml':
+ is_array($itemid) or msg('请选择'.$MOD['name']);
+ foreach($itemid as $itemid) {
+ tohtml('show', $module);
+ }
+ dmsg('生成成功', $forward);
+ break;
+ case 'delete':
+ $itemid or msg('请选择'.$MOD['name']);
+ isset($recycle) ? $do->recycle($itemid) : $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'restore':
+ $itemid or msg('请选择'.$MOD['name']);
+ $do->restore($itemid);
+ dmsg('还原成功', $forward);
+ break;
+ case 'refresh':
+ $itemid or msg('请选择'.$MOD['name']);
+ $do->refresh($itemid);
+ dmsg('刷新成功', $forward);
+ break;
+ case 'clear':
+ $do->clear();
+ dmsg('清空成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择'.$MOD['name']);
+ $level = intval($level);
+ $do->level($itemid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ case 'type':
+ $itemid or msg('请选择'.$MOD['name']);
+ $tid = intval($tid);
+ array_key_exists($tid, $TYPE) or $tid = 0;
+ $do->type($itemid, $tid);
+ dmsg('类型设置成功', $forward);
+ break;
+ case 'recycle':
+ $lists = $do->get_list('status=0'.$condition, $dorder[$order]);
+ $menuid = 5;
+ include tpl('index', $module);
+ break;
+ case 'reject':
+ if($itemid && !$psize) {
+ $do->reject($itemid);
+ dmsg('拒绝成功', $forward);
+ } else {
+ $lists = $do->get_list('status=1'.$condition, $dorder[$order]);
+ $menuid = 4;
+ include tpl('index', $module);
+ }
+ break;
+ case 'expire':
+ if(isset($refresh)) {
+ if(isset($extend)) {
+ $days = isset($days) ? intval($days) : 0;
+ $days or msg('请填写天数');
+ $itemid or msg('请选择信息');
+ foreach($itemid as $v) {
+ $db->query("UPDATE {$table} SET totime=totime+$days*86400,status=3 WHERE itemid='$v' AND totime>0");
+ }
+ $do->expire();
+ dmsg('延时成功', $forward);
+ } else {
+ $do->expire();
+ dmsg('刷新成功', $forward);
+ }
+ } else {
+ $lists = $do->get_list('status=4'.$condition);
+ $menuid = 3;
+ include tpl('index', $module);
+ }
+ break;
+ case 'check':
+ if($itemid && !$psize) {
+ $do->check($itemid);
+ dmsg('审核成功', $forward);
+ } else {
+ $lists = $do->get_list('status=2'.$condition, $dorder[$order]);
+ $menuid = 2;
+ include tpl('index', $module);
+ }
+ break;
+ default:
+ $lists = $do->get_list('status=3'.$condition, $dorder[$order]);
+ $menuid = 1;
+ include tpl('index', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/buy/admin/menu.inc.php b/module/buy/admin/menu.inc.php
new file mode 100644
index 0000000..1556ce7
--- /dev/null
+++ b/module/buy/admin/menu.inc.php
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/module/buy/admin/setting.inc.php b/module/buy/admin/setting.inc.php
new file mode 100644
index 0000000..c0d7609
--- /dev/null
+++ b/module/buy/admin/setting.inc.php
@@ -0,0 +1,50 @@
+$v) {
+ if(strpos($k, 'seo_') === false) continue;
+ seo_check($v) or msg('SEO信息包含非法字符');
+ }
+ update_setting($moduleid, $setting);
+ cache_module($moduleid);
+ if($setting['php_list_urlid'] != $MOD['php_list_urlid'] || $setting['htm_list_urlid'] != $MOD['htm_list_urlid'] || $setting['htm_list_prefix'] != $MOD['htm_list_prefix'] || $setting['list_html'] != $MOD['list_html']) {
+ $_MOD = $MOD;
+ $MOD = $setting;
+ $result = $db->query("SELECT * FROM {$DT_PRE}category WHERE moduleid=$moduleid");
+ while($r = $db->fetch_array($result)) {
+ update_category($r);
+ }
+ cache_category($moduleid);
+ $MOD = $_MOD;
+ }
+ if($setting['php_item_urlid'] != $MOD['php_item_urlid'] || $setting['htm_item_urlid'] != $MOD['htm_item_urlid'] || $setting['htm_item_prefix'] != $MOD['htm_item_prefix'] || $setting['show_html'] != $MOD['show_html']) {
+ msg('设置保存成功,开始更新地址', '?moduleid='.$moduleid.'&file=html&action=show&update=1&num=1000');
+ }
+ dmsg('设置保存成功', '?moduleid='.$moduleid.'&file='.$file.'&tab='.$tab);
+} else {
+ $GROUP = cache_read('group.php');
+ $r = $db->get_one("SELECT MAX(itemid) AS maxid FROM {$table}");
+ $maxid = $r['maxid'];
+ extract(dhtmlspecialchars($MOD));
+ if($kw) {
+ $all = 1;
+ ob_start();
+ }
+ include tpl('setting', $module);
+ if($kw) {
+ $data = $content = ob_get_contents();
+ ob_clean();
+ $data = preg_replace('\'(?!((<.*?)|(]*?)>)|([^>]*?)|([^>]*?))\'si', ''.$kw.' ', $data);
+ $data = preg_replace('//', '', $data, 1);
+ echo $data ? $data : $content;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/buy/admin/template/edit.tpl.php b/module/buy/admin/template/edit.tpl.php
new file mode 100644
index 0000000..ca2cc5f
--- /dev/null
+++ b/module/buy/admin/template/edit.tpl.php
@@ -0,0 +1,442 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+单页采编
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/buy/admin/template/html.tpl.php b/module/buy/admin/template/html.tpl.php
new file mode 100644
index 0000000..339891c
--- /dev/null
+++ b/module/buy/admin/template/html.tpl.php
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/buy/admin/template/index.html b/module/buy/admin/template/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/buy/admin/template/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/buy/admin/template/setting.tpl.php b/module/buy/admin/template/setting.tpl.php
new file mode 100644
index 0000000..9545a85
--- /dev/null
+++ b/module/buy/admin/template/setting.tpl.php
@@ -0,0 +1,506 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/buy/admin/uninstall.inc.php b/module/buy/admin/uninstall.inc.php
new file mode 100644
index 0000000..7c6acf7
--- /dev/null
+++ b/module/buy/admin/uninstall.inc.php
@@ -0,0 +1,5 @@
+query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_data_".$moduleid."`");
+?>
\ No newline at end of file
diff --git a/module/buy/common.inc.php b/module/buy/common.inc.php
new file mode 100644
index 0000000..14eadd9
--- /dev/null
+++ b/module/buy/common.inc.php
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/module/buy/index.htm.php b/module/buy/index.htm.php
new file mode 100644
index 0000000..ae524bc
--- /dev/null
+++ b/module/buy/index.htm.php
@@ -0,0 +1,54 @@
+get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].'index.php?page={destoon_page}');
+ $tags = array();
+ if($items) {
+ $order = $MOD['order'];
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put(str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename), $data);
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/buy/index.inc.php b/module/buy/index.inc.php
new file mode 100644
index 0000000..e2836cd
--- /dev/null
+++ b/module/buy/index.inc.php
@@ -0,0 +1,41 @@
+ 1 ? 'index.php?page='.$page : '');
+} else {
+ $condition = "status=3";
+ if($cityid) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize);
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+}
+$seo_file = 'index';
+include DT_ROOT.'/include/seo.inc.php';
+include template($MOD['template_index'] ? $MOD['template_index'] : 'index', $module);
+?>
\ No newline at end of file
diff --git a/module/buy/list.htm.php b/module/buy/list.htm.php
new file mode 100644
index 0000000..f9b9097
--- /dev/null
+++ b/module/buy/list.htm.php
@@ -0,0 +1,91 @@
+count($table, $condition);
+ if($items != $CAT['item']) {
+ $CAT['item'] = $items;
+ $db->query("UPDATE {$DT_PRE}category SET item=$items WHERE catid=$catid");
+ }
+} else {
+ $items = $CAT['item'];
+}
+$pagesize = $MOD['pagesize'];
+$showpage = 1;
+$datetype = 5;
+$template = $CAT['template'] ? $CAT['template'] : ($MOD['template_list'] ? $MOD['template_list'] : 'list');
+$total = max(ceil($items/$MOD['pagesize']), 1);
+if(isset($fid) && isset($num)) {
+ $page = $fid;
+ $topage = $fid + $num - 1;
+ $total = $topage < $total ? $topage : $total;
+}
+for(; $page <= $total; $page++) {
+ $offset = ($page-1)*$pagesize;
+ $pages = listpages($CAT, $items, $page, $pagesize);
+ $tags = array();
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}");
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $seo_file = 'list';
+ include DT_ROOT.'/include/seo.inc.php';
+ $destoon_task = "moduleid=$moduleid&html=list&catid=$catid&page=$page";
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].($page > 1 ?listurl($CAT, $page) : $CAT['linkurl']);
+ $filename = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, $page);
+ $_tags = $tags;
+ $DT_PC = $GLOBALS['DT_PC'] = 1;
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ if($DT['pcharset']) $filename = convert($filename, DT_CHARSET, $DT['pcharset']);
+ file_put($filename, $data);
+ if($page == 1) {
+ $indexname = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, 0);
+ if($DT['pcharset']) $indexname = convert($indexname, DT_CHARSET, $DT['pcharset']);
+ file_copy($filename, $indexname);
+ }
+ if($EXT['mobile_enable']) {
+ include DT_ROOT.'/include/mobile.htm.php';
+ $head_pc = str_replace($MOD['mobile'], $MOD['linkurl'], $head_mobile);
+ if($CAT['parentid']) $PCAT = get_cat($CAT['parentid']);
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($CAT, '{destoon_page}'));
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $tags = array();
+ foreach($_tags as $r) {
+ $r['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $r['linkurl']);
+ $tags[] = $r;
+ }
+ if($items) $js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid;
+ $head_title = $head_name = $CAT['catname'];
+ $filename = str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename);
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put($filename, $data);
+ if($page == 1) file_copy($filename, str_replace(DT_ROOT, DT_ROOT.'/mobile', $indexname));
+ }
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/buy/price.inc.php b/module/buy/price.inc.php
new file mode 100644
index 0000000..54c35aa
--- /dev/null
+++ b/module/buy/price.inc.php
@@ -0,0 +1,113 @@
+ -1 or message(lang('message->without_permission'), 'goback');
+require DT_ROOT.'/module/'.$module.'/common.inc.php';
+include load('misc.lang');
+$item = $db->get_one("SELECT title,tag,linkurl,totime,username,company,vip,status FROM {$table} WHERE itemid=$itemid");
+$item or message($L['not_exists']);
+if($item['totime'] && $DT_TIME > $item['totime']) message($L['has_expired']);
+$item['status'] == 3 or message($L['not_exists']);
+$item['username'] or message($L['com_not_member']);
+$_username != $item['username'] or message($L['price_self']);
+
+$limit_used = $limit_free = 0;
+if($MG['price_limit']) {
+ $today = $DT_TODAY - 86400;
+ $sql = $_userid ? "fromuser='$_username'" : "ip='$DT_IP'";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}message WHERE $sql AND addtime>$today AND typeid=2 AND status=3");
+ $limit_used = $r['num'];
+ $limit_used < $MG['price_limit'] or message(lang($L['message_limit'], array($MG['price_limit'], $limit_used)), 'goback');
+
+ $limit_free = $MG['price_limit'] > $limit_used ? $MG['price_limit'] - $limit_used : 0;
+}
+
+$linkurl = $MOD['linkurl'].$item['linkurl'];
+$need_captcha = $MOD['captcha_price'] == 2 ? $MG['captcha'] : $MOD['captcha_price'];
+$need_question = $MOD['question_price'] == 2 ? $MG['question'] : $MOD['question_price'];
+require DT_ROOT.'/include/post.func.php';
+if($_userid) {
+ $user = userinfo($_username);
+ $company = $user['company'];
+ $truename = $user['truename'];
+ $telephone = $user['telephone'] ? $user['telephone'] : $user['mobile'];
+ $email = $user['mail'] ? $user['mail'] : $user['email'];
+ $qq = $user['qq'];
+ $wx = $user['wx'];
+ $ali = $user['ali'];
+ $skype = $user['skype'];
+}
+if($submit) {
+ captcha($captcha, $need_captcha);
+ question($answer, $need_question);
+ $title = dhtmlspecialchars(trim($title));
+ if(!$title) message($L['msg_type_title']);
+ $content = dhtmlspecialchars(trim($content));
+ if(!$content) message($L['msg_type_content']);
+ if(!$_userid) {
+ $truename = dhtmlspecialchars(trim($truename));
+ if(!$truename) message($L['msg_type_truename']);
+ $telephone = dhtmlspecialchars(trim($telephone));
+ if(!$telephone) message($L['msg_type_telephone']);
+ $email = dhtmlspecialchars(trim($email));
+ $company = dhtmlspecialchars(trim($company));
+ if($DT['im_qq']) $qq = dhtmlspecialchars(trim($qq));
+ if($DT['im_wx']) $wx = dhtmlspecialchars(trim($wx));
+ if($DT['im_ali'])$ali = dhtmlspecialchars(trim($ali));
+ if($DT['im_skype']) $skype = dhtmlspecialchars(trim($skype));
+ }
+ $content = nl2br($content);
+ if($company) $content .= ' '.$L['content_company'].''.$company.' ';
+ if($truename) $content .= ' '.$L['content_truename'].''.$truename.' ';
+ if($telephone) $content .= ' '.$L['content_telephone'].''.$telephone.' ';
+ if(is_email($email)) $content .= ' '.$L['content_email'].''.$email.' ';
+ if($DT['im_qq'] && is_qq($qq)) $content .= ' '.$L['content_qq'].' '.im_qq($qq).' '.$qq.' ';
+ if($DT['im_wx'] && is_wx($wx)) $content .= ' '.$L['content_wx'].' '.im_wx($wx, $_username).' '.$wx.' ';
+ if($DT['im_ali'] && $ali) $content .= ' '.$L['content_ali'].' '.im_ali($ali).' '.$ali.' ';
+ if($DT['im_skype'] && $skype) $content .= ' '.$L['content_skype'].' '.im_skype($skype).' '.$skype.' ';
+ if(is_date($date)) $content .= ' '.lang($L['content_date'], array($date));
+ $message = $L['content_product'].''.$item['title'].' '.$content;
+ //send sms
+ if($DT['sms'] && $_sms && $item['username'] && isset($sendsms)) {
+ $touser = userinfo($item['username']);
+ if($touser['mobile']) {
+ $message = lang('sms->sms_price', array($item['tag'] ? $item['tag'] : $item['title'], $itemid, $truename, $telephone));
+ $message = strip_sms($message);
+ $word = word_count($message);
+ $sms_num = ceil($word/$DT['sms_len']);
+ if($sms_num <= $_sms) {
+ $sms_code = send_sms($touser['mobile'], $message, $word);
+ if(strpos($sms_code, $DT['sms_ok']) !== false) {
+ $tmp = explode('/', $sms_code);
+ if(is_numeric($tmp[1])) $sms_num = $tmp[1];
+ if($sms_num) sms_add($_username, -$sms_num);
+ if($sms_num) sms_record($_username, -$sms_num, $_username, $L['sms_price'], 'ID:'.$itemid);
+ }
+ }
+ }
+ }
+ //send sms
+ $forward = $DT_PC ? $linkurl : str_replace($MOD['linkurl'], $MOD['mobile'], $linkurl);
+ if(send_message($item['username'], $title, $message, 2, $_username, $moduleid, $itemid)) {
+ $db->query("UPDATE {$table} SET messages=messages+1 WHERE itemid=$itemid");
+ message($L['msg_price_success'], $forward);
+ } else {
+ message($_userid ? $L['msg_price_member_failed'] : $L['msg_price_guest_failed'], $forward);
+ }
+}
+$iask = explode('|', trim($MOD['price_ask']));
+$date = timetodate($DT_TIME + 5*86400, 3);
+$title = lang($L['price_message_title'], array($item['title']));
+$head_title = $L['price_head_title'].$DT['seo_delimiter'].$item['title'].$DT['seo_delimiter'].$MOD['name'];
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+} else {
+ $forward = $MOD['mobile'].$item['linkurl'];
+ $head_name = $L['price_head_title'];
+ if($sns_app) $seo_title = $MOD['name'];
+ $js_pull = 0;
+ $foot = '';
+}
+include template($MOD['template_price'] ? $MOD['template_price'] : 'price', $module);
+?>
\ No newline at end of file
diff --git a/module/buy/search.inc.php b/module/buy/search.inc.php
new file mode 100644
index 0000000..a21b88b
--- /dev/null
+++ b/module/buy/search.inc.php
@@ -0,0 +1,164 @@
+ $DT['max_kw']) message(lang($L['word_limit'], array($DT['min_kw'], $DT['max_kw'])), $MOD['linkurl'].'search.php');
+ if($DT['search_limit'] && $page == 1) {
+ if(($DT_TIME - $DT['search_limit']) < get_cookie('last_search')) message(lang($L['time_limit'], array($DT['search_limit'])), $MOD['linkurl'].'search.php');
+ set_cookie('last_search', $DT_TIME);
+ }
+ }
+
+ $pptsql = '';
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $PPT = property_condition($catid);
+ foreach($PPT as $k=>$v) {
+ $PPT[$k]['select'] = '';
+ $oid = $v['oid'];
+ $tmp = 'ppt_'.$oid;
+ if(isset($$tmp)) {
+ $PPT[$k]['select'] = $tmp = strip_kw($$tmp);
+ if($tmp && in_array($tmp, $v['options'])) {
+ $tmp = 'O'.$oid.':'.$tmp.';';
+ $pptsql .= match_kw('pptword', $tmp);
+ }
+ }
+ }
+ }
+ $fds = $MOD['fields'];
+ $condition = '';
+ if($catid) $condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($thumb) $condition .= " AND thumb<>''";
+ if($vip) $condition .= " AND vip>0";
+ if($typeid != 99) $condition .= " AND typeid=$typeid";
+ if($fromtime) $condition .= " AND edittime>=$fromtime";
+ if($totime) $condition .= " AND edittime<=$totime";
+ if($dfields[$fields] == 'content') {
+ if($keyword && $MOD['fulltext'] == 1) $condition .= match_kw($dfields[$fields], $keyword);
+ $condition = str_replace('AND ', 'AND i.', $condition);
+ $condition = str_replace('i.content', 'd.content', $condition);
+ $condition = "i.status=3 AND i.itemid=d.itemid".$condition;
+ if($keyword && $MOD['fulltext'] == 2) $condition .= " AND MATCH(`content`) AGAINST('$kw'".(preg_match("/[+-<>()~*]/", $kw) ? ' IN BOOLEAN MODE' : '').")";
+ $table = $table.' i,'.$table_data.' d';
+ $fds = 'i.'.str_replace(',', ',i.', $fds);
+ } else {
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($pptsql) $condition .= $pptsql;//PPT
+ $condition = "status=3".$condition;
+ }
+ $pagesize = $MOD['pagesize'];
+ $offset = ($page-1)*$pagesize;
+ $items = $db->count($table, $condition, $DT['cache_search']);
+ $pages = pages($items, $page, $pagesize);
+ if($items) {
+ $order = $dorder[$order] ? " ORDER BY $dorder[$order]" : '';
+ $result = $db->query("SELECT {$fds} FROM {$table} WHERE {$condition}{$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ if($kw) {
+ $replacef = explode(' ', $kw);
+ $replacet = array_map('highlight', $replacef);
+ }
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ if($kw) $r['title'] = str_replace($replacef, $replacet, $r['title']);
+ if($kw) $r['introduce'] = str_replace($replacef, $replacet, $r['introduce']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ }
+ if($page == 1 && $kw && $DT['search_kw']) keyword($DT['search_kw'], $_username, $kw, $items, $moduleid);
+ $showpage = 1;
+ $datetype = 5;
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+} else {
+ if($kw) {
+ check_group($_groupid, $MOD['group_search']) or message($L['msg_no_search']);
+ } else if($catid) {
+ $CAT or message($L['msg_not_cate']);
+ if(!check_group($_groupid, $MOD['group_list']) || !check_group($_groupid, $CAT['group_list'])) message($L['msg_no_right']);
+ } else {
+ check_group($_groupid, $MOD['group_index']) or message($L['msg_no_right']);
+ }
+ $head_title = $MOD['name'].$DT['seo_delimiter'].$head_title;
+ if($kw) $head_title = $kw.$DT['seo_delimiter'].$head_title;
+ if(!$areaid && $cityid && strpos($DT_URL, 'areaid') === false) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ }
+ $elite = isset($elite) ? intval($elite) : 0;
+ (isset($orderby) && in_array($orderby, array('dmessages', 'dhits', 'dcomments'))) or $orderby = '';
+ $tags = array();
+ if($DT_QST) {
+ $condition = "status=3";
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($catid) $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($areaid) $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($elite) $condition .= " AND level>0";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize);
+ if($items) {
+ $order = $MOD['order'];
+ if($orderby) $order = substr($orderby, 0, 1) == 'd' ? substr($orderby, 1).' DESC' : substr($orderby, 1).' ASC';
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY {$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ while($r = $db->fetch_array($result)) {
+ if($kw) $r['title'] = str_replace($kw, ''.$kw.' ', $r['title']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = preg_replace("/(.*)([&?]page=[0-9]*)(.*)/i", "\\1\\3", rewrite($DT_URL, 1)).'&job=ajax';
+ }
+ if($page == 1 && $kw && $DT['search_kw']) keyword($DT['search_kw'], $_username, $kw, $items, $moduleid);
+ }
+ if($job == 'ajax') {
+ if($tags) include template('list-'.$module, 'tag');
+ exit;
+ }
+ $head_title = $MOD['name'].$L['search'];
+}
+$seo_file = 'search';
+include DT_ROOT.'/include/seo.inc.php';
+include template($MOD['template_search'] ? $MOD['template_search'] : 'search', $module);
+?>
\ No newline at end of file
diff --git a/module/buy/show.htm.php b/module/buy/show.htm.php
new file mode 100644
index 0000000..ccec940
--- /dev/null
+++ b/module/buy/show.htm.php
@@ -0,0 +1,67 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+if(!$item || $item['status'] < 3) return false;
+require_once DT_ROOT.'/include/content.class.php';
+$could_comment = in_array($moduleid, explode(',', $EXT['comment_module'])) ? 1 : 0;
+extract($item);
+$CAT = get_cat($catid);
+$content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+$t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+$content = $_content = $t['content'];
+if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid);
+ if($lazy) $content = DC::lazy($content);
+ $content = DC::format($content, 1);
+}
+$CP = $MOD['cat_property'] && $CAT['property'];
+if($CP) {
+ require_once DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+}
+$adddate = timetodate($addtime, 5);
+$editdate = timetodate($edittime, 5);
+$todate = $totime ? timetodate($totime, 3) : 0;
+$expired = $totime && $totime < $DT_TIME ? true : false;
+$fileurl = $linkurl;
+$linkurl = $MOD['linkurl'].$linkurl;
+$albums = get_albums($item);
+$pics = count($albums);
+$pics_width = $pics*70;
+$fee = DC::fee($item['fee'], $MOD['fee_view']);
+$user_status = 4;
+$seo_file = 'show';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $item['template'] ? $item['template'] : ($CAT['show_template'] ? $CAT['show_template'] : ($MOD['template_show'] ? $MOD['template_show'] : 'show'));
+$destoon_task = "moduleid=$moduleid&html=show&itemid=$itemid";
+if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $linkurl);
+$DT_PC = $GLOBALS['DT_PC'] = 1;
+ob_start();
+include template($template, $module);
+$data = ob_get_contents();
+ob_clean();
+$filename = DT_ROOT.'/'.$MOD['moduledir'].'/'.$fileurl;
+if($DT['pcharset']) $filename = convert($filename, DT_CHARSET, $DT['pcharset']);
+file_put($filename, $data);
+if($EXT['mobile_enable']) {
+ include DT_ROOT.'/include/mobile.htm.php';
+ $head_pc = $linkurl;
+ $could_price = ($user_status == 3 && $username && !$expired) ? 1 : 0;
+ $head_title = $head_name = $CAT['catname'];
+ $js_item = $js_album = 1;
+ $foot = '';
+ if($_content) {
+ $content = $_content;
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, 0);
+ $content = DC::format($content, 0);
+ }
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put(str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename), $data);
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/buy/task.inc.php b/module/buy/task.inc.php
new file mode 100644
index 0000000..cc41a8f
--- /dev/null
+++ b/module/buy/task.inc.php
@@ -0,0 +1,69 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3) exit;
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ $currency = $MOD['fee_currency'];
+ $fee_unit = $currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $fee_name = $currency == 'money' ? $DT['money_name'] : $DT['credit_name'];
+ $member = array();
+ if(check_group($_groupid, $MOD['group_contact'])) {
+ if($fee) {
+ if($MG['fee_mode'] && $MOD['fee_mode']) {
+ $user_status = 3;
+ } else {
+ $mid = $moduleid;
+ if($_userid) {
+ $user_status = check_pay($mid, $itemid) ? 3 : 2;
+ } else {
+ $user_status = 0;
+ }
+ }
+ } else {
+ $user_status = 3;
+ }
+ } else {
+ $user_status = $_userid ? 1 : 0;
+ }
+ if($_username && $_username == $item['username']) $user_status = 3;
+ if($user_status == 3 && $item['username']) $member = userinfo($item['username']);
+ $contact = strip_nr(ob_template('contact', 'chip'), true);
+ echo 'Inner("contact", \''.$contact.'\');';
+ if($MOD['hits']) echo 'Inner("hits", \''.$item['hits'].'\');';
+
+ $update = '';
+ if($item['totime'] && $item['totime'] < $DT_TIME && $item['status'] == 3) $update .= ",status=4";
+ if($member) {
+ $update_user = update_user($member, $item);
+ if($update_user) $db->query("UPDATE LOW_PRIORITY {$table} SET ".substr($update_user, 1)." WHERE username='$username'", 'UNBUFFERED');
+ }
+ if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+ if($MOD['show_html'] && $task_item && $DT_TIME - @filemtime(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl']) > $task_item) tohtml('show', $module);
+} else if($html == 'list') {
+ $catid or exit;
+ if($MOD['list_html'] && $task_list && $CAT) {
+ $num = 1;
+ $totalpage = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $demo = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, '{DEMO}');
+ $fid = $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $page + 1;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $totalpage + 1 - $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ }
+} else if($html == 'index') {
+ if($DT['cache_hits'] && $MOD['hits']) {
+ $file = DT_CACHE.'/hits-'.$moduleid;
+ if($DT_TIME - @filemtime($file.'.dat') > $DT['cache_hits'] || @filesize($file.'.php') > 102400) update_hits($moduleid, $table);
+ }
+ if($MOD['index_html']) {
+ $file = DT_ROOT.'/'.$MOD['moduledir'].'/'.$DT['index'].'.'.$DT['file_ext'];
+ if($DT_TIME - @filemtime($file) > $task_index) tohtml('index', $module);
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/club/admin/fans.inc.php b/module/club/admin/fans.inc.php
new file mode 100644
index 0000000..a48083d
--- /dev/null
+++ b/module/club/admin/fans.inc.php
@@ -0,0 +1,95 @@
+=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+}
+switch($action) {
+ case 'delete':
+ $itemid or msg('请选择粉丝');
+ isset($recycle) ? $do->recycle($itemid) : $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'cancel':
+ $itemid or msg('请选择粉丝');
+ $do->check($itemid, 2);
+ dmsg('取消成功', $forward);
+ break;
+ case 'ban':
+ $itemid or msg('请选择粉丝');
+ $do->ban($itemid, 1);
+ dmsg('禁言成功', $forward);
+ break;
+ case 'unban':
+ $itemid or msg('请选择粉丝');
+ $do->ban($itemid, 0);
+ dmsg('取消成功', $forward);
+ break;
+ case 'restore':
+ $itemid or msg('请选择粉丝');
+ $do->restore($itemid);
+ dmsg('还原成功', $forward);
+ break;
+ case 'clear':
+ $do->clear();
+ dmsg('清空成功', $forward);
+ break;
+ case 'recycle':
+ $lists = $do->get_list('status=0'.$condition, $dorder[$order]);
+ $menuid = 3;
+ include tpl('fans', $module);
+ break;
+ case 'reject':
+ if($itemid && !$psize) {
+ $do->reject($itemid);
+ dmsg('拒绝成功', $forward);
+ } else {
+ $lists = $do->get_list('status=1'.$condition, $dorder[$order]);
+ $menuid = 2;
+ include tpl('fans', $module);
+ }
+ break;
+ case 'check':
+ if($itemid) {
+ $do->check($itemid);
+ dmsg('审核成功', $forward);
+ } else {
+ $lists = $do->get_list('status=2'.$condition, $dorder[$order]);
+ $menuid = 1;
+ include tpl('fans', $module);
+ }
+ break;
+ default:
+ $lists = $do->get_list('status=3'.$condition, $dorder[$order]);
+ $menuid = 0;
+ include tpl('fans', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/club/admin/index.html b/module/club/admin/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/club/admin/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/club/admin/index.inc.php b/module/club/admin/index.inc.php
new file mode 100644
index 0000000..b53c9a2
--- /dev/null
+++ b/module/club/admin/index.inc.php
@@ -0,0 +1,294 @@
+ 2) {
+ $msg = 1;
+ return true;
+ }
+ if(isset($msg)) return true;
+ if(isset($eml)) return true;
+ if(isset($sms)) return true;
+ if(isset($wec)) return true;
+ return false;
+}
+
+function send_notice($username, $subject, $body) {
+ global $DT, $msg, $eml, $sms, $wec;
+ if(!$username || !$subject || !$body) return;
+ if(isset($msg)) send_message($username, $subject, $body);
+ if(isset($wec)) send_weixin($username, $subject);
+ if(isset($eml) || isset($sms)) {
+ $user = userinfo($username);
+ if(isset($eml)) send_mail($user['email'], $subject, $body);
+ if(isset($sms)) send_sms($user['mobile'], $subject.$DT['sms_sign']);
+ }
+}
+
+$menus = array (
+ array('发表帖子', '?moduleid='.$moduleid.'&gid='.$gid.'&action=add'),
+ array('帖子列表', '?moduleid='.$moduleid.'&gid='.$gid),
+ array('待审核', '?moduleid='.$moduleid.'&gid='.$gid.'&action=check'),
+ array('未通过', '?moduleid='.$moduleid.'&gid='.$gid.'&action=reject'),
+ array('回收站', '?moduleid='.$moduleid.'&gid='.$gid.'&action=recycle'),
+ array('移动帖子', '?moduleid='.$moduleid.'&gid='.$gid.'&action=move'),
+);
+
+require DT_ROOT.'/module/'.$module.'/'.$module.'.class.php';
+$do = new $module($moduleid);
+
+if(in_array($action, array('add', 'edit'))) {
+ $FD = cache_read('fields-'.substr($table, strlen($DT_PRE)).'.php');
+ if($FD) require DT_ROOT.'/include/fields.func.php';
+ isset($post_fields) or $post_fields = array();
+ $CP = $MOD['cat_property'];
+ if($CP) require DT_ROOT.'/include/property.func.php';
+ isset($post_ppt) or $post_ppt = array();
+}
+
+if($_catids || $_areaids) require DT_ROOT.'/admin/admin_check.inc.php';
+
+if(in_array($action, array('', 'check', 'reject', 'recycle'))) {
+ $sfields = array('模糊', '标题', '简介', '会员名', '昵称', '编辑', 'IP', '文件路径', '内容模板');
+ $dfields = array('keyword', 'title', 'introduce', 'username', 'passport', 'editor', 'ip', 'filepath', 'template');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $sorder = array('结果排序方式', '添加时间降序', '添加时间升序', '修改时间降序', '修改时间升序', '推荐级别降序', '推荐级别升序', '浏览次数降序', '浏览次数升序', '点赞次数降序', '点赞次数升序', '反对次数降序', '反对次数升序', '收藏次数降序', '收藏次数升序', '打赏次数降序', '打赏次数升序', '打赏金额降序', '打赏金额升序', '分享次数降序', '分享次数升序', '举报次数降序', '举报次数升序', '回复时间降序', '回复时间升序', '回复数量降序', '回复数量升序', '信息ID降序', '信息ID升序');
+ $dorder = array($MOD['order'], 'addtime DESC', 'addtime ASC', 'edittime DESC', 'edittime ASC', 'level DESC', 'level ASC', 'hits DESC', 'hits ASC', 'likes DESC', 'likes ASC', 'hates DESC', 'hates ASC', 'favorites DESC', 'favorites ASC', 'awards DESC', 'awards ASC', 'award DESC', 'award ASC', 'shares DESC', 'shares ASC', 'reports DESC', 'reports ASC', 'replytime DESC', 'replytime ASC', 'reply DESC', 'reply ASC', 'itemid DESC', 'itemid ASC');
+ isset($order) && isset($dorder[$order]) or $order = 0;
+
+ isset($datetype) && in_array($datetype, array('edittime', 'addtime', 'replytime')) or $datetype = 'addtime';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ $level = isset($level) ? intval($level) : 0;
+ $ontop = isset($ontop) ? intval($ontop) : 0;
+ isset($style) or $style = 0;
+ $style = isset($COLOR[$style]) ? '#'.$style : '';
+ $thumb = isset($thumb) ? intval($thumb) : 0;
+ $guest = isset($guest) ? intval($guest) : 0;
+ $gid or $gid = '';
+ $itemid or $itemid = '';
+ (isset($ip) && is_ip($ip)) or $ip= '';
+ (isset($username) && check_name($username)) or $username = '';
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $level_select = level_select('level', '精华', $level, 'all');
+ $order_select = dselect($sorder, 'order', '', $order);
+
+ $condition = '';
+ if($_childs) $condition .= " AND catid IN (".$_childs.")";//CATE
+ if($_areaids) $condition .= " AND areaid IN (".$_areaids.")";//CITY
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($catid) $condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($level) $condition .= $level > 9 ? " AND level>0" : " AND level=$level";
+ if($ontop) $condition .= " AND ontop=$ontop";
+ if($style) $condition .= " AND style='$style'";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+ if($thumb) $condition .= " AND thumb<>''";
+ if($guest) $condition .= " AND username=''";
+ if($gid) $condition .= " AND gid=$gid";
+ if($ip) $condition .= " AND ip='$ip'";
+ if($username) $condition .= " AND username='$username'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+
+ $timetype = strpos($dorder[$order], 'replytime') === false ? 'add' : '';
+}
+switch($action) {
+ case 'add':
+ if($submit) {
+ $GRP = get_group($post['gid']);
+ $GRP or msg('指定商圈ID不存在');
+ $post['catid'] = $GRP['catid'];
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ $do->add($post);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ if($MOD['show_html'] && $post['status'] > 2) $do->tohtml($do->itemid);
+ dmsg('添加成功', '?moduleid='.$moduleid.'&action='.$action.'&catid='.$post['catid']);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $content = '';
+ $status = 3;
+ $addtime = timetodate($DT_TIME);
+ $username = $_username;
+ $item = array();
+ $menuid = 0;
+ isset($url) or $url = '';
+ if($url) {
+ $tmp = fetch_url($url);
+ if($tmp) extract($tmp);
+ }
+ $history = 0;
+ $gid or $gid = last_gid();
+ $GRP = $gid ? get_group($gid) : array();
+ include tpl('edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ $item = $do->get_one();
+ extract($item);
+ $GRP = $gid ? get_group($gid) : array();
+ $history = history($moduleid, $itemid);
+ $addtime = timetodate($addtime);
+ $menuon = array('4', '3', '2', '1');
+ $menuid = $menuon[$status];
+ include tpl($action, $module);
+ }
+ break;
+ case 'move':
+ if($submit) {
+ $fromids or msg('请填写来源ID');
+ in_array($fromtype, array('gid', 'itemid')) or msg('请选择ID类型');
+ $tocatid = intval($tocatid);
+ $GRP = get_group($tocatid);
+ ($GRP && $GRP['status'] == 3) or msg('目标商圈不存在');
+ if($tocatid) {
+ $db->query("UPDATE {$table} SET gid=$tocatid WHERE `{$fromtype}` IN ($fromids)");
+ $fromtype = $fromtype == 'itemid' ? 'tid' : 'gid';
+ $db->query("UPDATE {$table_reply} SET gid=$tocatid WHERE `{$fromtype}` IN ($fromids)");
+ dmsg('移动成功', $forward);
+ } else {
+ msg('请填写目标商圈ID');
+ }
+ } else {
+ $itemid = $itemid ? implode(',', $itemid) : '';
+ $menuid = 5;
+ include tpl($action, $module);
+ }
+ break;
+ case 'update':
+ is_array($itemid) or msg('请选择帖子');
+ foreach($itemid as $v) {
+ $do->update($v);
+ }
+ dmsg('更新成功', $forward);
+ break;
+ case 'tohtml':
+ is_array($itemid) or msg('请选择帖子');
+ $html_itemids = $itemid;
+ foreach($html_itemids as $itemid) {
+ tohtml('show', $module);
+ }
+ dmsg('生成成功', $forward);
+ break;
+ case 'delete':
+ $itemid or msg('请选择帖子');
+ isset($recycle) ? $do->recycle($itemid) : $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'restore':
+ $itemid or msg('请选择帖子');
+ $do->restore($itemid);
+ dmsg('还原成功', $forward);
+ break;
+ case 'clear':
+ $do->clear();
+ dmsg('清空成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择帖子');
+ $level = intval($level);
+ ($level >= 0 && $level <= 9) or $level = 0;
+ #$do->level($itemid, $level);
+ foreach($itemid as $tid) {
+ $db->query("UPDATE {$table} SET level=$level WHERE itemid=$tid");
+ }
+ if(need_notice()) {
+ foreach($itemid as $tid) {
+ $T = $db->get_one("SELECT title,linkurl,username FROM {$table} WHERE itemid=$tid");
+ $body = lang($L['manage_msg_content'], array($MOD['linkurl'].$T['linkurl'], nl2br($reason), $_username));
+ send_notice($T['username'], lang($L['manage_msg_title'], array('帖子', dsubstr($T['title'], 20, '...'), $level ? '加入精华' : '取消精华')), lang($L['manage_msg_content'], array($MOD['linkurl'].$T['linkurl'], nl2br($reason), $_username)));
+ }
+ }
+ dmsg($level ? '精华'.$level.'设置成功' : '精华取消成功', $forward);
+ break;
+ case 'ontop':
+ $itemid or msg('请选择帖子');
+ $ontop = intval($ontop);
+ in_array($ontop, array(0, 1, 2)) or $ontop = 0;
+ foreach($itemid as $tid) {
+ $db->query("UPDATE {$table} SET ontop=$ontop WHERE itemid=$tid");
+ }
+ if(need_notice()) {
+ foreach($itemid as $tid) {
+ $T = $db->get_one("SELECT title,linkurl,username FROM {$table} WHERE itemid=$tid");
+ $body = lang($L['manage_msg_content'], array($MOD['linkurl'].$T['linkurl'], nl2br($reason), $_username));
+ send_notice($T['username'], lang($L['manage_msg_title'], array('帖子', dsubstr($T['title'], 20, '...'), $ontop ? '置顶' : '取消置顶')), lang($L['manage_msg_content'], array($MOD['linkurl'].$T['linkurl'], nl2br($reason), $_username)));
+ }
+ }
+ dmsg($ontop ? '置顶设置成功' : '置顶取消成功', $forward);
+ break;
+ case 'style':
+ $itemid or msg('请选择帖子');
+ $style = isset($COLOR[$style]) ? '#'.$style : '';
+ foreach($itemid as $tid) {
+ $db->query("UPDATE {$table} SET style='$style' WHERE itemid=$tid");
+ }
+ if(need_notice()) {
+ foreach($itemid as $tid) {
+ $T = $db->get_one("SELECT title,linkurl,username FROM {$table} WHERE itemid=$tid");
+ $body = lang($L['manage_msg_content'], array($MOD['linkurl'].$T['linkurl'], nl2br($reason), $_username));
+ send_notice($T['username'], lang($L['manage_msg_title'], array('帖子', dsubstr($T['title'], 20, '...'), $style ? '高亮' : '取消高亮')), lang($L['manage_msg_content'], array($MOD['linkurl'].$T['linkurl'], nl2br($reason), $_username)));
+ }
+ }
+ dmsg($style ? '高亮设置成功' : '高亮取消成功', $forward);
+ break;
+ case 'recycle':
+ $lists = $do->get_list('status=0'.$condition, $dorder[$order]);
+ $menuid = 4;
+ include tpl('index', $module);
+ break;
+ case 'reject':
+ if($itemid && !$psize) {
+ $do->reject($itemid);
+ dmsg('拒绝成功', $forward);
+ } else {
+ $lists = $do->get_list('status=1'.$condition, $dorder[$order]);
+ $menuid = 3;
+ include tpl('index', $module);
+ }
+ break;
+ case 'check':
+ if($itemid && !$psize) {
+ $do->check($itemid);
+ dmsg('审核成功', $forward);
+ } else {
+ $lists = $do->get_list('status=2'.$condition, $dorder[$order]);
+ $menuid = 2;
+ include tpl('index', $module);
+ }
+ break;
+ default:
+ $lists = $do->get_list('status=3'.$condition, $dorder[$order]);
+ $menuid = 1;
+ include tpl('index', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/club/admin/install.inc.php b/module/club/admin/install.inc.php
new file mode 100644
index 0000000..4a59e22
--- /dev/null
+++ b/module/club/admin/install.inc.php
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/module/club/admin/manage.inc.php b/module/club/admin/manage.inc.php
new file mode 100644
index 0000000..c399052
--- /dev/null
+++ b/module/club/admin/manage.inc.php
@@ -0,0 +1,48 @@
+query("DELETE FROM {$table_manage} WHERE addtime<$time");
+ dmsg('清理成功', $forward);
+ break;
+ default:
+ $sfields = array('主题/回复', '操作原因', '操作内容', '操作人');
+ $dfields = array('title', 'reason', 'content', 'username');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $typeid = isset($typeid) ? intval($typeid) : 0;
+ $tid = isset($tid) ? intval($tid) : 0;
+ $rid = isset($rid) ? intval($rid) : 0;
+ $message = isset($message) ? intval($message) : -1;
+ $gid or $gid = '';
+ $tid or $tid = '';
+ $rid or $rid = '';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+
+ $condition = '';
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($typeid) $condition .= " AND typeid='$typeid'";
+ if($gid) $condition .= " AND gid='$gid'";
+ if($tid) $condition .= " AND tid='$tid'";
+ if($rid) $condition .= " AND rid='$rid'";
+ if($message > -1) $condition .= " AND message='$message'";
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ $lists = $do->get_list('1'.$condition);
+ $menuid = 0;
+ include tpl('manage', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/club/admin/remkdir.inc.php b/module/club/admin/remkdir.inc.php
new file mode 100644
index 0000000..ca25275
--- /dev/null
+++ b/module/club/admin/remkdir.inc.php
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/module/club/admin/template/edit.tpl.php b/module/club/admin/template/edit.tpl.php
new file mode 100644
index 0000000..9b0c05c
--- /dev/null
+++ b/module/club/admin/template/edit.tpl.php
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+单页采编
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/club/admin/template/fans.tpl.php b/module/club/admin/template/fans.tpl.php
new file mode 100644
index 0000000..74cd085
--- /dev/null
+++ b/module/club/admin/template/fans.tpl.php
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+ 至
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/club/admin/template/group.tpl.php b/module/club/admin/template/group.tpl.php
new file mode 100644
index 0000000..d02288a
--- /dev/null
+++ b/module/club/admin/template/group.tpl.php
@@ -0,0 +1,131 @@
+
+
+
+
+
+
+
+
+
+
+
+>群聊
+>开启
+>关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+取消', 0, 'onchange="this.form.action=\'?moduleid='.$moduleid.'&file='.$file.'&action=level\';this.form.submit();"');?>
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/club/admin/template/index.html b/module/club/admin/template/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/club/admin/template/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/club/admin/template/index.tpl.php b/module/club/admin/template/index.tpl.php
new file mode 100644
index 0000000..242fb64
--- /dev/null
+++ b/module/club/admin/template/index.tpl.php
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+加精 取消 精华1 精华2 精华3
+
+置顶 取消 本圈 全局
+
+高亮 取消
+$v) {
+?>
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/club/admin/template/manage.tpl.php b/module/club/admin/template/manage.tpl.php
new file mode 100644
index 0000000..291239d
--- /dev/null
+++ b/module/club/admin/template/manage.tpl.php
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+$v) {
+?>
+>
+
+
+ 至
+
+通知
+>已发
+>未发
+
+
+
+
+
+
+
+
+
+
+
+商圈
+帖子/回复
+操作
+操作内容
+操作人
+操作时间
+操作原因
+通知
+
+$v) {?>
+
+
+ >
+
+
+
+
+
+已发' : '未发 ';?>
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/club/admin/template/reply.tpl.php b/module/club/admin/template/reply.tpl.php
new file mode 100644
index 0000000..bb5efa8
--- /dev/null
+++ b/module/club/admin/template/reply.tpl.php
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+回复内容
+操作
+
+$v) {?>
+
+
+
+
+
+
+支持 () |
+反对 () |
+举报 () |
+回复 ()
+
+
+
+
+
+Guest
+
+
+
+
+
+ IP:
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+取消', 0, 'onchange="this.form.action=\'?moduleid='.$moduleid.'&file='.$file.'&action=level\';this.form.submit();"');?>
+
+
+
+
+'.$pages.'' : '';?>
+
+
+
+
\ No newline at end of file
diff --git a/module/club/admin/template/reply_edit.tpl.php b/module/club/admin/template/reply_edit.tpl.php
new file mode 100644
index 0000000..1f66b6d
--- /dev/null
+++ b/module/club/admin/template/reply_edit.tpl.php
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/club/admin/template/setting.tpl.php b/module/club/admin/template/setting.tpl.php
new file mode 100644
index 0000000..9c02ea0
--- /dev/null
+++ b/module/club/admin/template/setting.tpl.php
@@ -0,0 +1,628 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/club/admin/uninstall.inc.php b/module/club/admin/uninstall.inc.php
new file mode 100644
index 0000000..28f01c9
--- /dev/null
+++ b/module/club/admin/uninstall.inc.php
@@ -0,0 +1,9 @@
+query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_data_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_fans_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_group_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_manage_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_reply_".$moduleid."`");
+?>
\ No newline at end of file
diff --git a/module/club/club.class.php b/module/club/club.class.php
new file mode 100644
index 0000000..bc05224
--- /dev/null
+++ b/module/club/club.class.php
@@ -0,0 +1,311 @@
+moduleid = $moduleid;
+ $this->table = $table;
+ $this->table_data = $table_data;
+ $this->split = $MOD['split'];
+ $this->fields = array('catid','areaid','gid','video','level','title','style','fee','introduce','thumb','tag','status','hits','username','addtime','editor','edittime','ip','template', 'linkurl','filepath','note');
+ }
+
+ function club($moduleid) {
+ $this->__construct($moduleid);
+ }
+
+ function pass($post) {
+ if(!is_array($post)) return false;
+ if(strlen($post['title']) < 3) return $this->_(lang('message->pass_title'));
+ if(DT_MAX_LEN && strlen(clear_img($post['content'])) > DT_MAX_LEN) $this->_(lang('message->pass_max'));
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $_username, $_userid, $_cname;
+ if($post['level'] > 3) $post['level'] = 3;
+ $post['video'] = strpos($post['content'], 'itemid) {
+ $new = $post['content'];
+ if($post['thumb']) $new .= ' ';
+ $r = $this->get_one();
+ $old = $r['content'];
+ if($r['thumb']) $old .= ' ';
+ delete_diff($new, $old);
+ } else {
+ $post['ip'] = DT_IP;
+ }
+ $content = $post['content'];
+ unset($post['content']);
+ $post = dhtmlspecialchars($post);
+ $post['content'] = addslashes(dsafe($content));
+ return array_map("trim", $post);
+ }
+
+ function get_one() {
+ $r = DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$this->itemid");
+ if($r) {
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ $t = DB::get_one("SELECT content FROM {$content_table} WHERE itemid=$this->itemid");
+ $r['content'] = $t ? $t['content'] : '';
+ return $r;
+ } else {
+ return array();
+ }
+ }
+
+ function get_list($condition = 'status=3', $order = 'addtime DESC', $cache = '') {
+ global $MOD, $pages, $page, $pagesize, $offset, $items, $sum, $table_group;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition", $cache);
+ $items = $r['num'];
+ }
+ $pages = defined('CATID') ? listpages(1, CATID, $items, $page, $pagesize, 10, $MOD['linkurl']) : pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = $catids = $groupids = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize", $cache);
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['replydate'] = timetodate($r['replytime'], 5);
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $catids[$r['catid']] = $r['catid'];
+ $groupids[$r['gid']] = $r['gid'];
+ $lists[] = $r;
+ }
+ if($catids) {
+ $CATS = array();
+ $result = DB::query("SELECT catid,catname,linkurl FROM ".DT_PRE."category WHERE catid IN (".implode(',', $catids).")");
+ while($r = DB::fetch_array($result)) {
+ $CATS[$r['catid']] = $r;
+ }
+ if($CATS) {
+ foreach($lists as $k=>$v) {
+ $lists[$k]['catname'] = $v['catid'] ? $CATS[$v['catid']]['catname'] : '';
+ $lists[$k]['caturl'] = $v['catid'] ? $MOD['linkurl'].$CATS[$v['catid']]['linkurl'] : '';
+ }
+ }
+ }
+ if($groupids) {
+ $GRPS = array();
+ $result = DB::query("SELECT itemid,title,linkurl FROM {$table_group} WHERE itemid IN (".implode(',', $groupids).")");
+ while($r = DB::fetch_array($result)) {
+ $GRPS[$r['itemid']] = $r;
+ }
+ if($GRPS) {
+ foreach($lists as $k=>$v) {
+ $lists[$k]['groupname'] = $v['gid'] ? $GRPS[$v['gid']]['title'] : '';
+ $lists[$k]['groupurl'] = $v['gid'] ? $MOD['linkurl'].$GRPS[$v['gid']]['linkurl'] : '';
+ }
+ }
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $MOD;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ DB::query("REPLACE INTO {$content_table} (itemid,content) VALUES ('$this->itemid', '$post[content]')");
+ $this->update($this->itemid);
+ if($post['status'] == 3 && $post['username'] && $MOD['credit_add']) {
+ credit_add($post['username'], $MOD['credit_add']);
+ credit_record($post['username'], $MOD['credit_add'], 'system', lang('my->credit_record_add', array($MOD['name'])), 'ID:'.$this->itemid);
+ }
+ clear_upload($post['content'].$post['thumb'], $this->itemid);
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $this->delete($this->itemid, false);
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ DB::query("REPLACE INTO {$content_table} (itemid,content) VALUES ('$this->itemid', '$post[content]')");
+ $this->update($this->itemid);
+ clear_upload($post['content'].$post['thumb'], $this->itemid);
+ if($post['status'] > 2) {
+ history($this->moduleid, $this->itemid, 'del');
+ $this->tohtml($this->itemid, $post['catid']);
+ }
+ return true;
+ }
+
+ function tohtml($itemid = 0, $catid = 0) {
+ global $module, $MOD;
+ if($MOD['show_html'] && $itemid) tohtml('show', $module, "itemid=$itemid");
+ }
+
+ function update($itemid) {
+ global $table_reply;
+ $item = DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$itemid");
+ $update = '';
+ $GRP = get_group($item['gid']);
+ $keyword = $item['title'].','.$GRP['title'].','.strip_tags(cat_pos(get_cat($item['catid']), ','));
+ if($keyword != $item['keyword']) {
+ $keyword = str_replace("//", '', addslashes($keyword));
+ $update .= ",keyword='$keyword'";
+ }
+ if($item['username']) {
+ $passport = addslashes(get_user($item['username'], 'username', 'passport'));
+ if($passport != $item['passport']) $update .= ",passport='$passport'";
+ }
+ if($GRP['areaid'] != $item['areaid']) $update .= ",areaid='$GRP[areaid]'";
+ $item['itemid'] = $itemid;
+ $linkurl = itemurl($item);
+ if($linkurl != $item['linkurl']) $update .= ",linkurl='$linkurl'";
+ if($item['hits'] > 1 || $item['status'] == 3) {
+ $reply = DB::count($table_reply, "tid=$itemid AND status=3");
+ if($reply != $item['reply']) $update .= ",reply='$reply'";
+ }
+ if($update) DB::query("UPDATE {$this->table} SET ".(substr($update, 1))." WHERE itemid=$itemid");
+ }
+
+ function recycle($itemid) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->recycle($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=0 WHERE itemid=$itemid");
+ $this->delete($itemid, false);
+ return true;
+ }
+ }
+
+ function restore($itemid) {
+ global $module, $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->restore($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=3 WHERE itemid=$itemid");
+ $this->tohtml($itemid);
+ return true;
+ }
+ }
+
+ function delete($itemid, $all = true) {
+ global $MOD, $table_reply;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->delete($v, $all);
+ }
+ } else {
+ $this->itemid = $itemid;
+ $r = $this->get_one();
+ if($MOD['show_html']) {
+ $_file = DT_ROOT.'/'.$MOD['moduledir'].'/'.$r['linkurl'];
+ html_del($_file);
+ $i = 1;
+ while($i) {
+ $_file = DT_ROOT.'/'.$MOD['moduledir'].'/'.itemurl($r, $i);
+ if(is_file($_file)) {
+ html_del($_file);
+ $i++;
+ } else {
+ break;
+ }
+ }
+ }
+ if($all) {
+ $userid = get_user($r['username']);
+ if($r['thumb']) delete_upload($r['thumb'], $userid);
+ if($r['content']) delete_local($r['content'], $userid);
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ DB::query("DELETE FROM {$content_table} WHERE itemid=$itemid");
+ if($MOD['cat_property']) DB::query("DELETE FROM ".DT_PRE."category_value WHERE moduleid=$this->moduleid AND itemid=$itemid");
+ if($r['username'] && $MOD['credit_del']) {
+ credit_add($r['username'], -$MOD['credit_del']);
+ credit_record($r['username'], -$MOD['credit_del'], 'system', lang('my->credit_record_del', array($MOD['name'])), 'ID:'.$this->itemid);
+ }
+ history($this->moduleid, $itemid, 'del');
+ $result = DB::query("SELECT * FROM {$table_reply} WHERE tid=$itemid");
+ while($rr = DB::fetch_array($result)) {
+ if($rr['content']) delete_local($rr['content'], get_user($rr['username']));
+ }
+ DB::query("DELETE FROM {$table_reply} WHERE tid=$itemid");
+ }
+ }
+ }
+
+ function check($itemid) {
+ global $_username, $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->check($v); }
+ } else {
+ $this->itemid = $itemid;
+ $item = $this->get_one();
+ if($MOD['credit_add'] && $item['username'] && $item['hits'] < 1) {
+ credit_add($item['username'], $MOD['credit_add']);
+ credit_record($item['username'], $MOD['credit_add'], 'system', lang('my->credit_record_add', array($MOD['name'])), 'ID:'.$this->itemid);
+ }
+ DB::query("UPDATE {$this->table} SET status=3,editor='$_username',edittime=".DT_TIME." WHERE itemid=$itemid");
+ history($this->moduleid, $itemid, 'del');
+ $this->tohtml($itemid);
+ return true;
+ }
+ }
+
+ function reject($itemid) {
+ global $_username;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->reject($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=1,editor='$_username' WHERE itemid=$itemid");
+ return true;
+ }
+ }
+
+ function clear($condition = 'status=0') {
+ $result = DB::query("SELECT itemid FROM {$this->table} WHERE $condition");
+ while($r = DB::fetch_array($result)) {
+ $this->delete($r['itemid']);
+ }
+ }
+
+ function level($itemid, $level) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET level=$level WHERE itemid IN ($itemids)");
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/club/common.inc.php b/module/club/common.inc.php
new file mode 100644
index 0000000..b039844
--- /dev/null
+++ b/module/club/common.inc.php
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/module/club/fans.inc.php b/module/club/fans.inc.php
new file mode 100644
index 0000000..975d3ea
--- /dev/null
+++ b/module/club/fans.inc.php
@@ -0,0 +1,28 @@
+get_one("SELECT COUNT(*) AS num FROM {$table_fans} WHERE $condition");
+$items = $r['num'];
+$pages = pages($items, $page, $pagesize);
+$result = $db->query("SELECT * FROM {$table_fans} WHERE $condition ORDER BY addtime ASC LIMIT $offset,$pagesize");
+while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 'Y/m/d H:i');
+ $lists[] = $r;
+}
+include DT_ROOT.'/include/seo.inc.php';
+$seo_title = $L['fans_title'].$seo_delimiter.$GRP['title'].$MOD['seo_name'].$seo_delimiter.$seo_page.$seo_modulename.$seo_delimiter.$seo_sitename;
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+} else {
+ if($sns_app) $seo_title = $MOD['name'];
+}
+$template = $GRP['fans_template'] ? $GRP['fans_template'] : ($MOD['template_fans'] ? $MOD['template_fans'] : 'fans');
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/club/global.func.php b/module/club/global.func.php
new file mode 100644
index 0000000..209b2a1
--- /dev/null
+++ b/module/club/global.func.php
@@ -0,0 +1,43 @@
+ 0 ? DB::get_one("SELECT * FROM {$table_group} WHERE itemid=$gid") : array();
+}
+
+function is_fans($GRP) {
+ global $table_fans, $_username, $_passport;
+ if($_username) {
+ if($GRP['username'] == $_username) return true;
+ if($GRP['manager'] && in_array($_passport, explode('|', $GRP['manager']))) return true;
+ $t = DB::get_one("SELECT * FROM {$table_fans} WHERE gid=$GRP[itemid] AND username='$_username' AND status=3");
+ if($t) return $t;
+ }
+ return false;
+}
+
+function is_admin($GRP) {
+ global $_admin, $_username, $_passport;
+ if($_username) {
+ if($_admin == 1) return 'admin';
+ if($GRP['username'] == $_username) return 'founder';
+ if($GRP['manager'] && in_array($_passport, explode('|', $GRP['manager']))) return 'manager';
+ }
+ return '';
+}
+
+function last_gid() {
+ global $_username, $table, $table_group, $table_fans, $table_reply;
+ $t = DB::get_one("SELECT gid FROM {$table} WHERE username='$_username' ORDER BY itemid DESC");
+ if($t) return $t['gid'];
+ $t = DB::get_one("SELECT itemid FROM {$table_group} WHERE status=3 AND username='$_username' ORDER BY itemid DESC");
+ if($t) return $t['itemid'];
+ $t = DB::get_one("SELECT gid FROM {$table_fans} WHERE username='$_username' ORDER BY itemid DESC");
+ if($t) return $t['gid'];
+ $t = DB::get_one("SELECT gid FROM {$table_reply} WHERE username='$_username' ORDER BY itemid DESC");
+ if($t) return $t['gid'];
+ $t = DB::get_one("SELECT itemid FROM {$table_group} WHERE status=3 ORDER BY itemid DESC");
+ if($t) return $t['itemid'];
+ return 0;
+}
+?>
\ No newline at end of file
diff --git a/module/club/group.htm.php b/module/club/group.htm.php
new file mode 100644
index 0000000..be097ec
--- /dev/null
+++ b/module/club/group.htm.php
@@ -0,0 +1,128 @@
+count($table, $condition);
+ if($items != $GRP['post']) {
+ $GRP['post'] = $items;
+ $db->query("UPDATE {$table_group} SET post=$items WHERE itemid=$catid");
+ }
+ $reply = $db->count($table_reply, $condition, $CFG['db_expires']);
+ if($reply != $GRP['reply']) {
+ $GRP['reply'] = $reply;
+ $db->query("UPDATE {$table_group} SET reply=$reply WHERE itemid=$catid");
+ }
+ $fans = $db->count($table_fans, $condition, $CFG['db_expires']);
+ if($fans != $GRP['fans']) {
+ $GRP['fans'] = $fans;
+ $db->query("UPDATE {$table_group} SET fans=$fans WHERE itemid=$catid");
+ }
+} else {
+ $items = $GRP['post'];
+}
+$pagesize = $MOD['pagesize'];
+$showpage = 1;
+$datetype = 5;
+$template = $GRP['template'] ? $GRP['template'] : 'group';
+$total = max(ceil($items/$MOD['pagesize']), 1);
+if(isset($fid) && isset($num)) {
+ $page = $fid;
+ $topage = $fid + $num - 1;
+ $total = $topage < $total ? $topage : $total;
+}
+for(; $page <= $total; $page++) {
+ $offset = ($page-1)*$pagesize;
+ $_CAT = array('catid' => $GRP['itemid'], 'catdir' => $GRP['filepath'], 'catname' => $GRP['title'], 'linkurl' => $GRP['linkurl']);
+ $pages = listpages($_CAT, $items, $page, $pagesize);
+ $tags = array();
+ if($page == 1) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE status=3 AND ontop=2 ORDER BY addtime DESC LIMIT ".$MOD['maxontop'], 'CACHE');
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ if(!$r['username']) $r['username'] = 'Guest';
+ $tags[] = $r;
+ }
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE status=3 AND gid=$gid AND ontop=1 ORDER BY addtime DESC LIMIT ".$MOD['maxontop'], 'CACHE');
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ if(!$r['username']) $r['username'] = 'Guest';
+ $tags[] = $r;
+ }
+ }
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}");
+ while($r = $db->fetch_array($result)) {
+ if($r['ontop']) continue;
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ if(!$r['username']) $r['username'] = 'Guest';
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ include DT_ROOT.'/include/seo.inc.php';
+ $seo_title = $GRP['title'].$MOD['seo_name'].$seo_delimiter.$seo_page.$seo_modulename.$seo_delimiter.$seo_sitename;
+ $head_keywords = $GRP['title'].$MOD['seo_name'].','.$MOD['name'];
+ $head_description = dsubstr(dtrim($GRP['content']), 200);
+ $destoon_task = "moduleid=$moduleid&html=list&catid=$catid&page=$page";
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].listurl($_CAT, $page);
+ $filename = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($_CAT, $page);
+ $DT_PC = $GLOBALS['DT_PC'] = 1;
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ if($DT['pcharset']) $filename = convert($filename, DT_CHARSET, $DT['pcharset']);
+ file_put($filename, $data);
+ if($page == 1) {
+ $indexname = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($_CAT, 0);
+ if($DT['pcharset']) $indexname = convert($indexname, DT_CHARSET, $DT['pcharset']);
+ file_copy($filename, $indexname);
+ }
+ if($EXT['mobile_enable']) {
+ include DT_ROOT.'/include/mobile.htm.php';
+ $head_pc = str_replace($MOD['mobile'], $MOD['linkurl'], $head_mobile);
+ if($CAT['parentid']) $PCAT = get_cat($CAT['parentid']);
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($_CAT, '{destoon_page}'));
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $tags = array();
+ foreach($tags as $r) {
+ $r['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $r['linkurl']);
+ $r['date'] = timetodate($r[$time], 5);
+ $tags[] = $r;
+ }
+ if($items) $js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid.'&typeid='.$typeid;
+ $head_title = $head_name = $GRP['title'].$MOD['seo_name'];
+ $filename = str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename);
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put($filename, $data);
+ if($page == 1) file_copy($filename, str_replace(DT_ROOT, DT_ROOT.'/mobile', $indexname));
+ }
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/club/group.inc.php b/module/club/group.inc.php
new file mode 100644
index 0000000..edde41b
--- /dev/null
+++ b/module/club/group.inc.php
@@ -0,0 +1,133 @@
+without_permission');
+ exit(include template('nofans', $module));
+}
+$CAT = get_cat($GRP['catid']);
+$GRP['managers'] = $GRP['manager'] ? explode('|', $GRP['manager']) : array();
+$admin = is_admin($GRP);
+$typeid = isset($typeid) ? intval($typeid) : 0;
+isset($TYPE[$typeid]) or $typeid = 0;
+$condition = 'status=3 AND gid='.$catid;
+if($typeid) {
+ switch($typeid) {
+ case 1:
+ $MOD['order'] = 'addtime DESC';
+ break;
+ case 2:
+ $MOD['order'] = 'replytime DESC';
+ break;
+ case 3:
+ $condition .= " AND level>0";
+ break;
+ case 4:
+ $condition .= " AND addtime>".($DT_TIME - 86400*30);
+ $MOD['order'] = 'hits DESC';
+ break;
+ }
+}
+if($typeid) {
+ $items = $db->count($table, $condition, $CFG['db_expires']);
+} else {
+ if($page == 1) {
+ $items = $db->count($table, $condition, $CFG['db_expires']);
+ if($items != $GRP['post']) {
+ $GRP['post'] = $items;
+ $db->query("UPDATE {$table_group} SET post=$items WHERE itemid=$catid");
+ }
+ $reply = $db->count($table_reply, $condition, $CFG['db_expires']);
+ if($reply != $GRP['reply']) {
+ $GRP['reply'] = $reply;
+ $db->query("UPDATE {$table_group} SET reply=$reply WHERE itemid=$catid");
+ }
+ $fans = $db->count($table_fans, $condition, $CFG['db_expires']);
+ if($fans != $GRP['fans']) {
+ $GRP['fans'] = $fans;
+ $db->query("UPDATE {$table_group} SET fans=$fans WHERE itemid=$catid");
+ }
+ } else {
+ $items = $GRP['post'];
+ }
+}
+$pagesize = $MOD['pagesize'];
+$offset = ($page-1)*$pagesize;
+if($typeid) {
+ $pages = pages($items, $page, $pagesize);
+} else {
+ $pages = listpages(array('catid' => $GRP['itemid'], 'catdir' => $GRP['filepath'], 'catname' => $GRP['title'], 'linkurl' => $GRP['linkurl']), $items, $page, $pagesize);
+}
+$tags = array();
+if($typeid == 0 && $page == 1) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE status=3 AND ontop=2 ORDER BY addtime DESC LIMIT ".$MOD['maxontop'], 'CACHE');
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ if(!$r['username']) $r['username'] = 'Guest';
+ $tags[] = $r;
+ }
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE status=3 AND gid=$gid AND ontop=1 ORDER BY addtime DESC LIMIT ".$MOD['maxontop'], 'CACHE');
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ if(!$r['username']) $r['username'] = 'Guest';
+ $tags[] = $r;
+ }
+}
+if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ if($r['ontop']) continue;
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ if(!$r['username']) $r['username'] = 'Guest';
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+}
+$_CAT = array('catid' => $GRP['itemid'], 'catdir' => $GRP['filepath'], 'catname' => $GRP['title']);
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].listurl($_CAT, $page);
+} else {
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'replytime';
+ if(strpos($DT_URL, 'typeid') === false) {
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($_CAT, '{destoon_page}'));
+ } else {
+ $pages = mobile_pages($items, $page, $pagesize);
+ }
+ $lists = array();
+ foreach($tags as $r) {
+ $r['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $r['linkurl']);
+ $r['date'] = timetodate($r[$time], 5);
+ $lists[] = $r;
+ }
+ $tags = $lists;
+ if($items) $js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid.'&typeid='.$typeid;
+ $head_title = $head_name = $GRP['title'].$MOD['seo_name'];
+ if($sns_app) $seo_title = $MOD['name'];
+}
+$showpage = 1;
+$datetype = 5;
+include DT_ROOT.'/include/seo.inc.php';
+$seo_title = ($typeid ? $TYPE[$typeid].$seo_delimiter : '').$GRP['title'].$MOD['seo_name'].$seo_delimiter.$seo_page.$seo_modulename.$seo_delimiter.$seo_sitename;
+$head_keywords = $GRP['title'].$MOD['seo_name'].','.$MOD['name'];
+$head_description = dsubstr(dtrim($GRP['content']), 200);
+$template = $GRP['template'] ? $GRP['template'] : ($MOD['template_group'] ? $MOD['template_group'] : 'group');
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/club/index.htm.php b/module/club/index.htm.php
new file mode 100644
index 0000000..2933a86
--- /dev/null
+++ b/module/club/index.htm.php
@@ -0,0 +1,46 @@
+get_one("SELECT COUNT(*) AS num FROM {$table_group} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].'index.php?page={destoon_page}');
+ $tags = array();
+ if($items) {
+ $order = $MOD['order'];
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT * FROM {$table_group} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?action=group&job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put(str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename), $data);
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/club/index.html b/module/club/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/club/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/club/join.class.php b/module/club/join.class.php
new file mode 100644
index 0000000..25210e3
--- /dev/null
+++ b/module/club/join.class.php
@@ -0,0 +1,119 @@
+table = $table_fans;
+ $this->fields = array('gid','reason','username','passport','addtime','status');
+ }
+
+ function djoin() {
+ $this->__construct();
+ }
+
+ function pass($post) {
+ global $GRP, $L;
+ if(!is_array($post)) return false;
+ if($GRP['join_type'] && !$post['reason']) return $this->_($L['join_pass_reason']);
+ if(strlen($post['reason']) > 3*500) return $this->_($L['join_pass_max_reason']);
+ return true;
+ }
+
+ function set($post) {
+ global $_username, $_passport;
+ $post['status'] = $post['status'] == 3 ? 3 : 2;
+ if($this->itemid) {
+ //
+ } else {
+ $post['addtime'] = DT_TIME;
+ $post['username'] = $_username;
+ $post['passport'] = $_passport;
+ }
+ $post = dhtmlspecialchars($post);
+ return array_map("trim", $post);
+ }
+
+ function get_one() {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid='$this->itemid'");
+ }
+
+ function get_list($condition = 'status=3', $order = 'itemid DESC') {
+ global $MOD, $table, $table_group, $pages, $page, $pagesize, $offset, $items, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = $gids = $GRPS = array();
+ $result = DB::query("SELECT itemid,gid,addtime FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $gids[$r['gid']] = $r['gid'];
+ $lists[] = $r;
+ }
+ if($gids) {
+ $result = DB::query("SELECT * FROM {$table_group} WHERE itemid IN (".implode(',', $gids).")");
+ while($r = DB::fetch_array($result)) {
+ $GRPS[$r['itemid']] = $r;
+ }
+ if($GRPS) {
+ foreach($lists as $k=>$v) {
+ $lists[$k]['title'] = $GRPS[$v['gid']]['title'];
+ $lists[$k]['thumb'] = $GRPS[$v['gid']]['thumb'];
+ $lists[$k]['post'] = $GRPS[$v['gid']]['post'];
+ $lists[$k]['fans'] = $GRPS[$v['gid']]['fans'];
+ $lists[$k]['linkurl'] = $MOD['linkurl'].$GRPS[$v['gid']]['linkurl'];
+ }
+ }
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ return true;
+ }
+
+ function delete($itemid) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->delete($v);
+ }
+ } else {
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ }
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/club/list.htm.php b/module/club/list.htm.php
new file mode 100644
index 0000000..393ce9f
--- /dev/null
+++ b/module/club/list.htm.php
@@ -0,0 +1,92 @@
+count($table_group, $condition);
+ if($items != $CAT['item']) {
+ $CAT['item'] = $items;
+ $db->query("UPDATE {$DT_PRE}category SET item=$items WHERE catid=$catid");
+ }
+} else {
+ $items = $CAT['item'];
+}
+$showpage = 1;
+$datetype = 5;
+$template = $CAT['template'] ? $CAT['template'] : ($MOD['template_list'] ? $MOD['template_list'] : 'list');
+$total = max(ceil($items/$pagesize), 1);
+if(isset($fid) && isset($num)) {
+ $page = $fid;
+ $topage = $fid + $num - 1;
+ $total = $topage < $total ? $topage : $total;
+}
+for(; $page <= $total; $page++) {
+ $offset = ($page-1)*$pagesize;
+ $pages = listpages($CAT, $items, $page, $pagesize);
+ $tags = array();
+ $result = $db->query("SELECT * FROM {$table_group} WHERE {$condition} ORDER BY addtime DESC LIMIT {$offset},{$pagesize}");
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $r['introduce'] = dsubstr(dtrim($r['content']), 60, '...');
+ $r['managers'] = $r['manager'] ? explode('|', $r['manager']) : array();
+ $tags[] = $r;
+ }
+ $seo_file = 'list';
+ include DT_ROOT.'/include/seo.inc.php';
+ $destoon_task = "moduleid=$moduleid&html=list&catid=$catid&page=$page";
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].($page > 1 ?listurl($CAT, $page) : $CAT['linkurl']);
+ $filename = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, $page);
+ $_tags = $tags;
+ $DT_PC = $GLOBALS['DT_PC'] = 1;
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ if($DT['pcharset']) $filename = convert($filename, DT_CHARSET, $DT['pcharset']);
+ file_put($filename, $data);
+ if($page == 1) {
+ $indexname = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, 0);
+ if($DT['pcharset']) $indexname = convert($indexname, DT_CHARSET, $DT['pcharset']);
+ file_copy($filename, $indexname);
+ }
+ if($EXT['mobile_enable']) {
+ include DT_ROOT.'/include/mobile.htm.php';
+ $head_pc = str_replace($MOD['mobile'], $MOD['linkurl'], $head_mobile);
+ if($CAT['parentid']) $PCAT = get_cat($CAT['parentid']);
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($CAT, '{destoon_page}'));
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $tags = array();
+ foreach($_tags as $r) {
+ $r['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $r['linkurl']);
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ #if($items) $js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid;
+ $head_title = $head_name = $CAT['catname'];
+ $filename = str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename);
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put($filename, $data);
+ if($page == 1) file_copy($filename, str_replace(DT_ROOT, DT_ROOT.'/mobile', $indexname));
+ }
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/club/list.inc.php b/module/club/list.inc.php
new file mode 100644
index 0000000..d40fe6a
--- /dev/null
+++ b/module/club/list.inc.php
@@ -0,0 +1,91 @@
+count($table_group, $condition, $CFG['db_expires']);
+ } else {
+ if($page == 1) {
+ $items = $db->count($table_group, $condition, $CFG['db_expires']);
+ if($items != $CAT['item']) {
+ $CAT['item'] = $items;
+ $db->query("UPDATE {$DT_PRE}category SET item=$items WHERE catid=$catid");
+ }
+ } else {
+ $items = $CAT['item'];
+ }
+ }
+ $pages = listpages($CAT, $items, $page, $pagesize);
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT * FROM {$table_group} WHERE {$condition} ORDER BY addtime DESC LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $r['introduce'] = dsubstr(dtrim($r['content']), 60, '...');
+ $r['managers'] = $r['manager'] ? explode('|', $r['manager']) : array();
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ $showpage = 1;
+ $datetype = 5;
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].listurl($CAT, $page > 1 ? $page : 0);
+} else {
+ if(!$CAT || $CAT['moduleid'] != $moduleid) message($L['msg_not_cate']);
+ if(!check_group($_groupid, $MOD['group_list']) || !check_group($_groupid, $CAT['group_list'])) message($L['msg_no_right']);
+ $gid = 0;
+ $condition = "status=3";
+ $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($cityid) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_group} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($CAT, '{destoon_page}'));
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT * FROM {$table_group} WHERE {$condition} ORDER BY addtime DESC LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ #$js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid;
+ }
+ if($CAT['parentid']) $PCAT = get_cat($CAT['parentid']);
+ $head_title = $head_name = $CAT['catname'];
+}
+$seo_file = 'list';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $CAT['template'] ? $CAT['template'] : ($MOD['template_list'] ? $MOD['template_list'] : 'list');
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/club/manage.class.php b/module/club/manage.class.php
new file mode 100644
index 0000000..7648e32
--- /dev/null
+++ b/module/club/manage.class.php
@@ -0,0 +1,74 @@
+table = $table_manage;
+ }
+
+ function manage() {
+ $this->__construct();
+ }
+
+ function get_one() {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid='$this->itemid'");
+ }
+
+ function get_list($condition, $order = 'itemid DESC') {
+ global $MOD, $TYPE, $pages, $page, $pagesize, $offset, $items, $sum, $L, $table_group;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = $groupids = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ if($r['typeid'] == 1) {
+ $r['linkurl'] = "javascript:alert('".$L['manage_has_del']."');";
+ $r['blank'] = 0;
+ } else {
+ $r['linkurl'] = $r['tid'] ? DT_PATH.'api/redirect.php?mid='.$MOD['moduleid'].'&itemid='.$r['tid'] : $MOD['linkurl'].'goto.php?itemid='.$r['rid'];
+ $r['blank'] = 1;
+ }
+ $r['value'] = '';
+ if($r['typeid'] == 3) {
+ $r['value'] = $r['content'] ? $L['manage_level'].$r['content'] : $L['manage_cancel'];
+ } else if($r['typeid'] == 4) {
+ $r['value'] = $r['content'] ? ($r['content'] == 1 ? $L['manage_ontop_1'] : $L['manage_ontop_2']) : $L['manage_cancel'];
+ } else if($r['typeid'] == 5) {
+ $r['value'] = $r['content'] ? '
' : $L['manage_cancel'];
+ }
+ $groupids[$r['gid']] = $r['gid'];
+ $lists[] = $r;
+ }
+ if($groupids) {
+ $GRPS = array();
+ $result = DB::query("SELECT itemid,title,linkurl FROM {$table_group} WHERE itemid IN (".implode(',', $groupids).")");
+ while($r = DB::fetch_array($result)) {
+ $GRPS[$r['itemid']] = $r;
+ }
+ if($GRPS) {
+ foreach($lists as $k=>$v) {
+ $lists[$k]['groupname'] = $v['gid'] ? $GRPS[$v['gid']]['title'] : '';
+ $lists[$k]['groupurl'] = $v['gid'] ? $MOD['linkurl'].$GRPS[$v['gid']]['linkurl'] : '';
+ }
+ }
+ }
+ return $lists;
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/club/my_fans.inc.php b/module/club/my_fans.inc.php
new file mode 100644
index 0000000..b00dbcf
--- /dev/null
+++ b/module/club/my_fans.inc.php
@@ -0,0 +1,79 @@
+get_one("SELECT * FROM {$table_fans} WHERE itemid=$fid");
+ $GRP = get_group($F['gid']);
+ ($GRP && $GRP['status'] == 3) or message($L['my_not_group']);
+ ($_admin || $GRP['username'] == $_username) or message($L['my_not_admin']);
+ }
+}
+switch($action) {
+ case 'delete':
+ $do->recycle($itemid);
+ dmsg($L['success_delete'], $forward);
+ break;
+ case 'cancel':
+ $do->check($itemid, 2);
+ dmsg($L['success_cancel'], $forward);
+ break;
+ case 'ban':
+ $do->ban($itemid, 1);
+ dmsg($L['success_ban'], $forward);
+ break;
+ case 'unban':
+ $do->ban($itemid, 0);
+ dmsg($L['success_cancel'], $forward);
+ break;
+ case 'check':
+ $do->check($itemid);
+ dmsg($L['success_checked'], $forward);
+ break;
+ case 'reject':
+ $do->reject($itemid);
+ dmsg($L['success_reject'], $forward);
+ break;
+ default:
+ $gid = isset($gid) ? intval($gid) : 0;
+ $ids = '';
+ $result = $db->query("SELECT itemid FROM {$table_group} WHERE username='$_username'");
+ while($r = $db->fetch_array($result)) {
+ $ids .= ','.$r['itemid'];
+ }
+ if(!$_admin && strpos($ids.',', ','.$gid.',') === false) $gid = 0;
+ $gid or $gid = '';
+ $status = isset($status) ? intval($status) : 3;
+ in_array($status, array(1, 2, 3)) or $status = 3;
+ $condition = $gid ? "gid=$gid" : ($ids ? "gid IN (".substr($ids, 1).")" : "gid=0");
+ $nums = array();
+ for($i = 1; $i < 4; $i++) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_fans} WHERE $condition AND status=$i");
+ $nums[$i] = $r['num'];
+ }
+ $sfields = $L['my_fans_fields'];
+ $dfields = array('username', 'reason');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $condition .= " AND status=$status";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ $lists = $do->get_list($condition);
+ break;
+}
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MODULE[2]['linkurl'], $MODULE[2]['mobile'], $DT_URL);
+} else {
+ $foot = '';
+ if($action == 'add' || $action == 'edit') {
+ //
+ } else {
+ $pages = mobile_pages($items, $page, $pagesize);
+ $foot = '';
+ }
+}
+$head_title = $L['my_fans_title'];
+include template($MOD['template_my_fans'] ? $MOD['template_my_fans'] : 'my_club_fans', 'member');
+?>
\ No newline at end of file
diff --git a/module/club/my_group.inc.php b/module/club/my_group.inc.php
new file mode 100644
index 0000000..fd1091d
--- /dev/null
+++ b/module/club/my_group.inc.php
@@ -0,0 +1,128 @@
+ -1 or dheader(($DT_PC ? $MODULE[2]['linkurl'] : $MODULE[2]['mobile']).'account.php?action=group&itemid=1');
+require DT_ROOT.'/module/'.$module.'/group.class.php';
+$do = new group($moduleid);
+$sql = "username='$_username'";
+$limit_used = $limit_free = $need_password = $need_captcha = $need_question = $fee_add = 0;
+if(in_array($action, array('', 'add')) && $group_limit) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_group} WHERE $sql AND status>1");
+ $limit_used = $r['num'];
+ $limit_free = $group_limit > $limit_used ? $group_limit - $limit_used : 0;
+}
+
+switch($action) {
+ case 'add':
+ if($group_limit && $limit_used >= $group_limit) dalert(lang($L['info_limit'], array($group_limit, $limit_used)), $MODULE[2]['linkurl'].$DT['file_my'].'?mid='.$mid.'&job='.$job);
+
+ $need_captcha = $MOD['captcha_group'] == 2 ? $MG['captcha'] : $MOD['captcha_group'];
+ $need_question = $MOD['question_group'] == 2 ? $MG['question'] : $MOD['question_group'];
+
+ if($submit) {
+ $msg = captcha($captcha, $need_captcha, true);
+ if($msg) dalert($msg);
+ $msg = question($answer, $need_question, true);
+ if($msg) dalert($msg);
+ $post['username'] = $_username;
+ if($do->pass($post)) {
+ $CAT = get_cat($post['catid']);
+ if(!$CAT) dalert(lang($L['group'], array($CAT['catname'])));
+ $post['addtime'] = $post['level'] = $post['fee'] = 0;
+ $post['style'] = $post['template'] = $post['note'] = $post['filepath'] = '';
+ $need_check = $MOD['check_group'] == 2 ? $MG['check'] : $MOD['check_group'];
+ $post['status'] = get_status(3, $need_check);
+ $post['hits'] = 0;
+ $post['areaid'] = $cityid;
+ $post['filepath'] = '';
+ $do->add($post);
+ $msg = $post['status'] == 2 ? $L['success_check'] : $L['success_add'];
+ $js = '';
+ set_cookie('dmsg', $msg);
+ $forward = '?mid='.$mid.'&job='.$job.'&status='.$post['status'];
+ $msg = '';
+ $js .= 'window.onload=function(){parent.window.location="'.$forward.'";}';
+ dalert($msg, '', $js);
+ } else {
+ dalert($do->errmsg, '', ($need_captcha ? reload_captcha() : '').($need_question ? reload_question() : ''));
+ }
+ } else {
+ $_catid = $catid;
+ foreach($do->fields as $v) {
+ $$v = '';
+ }
+ $content = '';
+ $catid = $_catid;
+ $areaid = $cityid;
+ $item = array();
+ }
+ break;
+ case 'edit':
+ $itemid or message();
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['username'] != $_username) message();
+ if($submit) {
+ $post['username'] = $_username;
+ if($do->pass($post)) {
+ $post['catid'] = $item['catid'];
+ $post['areaid'] = $item['areaid'];
+ $post['title'] = addslashes($item['title']);
+ $post['level'] = $item['level'];
+ $post['fee'] = $item['fee'];
+ $post['style'] = addslashes($item['style']);
+ $post['template'] = addslashes($item['template']);
+ $post['show_template'] = addslashes($item['show_template']);
+ $post['fans_template'] = addslashes($item['fans_template']);
+ $post['chat_template'] = addslashes($item['chat_template']);
+ $post['filepath'] = addslashes($item['filepath']);
+ $post['status'] = $item['status'];
+ $post['hits'] = $item['hits'];
+ $post['chat'] = $item['chat'];
+ $do->edit($post);
+ set_cookie('dmsg', $L['success_edit']);
+ dalert('', '', 'parent.window.location="'.$forward.'"');
+ } else {
+ dalert($do->errmsg);
+ }
+ } else {
+ extract($item);
+ }
+ break;
+ default:
+ $status = isset($status) ? intval($status) : 3;
+ in_array($status, array(1, 2, 3)) or $status = 3;
+ $condition = "username='$_username'";
+ $condition .= " AND status=$status";
+ if($keyword) $condition .= match_kw('title', $keyword);
+ if($catid) $condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ $lists = $do->get_list($condition, 'addtime desc');
+ break;
+}
+if($_userid) {
+ $nums = array();
+ for($i = 1; $i < 4; $i++) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_group} WHERE username='$_username' AND status=$i");
+ $nums[$i] = $r['num'];
+ }
+}
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MODULE[2]['linkurl'], $MODULE[2]['mobile'], $DT_URL);
+} else {
+ $foot = '';
+ if($action == 'add' || $action == 'edit') {
+ //
+ } else {
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ foreach($lists as $k=>$v) {
+ $lists[$k]['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $v['linkurl']);
+ $lists[$k]['date'] = timetodate($v[$time], 5);
+ }
+ $pages = mobile_pages($items, $page, $pagesize);
+ $foot = '';
+ }
+}
+$head_title = $L['my_group_title'];
+include template($MOD['template_my_group'] ? $MOD['template_my_group'] : 'my_club_group', 'member');
+?>
\ No newline at end of file
diff --git a/module/club/my_join.inc.php b/module/club/my_join.inc.php
new file mode 100644
index 0000000..2954d27
--- /dev/null
+++ b/module/club/my_join.inc.php
@@ -0,0 +1,102 @@
+ -1 or dheader(($DT_PC ? $MODULE[2]['linkurl'] : $MODULE[2]['mobile']).'account.php?action=group&itemid=1');
+require DT_ROOT.'/module/'.$module.'/join.class.php';
+$do = new djoin($moduleid);
+$sql = "username='$_username'";
+$limit_used = $limit_free = $need_password = $need_captcha = $need_question = $fee_add = 0;
+if(in_array($action, array('', 'add')) && $join_limit) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_fans} WHERE $sql AND status>1");
+ $limit_used = $r['num'];
+ $limit_free = $join_limit > $limit_used ? $join_limit - $limit_used : 0;
+}
+switch($action) {
+ case 'add':
+ if($join_limit && $limit_used >= $join_limit) dalert(lang($L['info_limit'], array($join_limit, $limit_used)), ($DT_PC ? $MODULE[2]['linkurl'] : $MODULE[2]['mobile']).$DT['file_my'].'?mid='.$mid.'&job='.$job);
+ $gid = isset($gid) ? intval($gid) : 0;
+ $gid or message($L['my_choose_group'], $DT_PC ? $MOD['linkurl'] : $MOD['mobile']);
+ $GRP = get_group($gid);
+ ($GRP && $GRP['status'] == 3) or message($L['my_not_group']);
+ $M = $db->get_one("SELECT * FROM {$table_fans} WHERE gid=$gid AND username='$_username'");
+ if($M) {
+ if($M['status'] == 3) message($L['my_join_repeat'], ($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).rewrite('fans.php?gid='.$gid));
+ message($L['my_join_check']);
+ }
+ if($submit) {
+ if($do->pass($post)) {
+ $post['gid'] = $gid;
+ $post['status'] = get_status(3, $GRP['join_type']);
+ $do->add($post);
+ $msg = $post['status'] == 2 ? $L['success_check'] : $L['success_add'];
+ set_cookie('dmsg', $msg);
+ $forward = '?mid='.$mid.'&job='.$job.'&status='.$post['status'];
+ dalert('', '', 'window.onload=function(){parent.window.location="'.$forward.'";}');
+ } else {
+ dalert($do->errmsg);
+ }
+ } else {
+ $reason = '';
+ $status = 0;
+ }
+ break;
+ case 'edit':
+ $itemid or message();
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['username'] != $_username) message();
+ $gid = $item['gid'];
+ $GRP = $db->get_one("SELECT * FROM {$table_group} WHERE itemid=$gid");
+ ($GRP && $GRP['status'] == 3) or message($L['my_not_group']);
+ if($submit) {
+ if($do->pass($post)) {
+ $post['status'] = get_status($item['status'], $GRP['join_type']);
+ $do->edit($post);
+ set_cookie('dmsg', $L['success_edit']);
+ dalert('', '', 'parent.window.location="'.$forward.'"');
+ } else {
+ dalert($do->errmsg);
+ }
+ } else {
+ $reason = $item['reason'];
+ $status = $item['status'];
+ }
+ break;
+ case 'delete':
+ $itemid or message();
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['username'] != $_username) message();
+ $do->delete($itemid);
+ dmsg($L['success_delete'], $forward);
+ break;
+ default:
+ $status = isset($status) ? intval($status) : 3;
+ in_array($status, array(1, 2, 3)) or $status = 3;
+ $lists = $do->get_list("username='$_username' AND status=$status");
+ break;
+}
+$nums = array();
+for($i = 1; $i < 4; $i++) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_fans} WHERE username='$_username' AND status=$i");
+ $nums[$i] = $r['num'];
+}
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MODULE[2]['linkurl'], $MODULE[2]['mobile'], $DT_URL);
+} else {
+ $foot = '';
+ if($action == 'add' || $action == 'edit') {
+ //
+ } else {
+ foreach($lists as $k=>$v) {
+ $lists[$k]['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $v['linkurl']);
+ $lists[$k]['date'] = timetodate($v['addtime'], 5);
+ }
+ $pages = mobile_pages($items, $page, $pagesize);
+ $foot = '';
+ }
+}
+$head_title = $L['my_join_title'];
+include template($MOD['template_my_join'] ? $MOD['template_my_join'] : 'my_club_join', 'member');
+?>
\ No newline at end of file
diff --git a/module/club/my_manage.inc.php b/module/club/my_manage.inc.php
new file mode 100644
index 0000000..a915f36
--- /dev/null
+++ b/module/club/my_manage.inc.php
@@ -0,0 +1,291 @@
+itemid = $itemid;
+ $T = $do->get_one();
+ if(!$T || $T['gid'] != $gid || $T['status'] != 3) message($L['my_not_post']);
+ if($submit) {
+ $_post = daddslashes($T);
+ $_post['addtime'] = timetodate($T['addtime']);
+ $_post['title'] = $post['title'];
+ $_post['thumb'] = $post['thumb'];
+ $_post['content'] = $post['content'];
+ $post = $_post;
+ if($do->pass($post)) {
+ $do->edit($post);
+ $tid = $itemid;
+ $title = $_post['title'];
+ $content = '';
+ if($reason == $L['my_manage_reason']) $reason = '';
+ $reason = dhtmlspecialchars($reason);
+ $message = isset($message) ? 1 : 0;
+ if($message) send_message($T['username'], lang($L['manage_msg_title'], array($L['my_manage_type_post'], dsubstr($T['title'], 20, '...'), $L['my_manage_type_edit'])), lang($L['manage_msg_content'], array(($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).$T['linkurl'], nl2br($reason), $_username)));
+ $db->query("INSERT INTO {$table_manage} (gid,tid,username,addtime,typeid,title,content,reason,message) VALUES ('$gid','$itemid','$_username','$DT_TIME','2','$title','$content','$reason','$message')");
+ dmsg($L['post_success_edit'], $forward);
+ } else {
+ message($do->errmsg);
+ }
+ } else {
+ extract($T);
+ }
+ break;
+ case 'delete':
+ ($itemid && is_array($itemid)) or message($L['my_choose_post']);
+ $content = '';
+ if($reason == $L['my_manage_reason']) $reason = '';
+ $reason = dhtmlspecialchars($reason);
+ $message = isset($message) ? 1 : 0;
+ require DT_ROOT.'/module/'.$module.'/club.class.php';
+ $do = new club($moduleid);
+ foreach($itemid as $tid) {
+ $do->itemid = $tid;
+ $T = $do->get_one();
+ if(!$T || $T['status'] != 3 || $T['gid'] != $gid) continue;
+ $do->recycle($tid);
+ if($message) send_message($T['username'], lang($L['manage_msg_title'], array($L['my_manage_type_post'], dsubstr($T['title'], 20, '...'), $L['my_manage_type_del'])), lang($L['manage_msg_content'], array(($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).$T['linkurl'], nl2br($reason), $_username)));
+ $title = addslashes($T['title']);
+ $db->query("INSERT INTO {$table_manage} (gid,tid,username,addtime,typeid,title,content,reason,message) VALUES ('$gid','$tid','$_username','$DT_TIME','1','$title','$content','$reason','$message')");
+ }
+ dmsg($L['post_success_del'], $forward);
+ break;
+ case 'style':
+ ($itemid && is_array($itemid)) or message($L['my_choose_post']);
+ $STYLE = array('red' => '#FF0000', 'blue' => '#0000FF', 'orange' => '#FF6600');
+ $_style = $style;
+ $style = isset($STYLE[$style]) ? $STYLE[$style] : '';
+ $content = $style;
+ if($reason == $L['my_manage_reason']) $reason = '';
+ $reason = dhtmlspecialchars($reason);
+ $message = isset($message) ? 1 : 0;
+ foreach($itemid as $tid) {
+ $T = $db->get_one("SELECT * FROM {$table} WHERE itemid=$tid");
+ if(!$T || $T['status'] != 3 || $T['gid'] != $gid || $T['style'] == $style) continue;
+ $db->query("UPDATE {$table} SET style='$style' WHERE itemid=$tid");
+ if($message) send_message($T['username'], lang($L['manage_msg_title'], array($L['my_manage_type_post'], dsubstr($T['title'], 20, '...'), $style ? $L['my_manage_type_style'] : $L['my_manage_type_style_cancel'])), lang($L['manage_msg_content'], array($MOD['linkurl'].$T['linkurl'], nl2br($reason), $_username)));
+ $title = addslashes($T['title']);
+ $db->query("INSERT INTO {$table_manage} (gid,tid,username,addtime,typeid,title,content,reason,message) VALUES ('$gid','$tid','$_username','$DT_TIME','5','$title','$content','$reason','$message')");
+ if($MOD['show_html']) tohtml('show', $module, "itemid=$tid");
+ }
+ dmsg($style ? $L['post_success_style'] : $L['post_cancel_style'], $forward);
+ break;
+ case 'ontop':
+ ($itemid && is_array($itemid)) or message($L['my_choose_post']);
+ $ontop = $ontop ? 1 : 0;
+ $content = $ontop;
+ if($reason == $L['my_manage_reason']) $reason = '';
+ $reason = dhtmlspecialchars($reason);
+ $message = isset($message) ? 1 : 0;
+ foreach($itemid as $tid) {
+ $T = $db->get_one("SELECT * FROM {$table} WHERE itemid=$tid");
+ if(!$T || $T['status'] != 3 || $T['gid'] != $gid || $T['ontop'] == $ontop || $T['ontop'] == 2) continue;
+ $db->query("UPDATE {$table} SET ontop=$ontop WHERE itemid=$tid");
+ if($message) send_message($T['username'], lang($L['manage_msg_title'], array($L['my_manage_type_post'], dsubstr($T['title'], 20, '...'), $ontop ? $L['my_manage_type_ontop'] : $L['my_manage_type_ontop_cancel'])), lang($L['manage_msg_content'], array($MOD['linkurl'].$T['linkurl'], nl2br($reason), $_username)));
+ $title = addslashes($T['title']);
+ $db->query("INSERT INTO {$table_manage} (gid,tid,username,addtime,typeid,title,content,reason,message) VALUES ('$gid','$tid','$_username','$DT_TIME','4','$title','$content','$reason','$message')");
+ if($MOD['show_html']) tohtml('show', $module, "itemid=$tid");
+ }
+ dmsg($ontop ? $L['post_success_ontop'] : $L['post_cancel_ontop'], $forward);
+ break;
+ case 'level':
+ ($itemid && is_array($itemid)) or message($L['my_choose_post']);
+ $level = isset($level) ? intval($level) : 0;
+ in_array($level, array(0, 1, 2, 3)) or message($L['my_manage_not_level']);
+ $content = $level;
+ if($reason == $L['my_manage_reason']) $reason = '';
+ $reason = dhtmlspecialchars($reason);
+ $message = isset($message) ? 1 : 0;
+ foreach($itemid as $tid) {
+ $T = $db->get_one("SELECT * FROM {$table} WHERE itemid=$tid");
+ if(!$T || $T['status'] != 3 || $T['gid'] != $gid || $T['level'] == $level) continue;
+ $db->query("UPDATE {$table} SET level=$level WHERE itemid=$tid");
+ if($message) send_message($T['username'], lang($L['manage_msg_title'], array($L['my_manage_type_post'], dsubstr($T['title'], 20, '...'), $level ? $L['my_manage_type_level'] : $L['my_manage_type_level_cancel'])), lang($L['manage_msg_content'], array($MOD['linkurl'].$T['linkurl'], nl2br($reason), $_username)));
+ $title = addslashes($T['title']);
+ $db->query("INSERT INTO {$table_manage} (gid,tid,username,addtime,typeid,title,content,reason,message) VALUES ('$gid','$tid','$_username','$DT_TIME','3','$title','$content','$reason','$message')");
+ if($MOD['show_html']) tohtml('show', $module, "itemid=$tid");
+ }
+ dmsg($level ? $L['post_success_level'] : $L['post_cancel_level'], $forward);
+ break;
+ case 'post':
+ require DT_ROOT.'/module/'.$module.'/club.class.php';
+ $do = new club($moduleid);
+ $sfields = $L['my_fields_post'];
+ $dfields = array('keyword', 'title', 'username');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $level = isset($level) ? intval($level) : 0;
+ $style = isset($style) ? intval($style) : 0;
+ $ontop = isset($ontop) ? intval($ontop) : 0;
+ $thumb = isset($thumb) ? intval($thumb) : 0;
+ $guest = isset($guest) ? intval($guest) : 0;
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+
+ $condition = "gid=$gid AND status=3";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($itemid) $condition .= " AND itemid=$itemid";
+
+ if($level) $condition .= " AND level>0";
+ if($style) $condition .= " AND style<>''";
+ if($ontop) $condition .= " AND ontop>0";
+ if($thumb) $condition .= " AND thumb<>''";
+ if($guest) $condition .= " AND username=''";
+ $lists = $do->get_list($condition);
+ break;
+ case 'reply':
+ require DT_ROOT.'/module/'.$module.'/reply.class.php';
+ $do = new reply($moduleid);
+ $sfields = $L['my_fields_reply'];
+ $dfields = array('content', 'username');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $tid = isset($tid) ? intval($tid) : 0;
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $condition = "gid=$gid AND status=3";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($tid) $condition .= " AND tid=$tid";
+ $lists = $do->get_list($condition, 'itemid ASC');
+ break;
+ case 'reply_edit':
+ $itemid or message();
+ require DT_ROOT.'/module/'.$module.'/reply.class.php';
+ $do = new reply($moduleid);
+ $do->itemid = $itemid;
+ $R = $do->get_one();
+ if(!$R || $R['gid'] != $gid || $R['status'] != 3) message($L['my_not_reply']);
+ if($submit) {
+ $_post = daddslashes($R);
+ $_post['content'] = $post['content'];
+ $post = $_post;
+ if($do->pass($post)) {
+ $do->edit($post);
+ $tid = $itemid;
+ $title = addslashes(get_intro(stripslashes($post['content']), 50));
+ $content = '';
+ if($reason == $L['my_manage_reason']) $reason = '';
+ $reason = dhtmlspecialchars($reason);
+ $message = isset($message) ? 1 : 0;
+ if($message) send_message($R['username'], lang($L['manage_msg_title'], array($L['my_manage_type_reply'], get_intro($R['content'], 20), $L['my_manage_type_edit'])), lang($L['manage_msg_content'], array(($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).'goto.php?itemid='.$R['itemid'], nl2br($reason), $_username)));
+ $db->query("INSERT INTO {$table_manage} (gid,rid,username,addtime,typeid,title,content,reason,message) VALUES ('$gid','$itemid','$_username','$DT_TIME','2','$title','$content','$reason','$message')");
+ dmsg($L['reply_success_edit'], $forward);
+ } else {
+ message($do->errmsg);
+ }
+ } else {
+ extract($R);
+ }
+ break;
+ case 'reply_delete':
+ ($itemid && is_array($itemid)) or message($L['my_choose_reply']);
+ $content = '';
+ if($reason == $L['my_manage_reason']) $reason = '';
+ $reason = dhtmlspecialchars($reason);
+ $message = isset($message) ? 1 : 0;
+ require DT_ROOT.'/module/'.$module.'/reply.class.php';
+ $do = new reply($moduleid);
+ foreach($itemid as $rid) {
+ $do->itemid = $rid;
+ $R = $do->get_one();
+ if(!$R || $R['status'] != 3 || $R['gid'] != $gid) continue;
+ $do->recycle($rid);
+ if($message) send_message($R['username'], lang($L['manage_msg_title'], array($L['my_manage_type_reply'], get_intro($R['content'], 20), $L['my_manage_type_del'])), lang($L['manage_msg_content'], array($MOD['linkurl'].'goto.php?itemid='.$R['itemid'], nl2br($reason), $_username)));
+ $title = addslashes(get_intro($R['content'], 50));
+ $db->query("INSERT INTO {$table_manage} (gid,rid,username,addtime,typeid,title,content,reason,message) VALUES ('$gid','$rid','$_username','$DT_TIME','1','$title','$content','$reason','$message')");
+ }
+ dmsg($L['reply_success_del'], $forward);
+ break;
+ default:
+ require DT_ROOT.'/module/'.$module.'/manage.class.php';
+ $do = new manage();
+ $sfields = $L['my_fields_manage'];
+ $dfields = array('title', 'reason', 'content');
+
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $typeid = isset($typeid) ? intval($typeid) : 0;
+ $message = isset($message) ? intval($message) : -1;
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+
+ $condition = "username='$_username'";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($typeid) $condition .= " AND typeid='$typeid'";
+ if($message > -1) $condition .= " AND message='$message'";
+ $lists = $do->get_list($condition);
+
+ $open_name = $open_url = '';
+ if(isset($gid)) {
+ $gid = intval($gid);
+ $pid = isset($pid) ? intval($pid) : 1;
+ $GRP = get_group($gid);
+ if($GRP && $GRP['status'] == 3) {
+ $open_name = '['.$GRP['title'].']'.$L['my_manage_post'];
+ $open_url = '?mid='.$mid.'&job='.$job.'&action=post&gid='.$gid.'&page='.$pid;
+ }
+ } else if(isset($tid)) {
+ $tid = intval($tid);
+ if($tid) {
+ $T = $db->get_one("SELECT * FROM {$table} WHERE itemid=$tid");
+ if($T && $T['status'] == 3) {
+ $gid = $T['gid'];
+ $GRP = get_group($gid);
+ if($GRP && $GRP['status'] == 3) {
+ $open_name ='['.$GRP['title'].']'.$L['my_manage_post'];
+ $open_url = '?mid='.$mid.'&job='.$job.'&action=post&gid='.$gid.'&itemid='.$tid;
+ }
+ }
+ }
+ } else if(isset($rid)) {
+ $rid = intval($rid);
+ if($rid) {
+ $T = $db->get_one("SELECT * FROM {$table_reply} WHERE itemid=$rid");
+ if($T && $T['status'] == 3) {
+ $gid = $T['gid'];
+ $tid = $T['tid'];
+ $GRP = get_group($gid);
+ if($GRP && $GRP['status'] == 3) {
+ $open_name = '['.$GRP['title'].']'.$L['my_manage_reply'];
+ $open_url = '?mid='.$mid.'&job='.$job.'&action=reply&gid='.$gid.'&tid='.$tid.'&itemid='.$rid.'&page='.$pid;
+ }
+ }
+ }
+ }
+ break;
+}
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MODULE[2]['linkurl'], $MODULE[2]['mobile'], $DT_URL);
+} else {
+ $foot = '';
+ if($action == 'add' || $action == 'edit') {
+ //
+ } else {
+ foreach($lists as $k=>$v) {
+ $lists[$k]['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $v['linkurl']);
+ $lists[$k]['date'] = timetodate($v['addtime'], 5);
+ }
+ $pages = mobile_pages($items, $page, $pagesize);
+ $foot = '';
+ }
+}
+$head_title = $L['my_manage_title'];
+include template($MOD['template_my_manage'] ? $MOD['template_my_manage'] : 'my_club_manage', 'member');
+?>
\ No newline at end of file
diff --git a/module/club/my_reply.inc.php b/module/club/my_reply.inc.php
new file mode 100644
index 0000000..354f479
--- /dev/null
+++ b/module/club/my_reply.inc.php
@@ -0,0 +1,171 @@
+ -1 or dheader(($DT_PC ? $MODULE[2]['linkurl'] : $MODULE[2]['mobile']).'account.php?action=group&itemid=1');
+require DT_ROOT.'/module/'.$module.'/reply.class.php';
+$do = new reply($moduleid);
+$sql = $_userid ? "username='$_username'" : "ip='$DT_IP'";
+$limit_used = $limit_free = $need_password = $need_captcha = $need_question = $fee_add = 0;
+$today = $DT_TODAY - 86400;
+if(in_array($action, array('', 'add')) && $reply_limit) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_reply} WHERE $sql AND status>1 AND addtime>$today");
+ $limit_used = $r['num'];
+ $limit_free = $reply_limit > $limit_used ? $reply_limit - $limit_used : 0;
+}
+switch($action) {
+ case 'add':
+ check_group($_groupid, $MOD['group_reply']) or dheader(($DT_PC ? $MODULE[2]['linkurl'] : $MODULE[2]['mobile']).'account.php?action=group&itemid=1');
+ $tid = isset($tid) ? intval($tid) : 0;
+ $tid or dalert($L['my_choose_post'], $DT_PC ? $MOD['linkurl'] : $MOD['mobile']);
+ $T = $db->get_one("SELECT * FROM {$table} WHERE itemid=$tid");
+ ($T && $T['status'] == 3) or dalert($L['my_not_post'], 'goback');
+ $gid = $T['gid'];
+ $GRP = get_group($gid);
+ ($GRP && $GRP['status'] == 3) or dalert($L['my_not_group'], 'goback');
+ if($reply_limit && $limit_used >= $reply_limit) dalert(lang($L['day_limit'], array($reply_limit, $limit_used)), $MODULE[2]['linkurl'].$DT['file_my'].'?mid='.$mid.'&job='.$job);
+ $is_fans = is_fans($GRP);
+ $ban = is_array($is_fans) ? $is_fans['ban'] : 0;
+ if($ban) dalert($L['my_baned'], 'goback');
+ if($GRP['reply_type'] && !$is_fans) {
+ $action = 'reply';
+ $head_title = lang('message->without_permission');
+ exit(include template('nofans', $module));
+ }
+ $rid = isset($rid) ? intval($rid) : 0;
+ $R = array();
+ if($rid) {
+ $R = $db->get_one("SELECT * FROM {$table_reply} WHERE itemid=$rid");
+ ($R && $R['status'] == 3 && $R['tid'] == $tid) or dalert($L['my_not_reply']);
+ $str = $R['content'];
+ if(strpos($str, ' ') !== false) {
+ $str = substr($str, strpos($str, ' '));
+ } else if(strpos($str, ' ') !== false) {
+ $str = substr($str, strpos($str, ' '));
+ } else if(strpos($str, ' ') !== false) {
+ $str = substr($str, strpos($str, ' '));
+ }
+ $str = get_intro($str, 500);
+ $R['quote'] = ' ';
+ }
+ $need_captcha = $MOD['captcha_reply'] == 2 ? $MG['captcha'] : $MOD['captcha_reply'];
+ $need_question = $MOD['question_reply'] == 2 ? $MG['question'] : $MOD['question_reply'];
+ if($submit) {
+ $msg = captcha($captcha, $need_captcha, true);
+ if($msg) dalert($msg);
+ $msg = question($answer, $need_question, true);
+ if($msg) dalert($msg);
+ if($do->pass($post)) {
+ $post['level'] = 0;
+ $post['tid'] = $tid;
+ $post['gid'] = $gid;
+ $post['rid'] = $rid;
+ if($R) $post['content'] = addslashes($R['quote']).$post['content'];
+ $need_check = $MOD['check_reply'] == 2 ? $MG['check'] : $MOD['check_reply'];
+ $post['status'] = get_status(3, $need_check);
+ $post['username'] = $_username;
+ $post['passport'] = $_passport;
+ $_DT_PC = $DT_PC;
+ $do->add($post);
+ $DT_PC = $_DT_PC;
+ $js = '';
+ if($post['status'] == 3) {
+ $forward = ($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).'goto.php?itemid='.$do->itemid;
+ $msg = '';
+ } else {
+ if($_userid) {
+ set_cookie('dmsg', $msg);
+ $forward = '?mid='.$mid.'&job='.$job.'&status='.$post['status'];
+ $msg = '';
+ } else {
+ $forward = ($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).$T['linkurl'];
+ $msg = $L['success_check'];
+ }
+ }
+ $js .= 'window.onload=function(){parent.window.location="'.$forward.'";}';
+ dalert($msg, '', $js);
+ } else {
+ dalert($do->errmsg, '', ($need_captcha ? reload_captcha() : '').($need_question ? reload_question() : ''));
+ }
+ } else {
+ foreach($do->fields as $v) {
+ if($v == 'tid' || $v == 'rid') continue;
+ $$v = '';
+ }
+ $content = '';
+ $item = array();
+ }
+ break;
+ case 'edit':
+ $itemid or message();
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['username'] != $_username) message();
+ $tid = $item['tid'];
+ $T = $db->get_one("SELECT * FROM {$table} WHERE itemid=$tid");
+
+ if($MG['edit_limit'] < 0) message($L['edit_refuse']);
+ if($MG['edit_limit'] && $DT_TIME - $item['addtime'] > $MG['edit_limit']*86400) message(lang($L['edit_limit'], array($MG['edit_limit'])));
+
+ if($submit) {
+ if($do->pass($post)) {
+ $need_check = $MOD['check_add'] == 2 ? $MG['check'] : $MOD['check_add'];
+ $post['status'] = get_status($item['status'], $need_check);
+ $post['level'] = $item['level'];
+ $do->edit($post);
+ if($post['status'] < 3 && $item['status'] > 2) history($moduleid, 'reply-'.$itemid, 'set', $item);
+ set_cookie('dmsg', $post['status'] == 2 ? $L['success_edit_check'] : $L['success_edit']);
+ dalert('', '', 'parent.window.location="'.($post['status'] == 2 ? '?mid='.$moduleid.'&job='.$job.'&status=2' : $forward).'"');
+ } else {
+ dalert($do->errmsg);
+ }
+ } else {
+ extract($item);
+ }
+ break;
+ case 'delete':
+ $MG['delete'] or message();
+ $itemid or message();
+ $itemids = is_array($itemid) ? $itemid : array($itemid);
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $db->get_one("SELECT username FROM {$table_reply} WHERE itemid=$itemid");
+ if(!$item || $item['username'] != $_username) message();
+ $do->recycle($itemid);
+ }
+ dmsg($L['success_delete'], $forward);
+ break;
+ default:
+ $status = isset($status) ? intval($status) : 3;
+ in_array($status, array(1, 2, 3)) or $status = 3;
+ $condition = "username='$_username'";
+ $condition .= " AND status=$status";
+ if($keyword) $condition .= match_kw('content', $keyword);
+ $timetype = strpos($MOD['order'], 'edit') === false ? 'add' : '';
+ $lists = $do->get_list($condition, $MOD['order']);
+ break;
+}
+if($_userid) {
+ $nums = array();
+ for($i = 1; $i < 4; $i++) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_reply} WHERE username='$_username' AND status=$i");
+ $nums[$i] = $r['num'];
+ }
+}
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MODULE[2]['linkurl'], $MODULE[2]['mobile'], $DT_URL);
+} else {
+ $foot = '';
+ if($action == 'add' || $action == 'edit') {
+ //
+ } else {
+ foreach($lists as $k=>$v) {
+ $lists[$k]['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $v['linkurl']);
+ $lists[$k]['date'] = timetodate($v['addtime'], 5);
+ }
+ $pages = mobile_pages($items, $page, $pagesize);
+ $foot = '';
+ }
+}
+$head_title = $L['my_reply_title'];
+include template($MOD['template_my_reply'] ? $MOD['template_my_reply'] : 'my_club_reply', 'member');
+?>
\ No newline at end of file
diff --git a/module/club/reply.class.php b/module/club/reply.class.php
new file mode 100644
index 0000000..fe480dc
--- /dev/null
+++ b/module/club/reply.class.php
@@ -0,0 +1,216 @@
+moduleid = $moduleid;
+ $this->table = $table_reply;
+ $this->fields = array('gid','tid','rid','level','content','username','passport','addtime','editor','edittime','ip','status');
+ }
+
+ function reply($moduleid) {
+ $this->__construct($moduleid);
+ }
+
+ function pass($post) {
+ if(!is_array($post)) return false;
+ if(!$post['content']) return $this->_(lang('message->pass_club_reply'));
+ return true;
+ }
+
+ function set($post) {
+ global $_username, $_userid, $_cname;
+ $post['status'] = $post['status'] == 3 ? 3 : 2;
+ $post['editor'] = $_cname ? $_cname : $_username;
+ $post['edittime'] = DT_TIME;
+ if($this->itemid) {
+ $new = $post['content'];
+ $r = $this->get_one();
+ $old = $r['content'];
+ delete_diff($new, $old);
+ } else {
+ $post['addtime'] = DT_TIME;
+ }
+ $content = $post['content'];
+ unset($post['content']);
+ $post = dhtmlspecialchars($post);
+ $post['content'] = dsafe($content);
+ $post['content'] = addslashes(save_remote(save_local(stripslashes($post['content']))));
+ return array_map("trim", $post);
+ }
+
+ function get_one() {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid='$this->itemid'");
+ }
+
+ function get_list($condition = 'status=3', $order = 'itemid DESC') {
+ global $MOD, $pages, $page, $pagesize, $offset, $items, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ if(strpos($r['content'], ' ') !== false) $r['content'] = substr($r['content'], strpos($r['content'], ' '));
+ $r['title'] = get_intro($r['content'], 50);
+ $r['alt'] = get_intro($r['content'], 500);
+ $r['linkurl'] = $MOD['linkurl'].'goto.php?itemid='.$r['itemid'];
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $MOD, $table, $_username, $_passport;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ DB::query("UPDATE {$table} SET replyuser='$_username',replyer='$_passport',replytime=".DT_TIME."".($post['status'] == 3 ? ',reply=reply+1' : '')." WHERE itemid=$post[tid]");
+ if($post['rid']) DB::query("UPDATE {$this->table} SET reply=reply+1 WHERE itemid=$post[rid]");
+ if($post['status'] == 3 && $post['username'] && $MOD['credit_reply']) {
+ credit_add($post['username'], $MOD['credit_reply']);
+ credit_record($post['username'], $MOD['credit_reply'], 'system', lang('my->credit_record_reply_add'), 'ID:'.$this->itemid);
+ }
+ clear_upload($post['content'], $this->itemid, $this->table);
+ $this->tohtml($post['tid']);
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ clear_upload($post['content'], $this->itemid, $this->table);
+ if($post['status'] > 2) history($this->moduleid, 'reply-'.$this->itemid, 'del');
+ $this->tohtml($post['tid']);
+ return true;
+ }
+
+ function tohtml($itemid = 0) {
+ global $module, $MOD;
+ if($MOD['show_html'] && $itemid) tohtml('show', $module, "itemid=$itemid");
+ }
+
+ function recycle($itemid) {
+ global $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->recycle($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=0 WHERE itemid=$itemid");
+ if($MOD['show_html']) {
+ $this->itemid = $itemid;
+ $item = $this->get_one();
+ $this->tohtml($item['tid']);
+ }
+ return true;
+ }
+ }
+
+ function restore($itemid) {
+ global $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->restore($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=3 WHERE itemid=$itemid");
+ if($MOD['show_html']) {
+ $this->itemid = $itemid;
+ $item = $this->get_one();
+ $this->tohtml($item['tid']);
+ }
+ return true;
+ }
+ }
+
+ function delete($itemid) {
+ global $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->delete($v);
+ }
+ } else {
+ $this->itemid = $itemid;
+ $item = $this->get_one();
+ if($item) {
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ if($item['content']) delete_local($item['content'], get_user($item['username']));
+ if($item['username'] && $MOD['credit_del_reply']) {
+ credit_add($item['username'], -$MOD['credit_del_reply']);
+ credit_record($item['username'], -$MOD['credit_del_reply'], 'system', lang('my->credit_record_reply_del'), 'ID:'.$itemid);
+ }
+ history($this->moduleid, 'reply-'.$this->itemid, 'del');
+ $this->tohtml($item['tid']);
+ }
+ }
+ }
+
+ function check($itemid, $status = 3) {
+ global $_username, $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->check($v, $status);
+ }
+ } else {
+ $this->itemid = $itemid;
+ $item = $this->get_one();
+ if($MOD['credit_reply'] && $status == 3) {
+ if($item['username'] && $item['addtime'] >= $item['edittime']) {
+ credit_add($item['username'], $MOD['credit_reply']);
+ credit_record($item['username'], $MOD['credit_reply'], 'system', lang('my->credit_record_reply_add'), 'ID:'.$itemid);
+ }
+ }
+ DB::query("UPDATE {$this->table} SET status=$status,editor='$_username',edittime=".DT_TIME." WHERE itemid=$itemid");
+ history($this->moduleid, 'reply-'.$itemid, 'del');
+ $this->tohtml($item['tid']);
+ }
+ }
+
+ function reject($itemid) {
+ global $_username;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->reject($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=1,editor='$_username' WHERE itemid=$itemid");
+ return true;
+ }
+ }
+
+ function clear($condition = 'status=0') {
+ $result = DB::query("SELECT itemid FROM {$this->table} WHERE $condition");
+ while($r = DB::fetch_array($result)) {
+ $this->delete($r['itemid']);
+ }
+ }
+
+ function level($itemid, $level) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET level=$level WHERE itemid IN ($itemids)");
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/club/search.inc.php b/module/club/search.inc.php
new file mode 100644
index 0000000..624725c
--- /dev/null
+++ b/module/club/search.inc.php
@@ -0,0 +1,222 @@
+ $DT['max_kw']) message(lang($L['word_limit'], array($DT['min_kw'], $DT['max_kw'])), $MOD['linkurl'].'search.php');
+ if($DT['search_limit'] && $page == 1) {
+ if(($DT_TIME - $DT['search_limit']) < get_cookie('last_search')) message(lang($L['time_limit'], array($DT['search_limit'])), $MOD['linkurl'].'search.php');
+ set_cookie('last_search', $DT_TIME);
+ }
+ $replacef = explode(' ', $kw);
+ $replacet = array_map('highlight', $replacef);
+ }
+ if($action == 'group') {
+ $condition = 'status=3';
+ if($keyword) $condition .= match_kw('title', $keyword);
+ if($catid) $condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ $items = $db->count($table_group, $condition, $DT['cache_search']);
+ $pages = pages($items, $page, $pagesize);
+ if($items) {
+ $result = $db->query("SELECT * FROM {$table_group} WHERE {$condition} ORDER BY itemid DESC LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ if($kw) $r['title'] = str_replace($replacef, $replacet, $r['title']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $r['introduce'] = dsubstr(dtrim($r['content']), 60, '...');
+ $r['managers'] = $r['manager'] ? explode('|', $r['manager']) : array();
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ } else if($action == 'reply') {
+ $condition = 'status=3';
+ if($keyword) $condition .= match_kw('content', $keyword);
+ if($username) $condition .= " AND passport='$username'";
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ $items = $db->count($table_reply, $condition, $DT['cache_search']);
+ $pages = pages($items, $page, $pagesize);
+ if($items) {
+ $result = $db->query("SELECT * FROM {$table_reply} WHERE {$condition} ORDER BY itemid DESC LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ if(strpos($r['content'], ' ') !== false) $r['content'] = substr($r['content'], strpos($r['content'], ' '));
+ $r['title'] = get_intro($r['content'], 90);
+ $r['alt'] = $r['title'];
+ if($kw) $r['title'] = str_replace($replacef, $replacet, $r['title']);
+ $r['linkurl'] = $MOD['linkurl'].'goto.php?itemid='.$r['itemid'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ } else {
+ $pptsql = '';
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $PPT = property_condition($catid);
+ foreach($PPT as $k=>$v) {
+ $PPT[$k]['select'] = '';
+ $oid = $v['oid'];
+ $tmp = 'ppt_'.$oid;
+ if(isset($$tmp)) {
+ $PPT[$k]['select'] = $tmp = strip_kw($$tmp);
+ if($tmp && in_array($tmp, $v['options'])) {
+ $tmp = 'O'.$oid.':'.$tmp.';';
+ $pptsql .= match_kw('pptword', $tmp);
+ }
+ }
+ }
+ }
+ $condition = 'status=3';
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($username) $condition .= " AND passport='$username'";
+ if($fromtime) $condition .= " AND edittime>=$fromtime";
+ if($totime) $condition .= " AND edittime<=$totime";
+
+ if($pptsql) $condition .= $pptsql;//PPT
+ require DT_ROOT.'/module/'.$module.'/'.$module.'.class.php';
+ $do = new $module($moduleid);
+ $tags = $do->get_list($condition, $MOD['order'], $DT['cache_search'] ? 'CACHE' : '');
+ if($tags && $kw) {
+ foreach($tags as $k=>$v) {
+ $tags[$k]['title'] = str_replace($kw, ''.$kw.' ', $v['title']);
+ }
+ }
+ if($page == 1 && $kw && $DT['search_kw']) keyword($DT['search_kw'], $_username, $kw, $items, $moduleid);
+ $showpage = 1;
+ $datetype = 5;
+ }
+ }
+ $action or $action = 'post';
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+} else {
+ $head_title = $MOD['name'].$DT['seo_delimiter'].$head_title;
+ (isset($username) && check_name($username)) or $username = '';
+ if($kw) $head_title = $kw.$DT['seo_delimiter'].$head_title;
+ if(!$areaid && $cityid && strpos($DT_URL, 'areaid') === false) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ }
+ $elite = isset($elite) ? intval($elite) : 0;
+ isset($orderby) or $orderby = '';
+ $tags = array();
+ if($DT_QST) {
+ if($action == 'group') {
+ in_array($orderby, array('dpost', 'dreply', 'dfans')) or $orderby = '';
+ $condition = 'status=3';
+ if($keyword) $condition .= match_kw('title', $keyword);
+ if($catid) $condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($elite) $condition .= " AND level>0";
+ $items = $db->count($table_group, $condition, $DT['cache_search']);
+ $pages = pages($items, $page, $pagesize);
+ if($items) {
+ $order = 'itemid DESC';
+ if($orderby) $order = substr($orderby, 0, 1) == 'd' ? substr($orderby, 1).' DESC' : substr($orderby, 1).' ASC';
+ $result = $db->query("SELECT * FROM {$table_group} WHERE {$condition} ORDER BY $order LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ if($kw) $r['title'] = str_replace($kw, ''.$kw.' ', $r['title']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['introduce'] = dsubstr(dtrim($r['content']), 60, '...');
+ $r['managers'] = $r['manager'] ? explode('|', $r['manager']) : array();
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ } else if($action == 'reply') {
+ $condition = 'status=3';
+ if($keyword) $condition .= match_kw('content', $keyword);
+ if($username) $condition .= " AND passport='$username'";
+ if($elite) $condition .= " AND level>0";
+ $items = $db->count($table_reply, $condition, $DT['cache_search']);
+ $pages = pages($items, $page, $pagesize);
+ if($items) {
+ $result = $db->query("SELECT * FROM {$table_reply} WHERE {$condition} ORDER BY itemid DESC LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['title'] = get_intro($r['content'], 60);
+ $r['alt'] = $r['title'];
+ if($kw) $r['title'] = str_replace($kw, ''.$kw.' ', $r['title']);
+ $r['linkurl'] = $MOD['mobile'].'goto.php?itemid='.$r['itemid'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ } else {
+ $action = '';
+ in_array($orderby, array('dhits', 'dreply', 'dreplytime')) or $orderby = '';
+ $condition = "status=3";
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($catid) {
+ if($CAT) {
+ $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ } else {
+ $condition .= " AND gid=$catid";
+ }
+ }
+ if($areaid) $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($elite) $condition .= " AND level>0";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize);
+ if($items) {
+ $order = $MOD['order'];
+ if($orderby) $order = substr($orderby, 0, 1) == 'd' ? substr($orderby, 1).' DESC' : substr($orderby, 1).' ASC';
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY {$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ while($r = $db->fetch_array($result)) {
+ if($kw) $r['title'] = str_replace($kw, ''.$kw.' ', $r['title']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 5);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ if($page == 1 && $kw && $DT['search_kw']) keyword($DT['search_kw'], $_username, $kw, $items, $moduleid);
+ }
+ $js_load = preg_replace("/(.*)([&?]page=[0-9]*)(.*)/i", "\\1\\3", rewrite($DT_URL, 1)).'&job=ajax';
+ if($job == 'ajax') {
+ if($tags) include template('list-'.$module.($action ? '-'.$action : ''), 'tag');
+ exit;
+ }
+ }
+ $head_title = $MOD['name'].$L['search'];
+}
+$seo_file = 'search';
+include DT_ROOT.'/include/seo.inc.php';
+include template($MOD['template_search'] ? $MOD['template_search'] : 'search', $module);
+?>
\ No newline at end of file
diff --git a/module/club/show.inc.php b/module/club/show.inc.php
new file mode 100644
index 0000000..1c939cc
--- /dev/null
+++ b/module/club/show.inc.php
@@ -0,0 +1,140 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if($item && $item['status'] > 2) {
+ if($MOD['show_html'] && is_file(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl'])) d301($MOD['linkurl'].$item['linkurl']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ } else {
+ include load('404.inc');
+ }
+ $CAT = get_cat($catid);
+ if(!check_group($_groupid, $CAT['group_show'])) include load('403.inc');
+ $GRP = get_group($gid);
+ $GRP['managers'] = $GRP['manager'] ? explode('|', $GRP['manager']) : array();
+ if($GRP['show_type'] && !is_fans($GRP)) {
+ $action = 'show';
+ $head_title = lang('message->without_permission');
+ exit(include template('nofans', $module));
+ }
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ if($lazy) $content = DC::lazy($content);
+ $content = DC::format($content, $DT_PC);
+ }
+ $CP = $MOD['cat_property'] && $CAT['property'];
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+ }
+ $adddate = timetodate($addtime, 3);
+ $editdate = timetodate($edittime, 3);
+ $linkurl = $MOD['linkurl'].$linkurl;
+ $admin = is_admin($GRP);
+ $update = '';
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ if($fee) {
+ $user_status = 4;
+ $destoon_task = "moduleid=$moduleid&html=show&itemid=$itemid&page=$page";
+ $description = DC::description($content, $MOD['pre_view']);
+ } else {
+ $user_status = 3;
+ }
+ $F = explode('|', $MOD['floor']);
+ $replys = array();
+ $pages = '';
+ if($MOD['reply_pagesize']) {
+ $pagesize = $MOD['reply_pagesize'];
+ $offset = ($page-1)*$pagesize;
+ }
+ if($page == 1) {
+ $items = $db->count($table_reply, "tid=$itemid AND status=3");
+ if($items != $reply) $update .= ",reply='$items'";
+ if($GRP['areaid'] != $item['areaid']) $update .= ",areaid='$GRP[areaid]'";
+ } else {
+ $items = $reply;
+ }
+ if($items > 0) {
+ $floor = $page == 1 ? 0 : ($page-1)*$pagesize;
+ $pages = pages($items, $page, $pagesize, $MOD['linkurl'].itemurl($item, '{destoon_page}'));
+ $result = $db->query("SELECT * FROM {$table_reply} WHERE tid=$itemid AND status=3 ORDER BY itemid ASC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['fname'] = isset($F[$floor]) ? $F[$floor] : '';
+ $r['floor'] = ++$floor;
+ if($r['fid'] != $r['floor']) $db->query("UPDATE {$table_reply} SET fid='$r[floor]' WHERE itemid='$r[itemid]'");
+ $replys[] = $r;
+ }
+ }
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $linkurl);
+} else {
+ $itemid or dheader($MOD['mobile']);
+ $item = $db->get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ ($item && $item['status'] > 2) or message($L['msg_not_exist']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $CAT = get_cat($catid);
+ if(!check_group($_groupid, $MOD['group_show']) || !check_group($_groupid, $CAT['group_show'])) message($L['msg_no_right']);
+ $GRP = get_group($gid);
+ $GRP['managers'] = $GRP['manager'] ? explode('|', $GRP['manager']) : array();
+ if($GRP['show_type'] && !is_fans($GRP)) {
+ $action = 'show';
+ $head_title = lang('message->without_permission');
+ exit(include template('nofans', $module));
+ }
+ $member = array();
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ include DT_ROOT.'/mobile/api/content.inc.php';
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ if($share_icon) $share_icon = DC::icon($thumb, $content);
+ $content = DC::format($content, 0);
+ }
+ $editdate = timetodate($edittime, 5);
+ $F = explode('|', $MOD['floor']);
+ $replys = array();
+ $pages = '';
+ if($MOD['reply_pagesize']) {
+ $pagesize = $MOD['reply_pagesize'];
+ $offset = ($page-1)*$pagesize;
+ }
+ if($page == 1) {
+ $items = $db->count($table_reply, "tid=$itemid AND status=3");
+ if($items != $reply) $update .= ",reply='$items'";
+ if($GRP['areaid'] != $item['areaid']) $update .= ",areaid='$GRP[areaid]'";
+ } else {
+ $items = $reply;
+ }
+ if($items > 0) {
+ $floor = $page == 1 ? 0 : ($page-1)*$pagesize;
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].itemurl($item, '{destoon_page}'));
+ $result = $db->query("SELECT * FROM {$table_reply} WHERE tid=$itemid AND status=3 ORDER BY itemid ASC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['fname'] = isset($F[$floor]) ? $F[$floor] : '';
+ $r['floor'] = ++$floor;
+ if($r['fid'] != $r['floor']) $db->query("UPDATE {$table_reply} SET fid='$r[floor]' WHERE itemid='$r[itemid]'");
+ $replys[] = $r;
+ }
+ }
+ $update = '';
+ $head_title = $head_name = $GRP['title'].$MOD['seo_name'];
+ $js_item = 1;
+ $foot = '';
+}
+if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+$seo_file = 'show';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $item['template'] ? $item['template'] : ($CAT['show_template'] ? $CAT['show_template'] : ($MOD['template_show'] ? $MOD['template_show'] : 'show'));
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/club/task.inc.php b/module/club/task.inc.php
new file mode 100644
index 0000000..8e624fd
--- /dev/null
+++ b/module/club/task.inc.php
@@ -0,0 +1,95 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3) exit;
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ $currency = $MOD['fee_currency'];
+ $fee_unit = $currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $fee_name = $currency == 'money' ? $DT['money_name'] : $DT['credit_name'];
+ $inner = false;
+ if(check_group($_groupid, $MOD['group_show'])) {
+ if($fee) {
+ $inner = true;
+ if($MG['fee_mode'] && $MOD['fee_mode']) {
+ $user_status = 3;
+ } else {
+ $mid = $moduleid;
+ if($_userid) {
+ $user_status = check_pay($mid, $itemid) ? 3 : 2;
+ } else {
+ $user_status = 0;
+ }
+ }
+ } else {
+ $user_status = 3;
+ }
+ } else {
+ $inner = true;
+ $user_status = $_userid ? 1 : 0;
+ }
+ if($_username && $_username == $item['username']) $user_status = 3;
+ if($inner) {
+ if($user_status == 3 || $user_status == 2) {
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $content = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $content['content'];
+ if($content) {
+ if($user_status == 2) $description = DC::description($content, $MOD['pre_view']);
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ $content = DC::format($content, $DT_PC);
+ }
+ }
+ $content = strip_nr(ob_template('content', 'chip'), true);
+ echo 'Inner("content", \''.$content.'\');';
+ }
+ if($_userid && is_admin(get_group($gid))) echo '$(".manage").show();';
+ $update = '';
+ if($GRP['areaid'] != $item['areaid']) $update .= ",areaid='$GRP[areaid]'";
+ if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+ if($page == 1) if($MOD['hits']) echo 'Inner("hits", \''.$item['hits'].'\');';
+ if($MOD['show_html'] && $task_item && $DT_TIME - @filemtime(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl']) > $task_item) tohtml('show', $module);
+} else if($html == 'list') {
+ $catid or exit;
+ if($MOD['list_html'] && $task_list) {
+ if($CAT) {
+ $num = 1;
+ $totalpage = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $demo = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, '{DEMO}');
+ $fid = $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $page + 1;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $totalpage + 1 - $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ } else {
+ $itemid = $gid = $catid;
+ $GRP = get_group($gid);
+ if($GRP) {
+ $num = 1;
+ $totalpage = max(ceil($GRP['post']/$MOD['pagesize']), 1);
+ $demo = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl(array('catid' => $GRP['itemid'], 'catdir' => $GRP['filepath'], 'catname' => $GRP['title']), '{DEMO}');
+ $fid = $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('group', $module);
+ $fid = $page + 1;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('group', $module);
+ $fid = $totalpage + 1 - $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('group', $module);
+ if($_userid && is_admin($GRP)) echo '$(".manage").show();';
+ }
+ }
+ }
+} else if($html == 'index') {
+ if($DT['cache_hits'] && $MOD['hits']) {
+ $file = DT_CACHE.'/hits-'.$moduleid;
+ if($DT_TIME - @filemtime($file.'.dat') > $DT['cache_hits'] || @filesize($file.'.php') > 102400) update_hits($moduleid, $table);
+ }
+ if($MOD['index_html']) {
+ $file = DT_ROOT.'/'.$MOD['moduledir'].'/'.$DT['index'].'.'.$DT['file_ext'];
+ if($DT_TIME - @filemtime($file) > $task_index) tohtml('index', $module);
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/company/admin/config.inc.php b/module/company/admin/config.inc.php
new file mode 100644
index 0000000..5622931
--- /dev/null
+++ b/module/company/admin/config.inc.php
@@ -0,0 +1,24 @@
+
\ No newline at end of file
diff --git a/module/company/admin/index.html b/module/company/admin/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/company/admin/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/company/admin/index.inc.php b/module/company/admin/index.inc.php
new file mode 100644
index 0000000..a2c725e
--- /dev/null
+++ b/module/company/admin/index.inc.php
@@ -0,0 +1,331 @@
+get_one($username);
+ if(!$user || $user['vip']) continue;
+ if($amount && $pay && $user['money'] < $amount) msg('会员'.$username.'余额不足');
+ $post['username'] = $user['username'];
+ $post['validated'] = $user['validated'];
+ $post['validator'] = $user['validator'];
+ $post['validtime'] = $user['validtime'] ? timetodate($user['validtime'], 3) : 0;
+ $do->vip_edit($post, $user);
+ if($amount && $pay) {
+ money_add($username, -$amount);
+ money_record($username, -$amount, '站内', $_username, VIP.'升级', $GROUP[$post['groupid']]['groupname']);
+ }
+ $gid = $user['groupid'];
+ $company = addslashes($user['company']);
+ $db->query("INSERT INTO {$DT_PRE}company_vip (username,company,amount,gid,groupid,fromtime,totime,addtime,reason,note,editor) VALUES ('$username','$company','$amount','$gid','$groupid','$fromtime','$totime','$DT_TIME', '$reason','$note','$_username')");
+ }
+ dmsg('开通成功', '?moduleid='.$moduleid.'&action=vip');
+ } else {
+ isset($username) or $username = '';
+ if(isset($userid)) {
+ if($userid) {
+ $userids = is_array($userid) ? implode(',', $userid) : $userid;
+ $result = $db->query("SELECT username FROM {$DT_PRE}member WHERE userid IN ($userids)");
+ while($r = $db->fetch_array($result)) {
+ $username .= $r['username']."\n";
+ }
+ }
+ }
+ $fromdate = timetodate($DT_TIME, 3);
+ $todate = timetodate($DT_TIME+365*86400, 3);
+ include tpl('vip_add', $module);
+ }
+ break;
+ case 'edit':
+ $userid or msg();
+ $do->userid = $userid;
+ $user = $do->get_one();
+ if($submit) {
+ $post['username'] = $user['username'];
+ $post['fromtime'] = timetodate($user['fromtime'], 3);
+ $post['totime'] = timetodate($user['totime'], 3);
+ if($do->vip_edit($post, $user)) {
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($user);
+ $validtime = $validtime ? timetodate($validtime, 3) : '';
+ include tpl('vip_edit', $module);
+ }
+ break;
+ case 'renew':
+ $userid or msg();
+ $do->userid = $userid;
+ $user = $do->get_one();
+ $FM_TIME = $user['totime'] > $DT_TIME ? $user['totime'] : $DT_TIME;
+ if($submit) {
+ $amount = dround($amount);
+ $pay = $pay ? 1 : 0;
+ if($amount < 0) msg('应付金额不能小于0');
+ $username = $user['username'];
+ $groupid = $post['groupid'];
+ $fromtime = datetotime(timetodate($FM_TIME, 3).' 00:00:00');
+ $totime = datetotime($post['totime'].' 23:59:59');
+ $reason = '续费';
+ $note = htmlspecialchars(trim($note));
+ if($amount && $pay) $note = $note.'站内扣款';
+
+ if($amount && $pay && $user['money'] < $amount) msg('会员'.$username.'余额不足');
+ $post['username'] = $user['username'];
+ $post['validated'] = $user['validated'];
+ $post['validator'] = $user['validator'];
+ $post['validtime'] = $user['validtime'] ? timetodate($user['validtime'], 3) : 0;
+ $post['fromtime'] = timetodate($user['fromtime'], 3);
+
+ if($do->vip_edit($post, $user)) {
+ if($amount && $pay) {
+ money_add($username, -$amount);
+ money_record($username, -$amount, '站内', $_username, VIP.'续费', $GROUP[$post['groupid']]['groupname']);
+ }
+ $gid = $user['groupid'];
+ $company = addslashes($user['company']);
+ $db->query("INSERT INTO {$DT_PRE}company_vip (username,company,amount,gid,groupid,fromtime,totime,addtime,reason,note,editor) VALUES ('$username','$company','$amount','$gid','$groupid','$fromtime','$totime','$DT_TIME', '$reason','$note','$_username')");
+ dmsg('续费成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($user);
+ $fromdate = timetodate($FM_TIME, 3);
+ $todate = timetodate($FM_TIME+365*86400, 3);
+ include tpl('vip_renew', $module);
+ }
+ break;
+ case 'delete':
+ $userid or msg('请选择公司');
+ $do->vip_delete($userid);
+ dmsg('撤销成功', $forward);
+ break;
+ case 'update':
+ is_array($userid) or msg('请选择'.$MOD['name']);
+ foreach($userid as $v) {
+ $do->update($v);
+ }
+ dmsg('更新成功', $forward);
+ break;
+ case 'move':
+ if($submit) {
+ $fromids or msg('请填写来源ID');
+ if($toareaid) {
+ $db->query("UPDATE {$table} SET areaid=$toareaid WHERE `{$fromtype}` IN ($fromids)");
+ $db->query("UPDATE {$DT_PRE}member SET areaid=$toareaid WHERE `{$fromtype}` IN ($fromids)");
+ }
+ dmsg('移动成功', $forward);
+ } else {
+ $userid = isset($userid) ? implode(',', $userid) : '';
+ $menuid = 4;
+ include tpl($action, $module);
+ }
+ break;
+ case 'level':
+ $userid or msg('请选择'.$MOD['name']);
+ $level = intval($level);
+ $do->level($userid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ case 'record':
+ $sfields = array('按条件', '公司名', '会员名', '操作事由', '备注信息', '操作人');
+ $dfields = array('company', 'company', 'username', 'reason', 'note', 'editor');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $sorder = array('排序方式', '发生时间降序', '发生时间升序', '开始时间降序', '开始时间升序', '到期时间降序', '到期时间升序', '支付费用降序', '支付费用升序', '原会员组ID降序', '原会员组ID升序', '新会员组ID降序', '新会员组ID升序');
+ $dorder = array('itemid DESC', 'addtime DESC', 'addtime ASC', 'fromtime DESC', 'fromtime ASC', 'totime DESC', 'totime ASC', 'amount DESC', 'amount ASC', 'gid DESC', 'gid ASC', 'groupid DESC', 'groupid ASC');
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ isset($datetype) && in_array($datetype, array('addtime', 'fromtime', 'totime')) or $datetype = 'addtime';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ (isset($username) && check_name($username)) or $username = '';
+ (isset($editor) && check_name($editor)) or $editor = '';
+ $gid = isset($gid) ? intval($gid) : 0;
+ $groupid = isset($groupid) ? intval($groupid) : 0;
+ $minamount = isset($minamount) ? dround($minamount) : '';
+ $minamount or $minamount = '';
+ $maxamount = isset($maxamount) ? dround($maxamount) : '';
+ $maxamount or $maxamount = '';
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+ $fgroup_select = group_select('gid', '原会员组', $gid);
+ $tgroup_select = group_select('groupid', '新会员组', $groupid);
+
+ $condition = "1";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+ if($minamount) $condition .= " AND amount>=$minamount";
+ if($maxamount) $condition .= " AND amount<=$maxamount";
+ if($gid) $condition .= " AND gid=$gid";
+ if($groupid) $condition .= " AND groupid=$groupid";
+ if($editor) $condition .= " AND editor='$editor'";
+ if($username) $condition .= " AND username='$username'";
+
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}company_vip WHERE $condition");
+ $items = $r['num'];
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}company_vip WHERE $condition ORDER BY $dorder[$order] LIMIT $offset,$pagesize");
+ $income = $expense = 0;
+ while($r = $db->fetch_array($result)) {
+ $r['addtime'] = timetodate($r['addtime'], 6);
+ $r['fromdate'] = timetodate($r['fromtime'], 3);
+ $r['todate'] = timetodate($r['totime'], 3);
+ $r['linkurl'] = userurl($r['username']);
+ $lists[] = $r;
+ }
+ $menuid = 2;
+ include tpl('vip_record', $module);
+ break;
+ case 'vip':
+ $sfields = array('按条件', '公司名', '会员名');
+ $dfields = array('keyword', 'company', 'username');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $sorder = array('结果排序方式', '开通时间降序', '开通时间升序', '到期时间降序', '到期时间升序', VIP.'指数降序', VIP.'指数升序', '理论值降序', '理论值升序', '修正值降序', '修正值升序', '会员组ID降序', '会员组ID升序', '会员ID降序', '会员ID升序');
+ $dorder = array('fromtime DESC', 'fromtime DESC', 'fromtime ASC', 'totime DESC', 'totime ASC', 'vip DESC', 'vip ASC', 'vipt DESC', 'vipt ASC', 'vipr DESC', 'vipr ASC', 'groupid DESC', 'groupid ASC', 'userid DESC', 'userid ASC');
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ isset($datetype) && in_array($datetype, array('fromtime', 'totime')) or $datetype = 'fromtime';
+ $vipt = isset($vipt) ? intval($vipt) : 0;
+ $vipt or $vipt = '';
+ $vipr = isset($vipr) ? intval($vipr) : 0;
+ $vipr or $vipr = '';
+ $vip = isset($vip) ? intval($vip) : 0;
+ $groupid = isset($groupid) ? intval($groupid) : 0;
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+ $group_select = group_select('groupid', '会员组', $groupid);
+
+ $condition = $vip ? "vip=$vip" : "vip>0";
+ if($_areaids) $condition .= " AND areaid IN (".$_areaids.")";//CITY
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($groupid) $condition .= " AND groupid=$groupid";
+ if($fromtime) $condition .= " AND $datetype>=$fromtime";
+ if($totime) $condition .= " AND $datetype<=$totime";
+ if($vipt != '') $condition .= " AND vipt=".intval($vipt);
+ if($vipr != '') $condition .= " AND vipr=".intval($vipr);
+ $companys = $do->get_list($condition, $dorder[$order]);
+ include tpl('vip', $module);
+ break;
+ default:
+ $sfields = array('按条件', '公司名', '会员名', '公司类型', '公司规模', '销售', '采购', '主营行业', '经营模式', '电话', '传真', 'Email', '地址', '邮编', '主页', '绑定域名', '备案号');
+ $dfields = array('keyword', 'company', 'username', 'type', 'size', 'sell', 'buy', 'business', 'mode', 'telephone', 'fax', 'mail', 'address', 'postcode', 'homepage', 'domain', 'icp');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $sorder = array('结果排序方式', '服务开始降序', '服务开始升序', '服务结束降序', '服务结束升序', '推荐级别降序', '推荐级别升序', '浏览人气降序','浏览人气升序', '点赞次数降序', '点赞次数升序', '反对次数降序', '反对次数升序', '收藏次数降序', '收藏次数升序', '打赏次数降序', '打赏次数升序', '打赏金额降序', '打赏金额升序', '分享次数降序', '分享次数升序', '举报次数降序', '举报次数升序', '评论数量降序', '评论数量升序', VIP.'指数降序', VIP.'指数升序', '注册年份降序', '注册年份升序', '注册资本降序', '注册资本升序', '会员组ID降序', '会员组ID升序', '会员ID降序', '会员ID升序');
+ $dorder = array('userid DESC', 'fromtime DESC', 'fromtime ASC', 'totime DESC', 'totime ASC', 'level DESC', 'level ASC', 'hits DESC', 'hits ASC', 'likes DESC', 'likes ASC', 'hates DESC', 'hates ASC', 'favorites DESC', 'favorites ASC', 'awards DESC', 'awards ASC', 'award DESC', 'award ASC', 'shares DESC', 'shares ASC', 'reports DESC', 'reports ASC', 'comments DESC', 'comments ASC','vip DESC', 'vip ASC', 'regyear DESC', 'regyear ASC', 'capital DESC', 'capital ASC', 'groupid DESC', 'groupid ASC', 'userid DESC', 'userid ASC');
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ $svalid = array('认证', '已通过' , '未通过');
+ $MS = cache_read('module-2.php');
+ $modes = explode('|', '经营模式|'.$MS['com_mode']);
+ $types = explode('|', '公司类型|'.$MS['com_type']);
+ $sizes = explode('|', '公司规模|'.$MS['com_size']);
+ $thumb = isset($thumb) ? intval($thumb) : 0;
+ $domain = isset($domain) ? intval($domain) : 0;
+ $mincapital = isset($mincapital) ? dround($mincapital) : '';
+ $mincapital or $mincapital = '';
+ $maxcapital = isset($maxcapital) ? dround($maxcapital) : '';
+ $maxcapital or $maxcapital = '';
+ $minregyear = isset($minregyear) ? intval($minregyear) : '';
+ $minregyear or $minregyear = '';
+ $maxregyear = isset($maxregyear) ? intval($maxregyear) : '';
+ $maxregyear or $maxregyear = '';
+ $areaid = isset($areaid) ? intval($areaid) : 0;
+ isset($mode) && isset($modes[$mode]) or $mode = 0;
+ isset($type) && isset($types[$type]) or $type = 0;
+ isset($size) && isset($sizes[$size]) or $size = 0;
+ $vip = isset($vip) ? ($vip === '' ? -1 : intval($vip)) : -1;
+ $groupid = isset($groupid) ? intval($groupid) : 0;
+ $valid = isset($valid) ? intval($valid) : 0;
+ $level = isset($level) ? intval($level) : 0;
+ $uid = isset($uid) ? intval($uid) : '';
+ $uid or $uid = '';
+ (isset($username) && check_name($username)) or $username = '';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ isset($datetype) && in_array($datetype, array('totime', 'fromtime', 'styletime', 'validtime')) or $datetype = 'totime';
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $level_select = level_select('level', '级别', $level, 'all');
+ $order_select = dselect($sorder, 'order', '', $order);
+ $valid_select = dselect($svalid, 'valid', '', $valid);
+ $group_select = group_select('groupid', '会员组', $groupid);
+ $mode_select = dselect($modes, 'mode', '', $mode);
+ $type_select = dselect($types, 'type', '', $type);
+ $size_select = dselect($sizes, 'size', '', $size);
+
+ $condition = 'groupid>5';
+ if($action == 'domain') $condition .= " AND domain<>''";
+ if($_areaids) $condition .= " AND areaid IN (".$_areaids.")";//CITY
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($groupid) $condition .= " AND groupid=$groupid";
+ if($vip > -1) $condition .= " AND vip=$vip";
+ if($level) $condition .= $level > 9 ? " AND level>0" : " AND level=$level";
+ if($valid) $condition .= $valid == 1 ? " AND validated=1" : " AND validated=0";
+ if($catid) $condition .= " AND catids LIKE '%,".$catid.",%'";
+ if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($mode) $condition .= match_kw('mode', $modes[$mode]);
+ if($type) $condition .= " AND type='$types[$type]'";
+ if($size) $condition .= " AND size='$sizes[$size]'";
+ if($mincapital) $condition .= " AND capital>=$mincapital";
+ if($maxcapital) $condition .= " AND capital<=$maxcapital";
+ if($minregyear) $condition .= " AND regyear>=$minregyear";
+ if($maxregyear) $condition .= " AND regyear<=$maxregyear";
+ if($thumb) $condition .= " AND thumb<>''";
+ if($domain) $condition .= " AND domain<>''";
+ if($uid) $condition .= " AND userid=$uid";
+ if($username) $condition .= " AND username='$username'";
+ if($fromtime) $condition .= " AND $datetype>=$fromtime";
+ if($totime) $condition .= " AND $datetype<=$totime";
+ $lists = $do->get_list($condition, $dorder[$order]);
+ $menuid = 3;
+ include tpl('index', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/company/admin/template/html.tpl.php b/module/company/admin/template/html.tpl.php
new file mode 100644
index 0000000..b7d9d3d
--- /dev/null
+++ b/module/company/admin/template/html.tpl.php
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/company/admin/template/vip_add.tpl.php b/module/company/admin/template/vip_add.tpl.php
new file mode 100644
index 0000000..4fffb6a
--- /dev/null
+++ b/module/company/admin/template/vip_add.tpl.php
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/company/admin/template/vip_edit.tpl.php b/module/company/admin/template/vip_edit.tpl.php
new file mode 100644
index 0000000..7e37e3c
--- /dev/null
+++ b/module/company/admin/template/vip_edit.tpl.php
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/company/admin/template/vip_record.tpl.php b/module/company/admin/template/vip_record.tpl.php
new file mode 100644
index 0000000..521d68a
--- /dev/null
+++ b/module/company/admin/template/vip_record.tpl.php
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/company/admin/template/vip_renew.tpl.php b/module/company/admin/template/vip_renew.tpl.php
new file mode 100644
index 0000000..586ffeb
--- /dev/null
+++ b/module/company/admin/template/vip_renew.tpl.php
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/company/brand.inc.php b/module/company/brand.inc.php
new file mode 100644
index 0000000..2585d56
--- /dev/null
+++ b/module/company/brand.inc.php
@@ -0,0 +1,85 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3 || $item['username'] != $username) dheader($MENU[$menuid]['linkurl']);
+ unset($item['template']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $CAT = get_cat($catid);
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ $content = DC::format($content, $DT_PC);
+ $CP = $MOD['cat_property'] && $CAT['property'];
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+ }
+ $adddate = timetodate($addtime, 5);
+ $editdate = timetodate($edittime, 5);
+ $linkurl = $MOD['linkurl'].$linkurl;
+ $could_message = ($username && $username != $_username && !$domain) ? 1 : 0;
+ $update = '';
+ if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+ $head_canonical = $linkurl;
+ $head_title = $title.$DT['seo_delimiter'].$head_title;
+ $head_keywords = $keyword;
+ $head_description = $introduce ? $introduce : $title;
+ if($DT_PC) {
+ //
+ } else {
+ $member = array();
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ include DT_ROOT.'/mobile/api/contact.inc.php';
+ $js_item = 1;
+ }
+} else {
+ $url = "file=$file";
+ $condition = "username='$username' AND status=3";
+ if($kw) {
+ $condition .= match_kw('keyword', $keyword);
+ $url .= "&kw=$kw";
+ $head_title = $kw.$DT['seo_delimiter'].$head_title;
+ }
+ if($elite) $condition .= " AND level>0";
+ $demo_url = $action == 'search' ? '' : userurl($username, $url.'&page={destoon_page}', $domain);
+ $pagesize = intval($menu_num[$menuid]);
+ if(!$pagesize || $pagesize > 100) $pagesize = 16;
+ $offset = ($page-1)*$pagesize;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = $DT_PC ? home_pages($items, $page, $pagesize, $demo_url) : mobile_pages($items, $page, $pagesize, $demo_url);
+ $lists = array();
+ if($items) {
+ $order = 'itemid DESC';
+ if($orderby) $order = substr($orderby, 0, 1) == 'd' ? substr($orderby, 1).' DESC' : substr($orderby, 1).' ASC';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY {$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ while($r = $db->fetch_array($result)) {
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $homeurl ? ($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).$r['linkurl'] : userurl($username, "file=$file&itemid=$r[itemid]", $domain);
+ if($kw) {
+ $r['title'] = str_replace($kw, ''.$kw.' ', $r['title']);
+ $r['introduce'] = str_replace($kw, ''.$kw.' ', $r['introduce']);
+ }
+ $lists[] = $r;
+ }
+ $db->free_result($result);
+ }
+ if($DT_PC) {
+ //
+ } else {
+ $tags = $lists;
+ }
+}
+include template('brand', $template);
+?>
\ No newline at end of file
diff --git a/module/company/buy.inc.php b/module/company/buy.inc.php
new file mode 100644
index 0000000..778a59c
--- /dev/null
+++ b/module/company/buy.inc.php
@@ -0,0 +1,93 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3 || $item['username'] != $username) dheader($MENU[$menuid]['linkurl']);
+ unset($item['template']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $CAT = get_cat($catid);
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ $content = DC::format($content, $DT_PC);
+ $CP = $MOD['cat_property'] && $CAT['property'];
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+ }
+ $adddate = timetodate($addtime, 5);
+ $editdate = timetodate($edittime, 5);
+ $todate = $totime ? timetodate($totime, 3) : 0;
+ $linkurl = $MOD['linkurl'].$linkurl;
+ $expired = $totime && $totime < $DT_TIME ? true : false;
+ $could_price = ($username && $username != $_username && !$expired && !$domain) ? 1 : 0;
+ $albums = get_albums($item);
+ $pics = count($albums);
+ $pics_width = $pics*70;
+ $album_js = 1;
+ $price_url = $MODULE[4]['linkurl'].'home.php?action=message&job=price&&itemid='.$itemid.'&template='.$template.'&skin='.$skin.'&title='.rawurlencode($title).'&username='.$username.'&sign='.crypt_sign($itemid.$template.$skin.$title.$username);
+ $update = '';
+ if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+ $head_canonical = $linkurl;
+ $head_title = $title.$DT['seo_delimiter'].$head_title;
+ $head_keywords = $keyword;
+ $head_description = $introduce ? $introduce : $title;
+ if($DT_PC) {
+ //
+ } else {
+ $member = array();
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ include DT_ROOT.'/mobile/api/contact.inc.php';
+ $js_item = $js_album = 1;
+ }
+} else {
+ $url = "file=$file";
+ $condition = "username='$username' AND status=3";
+ if($kw) {
+ $condition .= match_kw('keyword', $keyword);
+ $url .= "&kw=$kw";
+ $head_title = $kw.$DT['seo_delimiter'].$head_title;
+ }
+ if($elite) $condition .= " AND level>0";
+ $demo_url = $action == 'search' ? '' : userurl($username, $url.'&page={destoon_page}', $domain);
+ $pagesize = intval($menu_num[$menuid]);
+ if(!$pagesize || $pagesize > 100) $pagesize = 30;
+ $offset = ($page-1)*$pagesize;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = $DT_PC ? home_pages($items, $page, $pagesize, $demo_url) : mobile_pages($items, $page, $pagesize, $demo_url);
+ $lists = array();
+ if($items) {
+ $order = 'edittime DESC';
+ if($orderby) $order = substr($orderby, 0, 1) == 'd' ? substr($orderby, 1).' DESC' : substr($orderby, 1).' ASC';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY {$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ while($r = $db->fetch_array($result)) {
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $homeurl ? ($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).$r['linkurl'] : userurl($username, "file=$file&itemid=$r[itemid]", $domain);
+ $r['date'] = timetodate($r['edittime'], 3);
+ if($kw) {
+ $r['title'] = str_replace($kw, ''.$kw.' ', $r['title']);
+ $r['introduce'] = str_replace($kw, ''.$kw.' ', $r['introduce']);
+ }
+ $lists[] = $r;
+ }
+ $db->free_result($result);
+ }
+ if($DT_PC) {
+ //
+ } else {
+ $tags = $lists;
+ }
+}
+include template('buy', $template);
+?>
\ No newline at end of file
diff --git a/module/company/common.inc.php b/module/company/common.inc.php
new file mode 100644
index 0000000..f1f95d1
--- /dev/null
+++ b/module/company/common.inc.php
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/module/company/company.class.php b/module/company/company.class.php
new file mode 100644
index 0000000..1521854
--- /dev/null
+++ b/module/company/company.class.php
@@ -0,0 +1,161 @@
+table_member = DT_PRE.'member';
+ $this->table_company = DT_PRE.'company';
+ $this->table_company_data = DT_PRE.'company_data';
+ }
+
+ function company($username = '') {
+ $this->__construct($username);
+ }
+
+ function get_one($username = '') {
+ $sql = $username ? "m.username='$username'" : "m.userid='$this->userid'";
+ return DB::get_one("SELECT * FROM {$this->table_member} m,{$this->table_company} c WHERE m.userid=c.userid AND $sql");
+ }
+
+ function get_list($condition, $order = 'userid DESC', $cache = '') {
+ global $pages, $page, $pagesize, $offset, $items, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table_company} WHERE $condition", $cache);
+ $items = $r['num'];
+ }
+ $pages = defined('CATID') ? listpages(1, CATID, $items, $page, $pagesize, 10, $MOD['linkurl']) : pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = $userids = array();
+ $result = DB::query("SELECT * FROM {$this->table_company} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize", $cache);
+ while($r = DB::fetch_array($result)) {
+ if($r['totime'] < DT_TIME && $r['vip'] > 0) $userids[] = $r['userid'];
+ $lists[] = $r;
+ }
+ if($userids) $this->vip_delete($userids);
+ return $lists;
+ }
+
+ function update($userid) {
+ global $DT, $MOD;
+ $this->userid = $userid;
+ $r = $this->get_one();
+ if(!$r) return false;
+ $linkurl = userurl($r['username'], '', $r['domain']);
+ $keyword = addslashes($r['company'].strip_tags(area_pos($r['areaid'], '')).$r['business'].$r['sell'].$r['buy'].$r['mode']);
+ $catids = '';
+ if($r['catid']) {
+ $catids = explode(',', substr($r['catid'], 1, -1));
+ $cids = '';
+ foreach($catids as $catid) {
+ $C = get_cat($catid);
+ if($C) {
+ $catid = $C['parentid'] ? $C['arrparentid'].','.$catid : $catid;
+ $cids .= $catid.',';
+ }
+ }
+ $cids = array_unique(explode(',', substr(str_replace(',0,', ',', ','.$cids), 1, -1)));
+ $catids = ','.implode(',', $cids).',';
+ $r['catids'] = $catids;
+ }
+ if($r['vip']) {
+ $vipt = $this->get_vipt($r['username']);
+ $vip = $this->get_vip($vipt, $r['vipr']);
+ $r['vip'] = $vip;
+ DB::query("UPDATE {$this->table_company} SET linkurl='$linkurl',keyword='$keyword',catids='$catids',vip='$vip',vipt='$vipt' WHERE userid=$userid");
+ } else {
+ DB::query("UPDATE {$this->table_company} SET linkurl='$linkurl',keyword='$keyword',catids='$catids' WHERE userid=$userid");
+ }
+ return true;
+ }
+
+ function get_vipt($username) {
+ global $MOD, $GROUP;
+ $GROUP or $GROUP = cache_read('group.php');
+ $r = $this->get_one($username);
+ $_groupvip = $GROUP[$r['groupid']]['vip'] > $MOD['vip_maxgroupvip'] ? $MOD['vip_maxgroupvip'] : $GROUP[$r['groupid']]['vip'];
+ $_cominfo = $r['validated'] ? intval($MOD['vip_cominfo']) : 0;
+ $_year = $r['fromtime'] ? (date('Y', DT_TIME) - date('Y', $r['fromtime']))*$MOD['vip_year'] : 0;
+ $_year = $_year > $MOD['vip_maxyear'] ? $MOD['vip_maxyear'] : $_year;
+ $m = DB::get_one("SELECT COUNT(*) AS num FROM ".DT_PRE."honor WHERE username='$username' AND status=3");
+ $_honor = $m['num'] > 4 ? $MOD['vip_honor'] : 0;
+ $total = intval($_groupvip + $_cominfo + $_year + $_honor);
+ if($total > 10) $total = 10;
+ if($total < 1) $total = 1;
+ return $total;
+ }
+
+ function get_vip($vipt, $vipr) {
+ $vip = intval($vipt + ($vipr));
+ if($vip > 10) $vip = 10;
+ if($vip < 1) $vip = 1;
+ return $vip;
+ }
+
+ function vip_edit($post, $user = array()) {
+ global $_username;
+ if(!is_array($post)) return false;
+ if(!$post['username']) return $this->_(lang('message->pass_company_username'));
+ $user or $user = $this->get_one($post['username']);
+ if(!$user) return $this->_(lang('message->pass_company_notuser'));
+ $userid = $user['userid'];
+ if($user['groupid'] < 5) return $this->_(lang('message->pass_company_badgroup'));
+ if(!$post['groupid']) return $this->_(lang('message->pass_company_group'));
+ if(!$post['fromtime'] || !is_date($post['fromtime'])) return $this->_(lang('message->pass_company_fromdate'));
+ if(!$post['totime'] || !is_date($post['totime'])) return $this->_(lang('message->pass_company_todate'));
+ if(datetotime($post['fromtime'].' 00:00:00') > datetotime($post['totime'].' 23:59:59')) return $this->_(lang('message->pass_company_baddate'));
+ $post['fromtime'] = datetotime($post['fromtime'].' 00:00:00');
+ $post['totime'] = datetotime($post['totime'].' 23:59:59');
+ $post['validated'] = $post['validated'] ? 1 : 0;
+ $post['validtime'] = is_date($post['validtime']) ? datetotime($post['validtime']) : 0;
+ $post['vipr'] = isset($post['vipr']) ? $post['vipr'] : 0;
+ DB::query("UPDATE {$this->table_company} SET groupid='$post[groupid]',validated='$post[validated]',validator='$post[validator]',validtime='$post[validtime]',vipr='$post[vipr]',fromtime='$post[fromtime]',totime='$post[totime]' WHERE userid=$userid");
+ $post['vipt'] = $this->get_vipt($post['username']);
+ $post['vip'] = $this->get_vip($post['vipt'], $post['vipr']);
+ DB::query("UPDATE {$this->table_company} SET vip='$post[vip]',vipt='$post[vipt]' WHERE userid=$userid");
+ DB::query("UPDATE {$this->table_member} SET groupid='$post[groupid]' WHERE userid=$userid");
+ userclean($post['username']);
+ return true;
+ }
+
+ function vip_delete($userid) {
+ $userids = is_array($userid) ? implode(',', $userid) : intval($userid);
+ $result = DB::query("SELECT * FROM {$this->table_member} WHERE userid IN ($userids)");
+ while($r = DB::fetch_array($result)) {
+ $regid = $r['regid'] ? $r['regid'] : 6;
+ $userid = $r['userid'];
+ DB::query("UPDATE {$this->table_company} SET groupid=$regid,vip=0,vipr=0,vipt=0 WHERE userid=$userid");
+ DB::query("UPDATE {$this->table_member} SET groupid=$regid,regid=$regid WHERE userid=$userid");
+ userclean($r['username']);
+ }
+ return true;
+ }
+
+ function level($userid, $level) {
+ if(is_array($userid)) {
+ foreach($userid as $v) { $this->level($v, $level); }
+ } else {
+ $this->userid = $userid;
+ $user = $this->get_one();
+ if($user) {
+ DB::query("UPDATE {$this->table_company} SET level=$level WHERE userid=$userid");
+ userclean($user['username']);
+ }
+
+ }
+ return true;
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/company/contact.inc.php b/module/company/contact.inc.php
new file mode 100644
index 0000000..8027142
--- /dev/null
+++ b/module/company/contact.inc.php
@@ -0,0 +1,12 @@
+
\ No newline at end of file
diff --git a/module/company/credit.inc.php b/module/company/credit.inc.php
new file mode 100644
index 0000000..1b5f4e6
--- /dev/null
+++ b/module/company/credit.inc.php
@@ -0,0 +1,43 @@
+0";
+ } else {
+ $condition = "seller='$username' AND seller_star>0";
+ }
+ $demo_url = userurl($username, $url.'&page={destoon_page}', $domain);
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = $DT_PC ? home_pages($items, $page, $pagesize, $demo_url) : mobile_pages($items, $page, $pagesize, $demo_url);
+ $lists = array();
+ if($items) {
+ $result = $db->query("SELECT * FROM {$table} WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $lists[] = $r;
+ }
+ $db->free_result($result);
+ }
+ }
+} else {
+ $table = $DT_PRE.'page';
+ $TYPE = array();
+ $result = $db->query("SELECT itemid,title,style FROM {$table} WHERE status=3 AND username='$username' ORDER BY listorder DESC,addtime DESC", 'CACHE');
+ while($r = $db->fetch_array($result)) {
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = userurl($username, "file=introduce&itemid=$r[itemid]", $domain);
+ $TYPE[] = $r;
+ }
+ $foot = 'introduce';
+}
+include template('credit', $template);
+?>
\ No newline at end of file
diff --git a/module/company/exhibit.inc.php b/module/company/exhibit.inc.php
new file mode 100644
index 0000000..d6896e1
--- /dev/null
+++ b/module/company/exhibit.inc.php
@@ -0,0 +1,88 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3 || $item['username'] != $username) dheader($MENU[$menuid]['linkurl']);
+ unset($item['template']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $CAT = get_cat($catid);
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ $content = DC::format($content, $DT_PC);
+ $CP = $MOD['cat_property'] && $CAT['property'];
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+ }
+ $process = get_process($fromtime, $totime);
+ $fromdate = timetodate($fromtime, 3);
+ $todate = timetodate($totime, 3);
+ $adddate = timetodate($addtime, 3);
+ $editdate = timetodate($edittime, 3);
+ $linkurl = $MOD['linkurl'].$linkurl;
+ $could_sign = ($sign && $process == 1 && $user_status == 3 && $username && $username != $_username) ? 1 : 0;
+ $update = '';
+ if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+ $head_canonical = $linkurl;
+ $head_title = $title.$DT['seo_delimiter'].$head_title;
+ $head_keywords = $keyword;
+ $head_description = $introduce ? $introduce : $title;
+ if($DT_PC) {
+ //
+ } else {
+ $member = array();
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ include DT_ROOT.'/mobile/api/contact.inc.php';
+ $js_item = 1;
+ }
+} else {
+ $url = "file=$file";
+ $condition = "username='$username' AND status=3";
+ if($kw) {
+ $condition .= match_kw('keyword', $keyword);
+ $url .= "&kw=$kw";
+ $head_title = $kw.$DT['seo_delimiter'].$head_title;
+ }
+ if($elite) $condition .= " AND level>0";
+ $demo_url = $action == 'search' ? '' : userurl($username, $url.'&page={destoon_page}', $domain);
+ $pagesize = intval($menu_num[$menuid]);
+ if(!$pagesize || $pagesize > 100) $pagesize = 16;
+ $offset = ($page-1)*$pagesize;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = $DT_PC ? home_pages($items, $page, $pagesize, $demo_url) : mobile_pages($items, $page, $pagesize, $demo_url);
+ $lists = array();
+ if($items) {
+ $order = 'itemid DESC';
+ if($orderby) $order = substr($orderby, 0, 1) == 'd' ? substr($orderby, 1).' DESC' : substr($orderby, 1).' ASC';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY {$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ while($r = $db->fetch_array($result)) {
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $homeurl ? ($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).$r['linkurl'] : userurl($username, "file=$file&itemid=$r[itemid]", $domain);
+ if($kw) {
+ $r['title'] = str_replace($kw, ''.$kw.' ', $r['title']);
+ $r['introduce'] = str_replace($kw, ''.$kw.' ', $r['introduce']);
+ }
+ $lists[] = $r;
+ }
+ $db->free_result($result);
+ }
+ if($DT_PC) {
+ //
+ } else {
+ $tags = $lists;
+ }
+}
+include template('exhibit', $template);
+?>
\ No newline at end of file
diff --git a/module/company/global.func.php b/module/company/global.func.php
new file mode 100644
index 0000000..635c7df
--- /dev/null
+++ b/module/company/global.func.php
@@ -0,0 +1,14 @@
+
\ No newline at end of file
diff --git a/module/company/guest.inc.php b/module/company/guest.inc.php
new file mode 100644
index 0000000..3f3dc3d
--- /dev/null
+++ b/module/company/guest.inc.php
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/module/company/home.inc.php b/module/company/home.inc.php
new file mode 100644
index 0000000..0ba7bd7
--- /dev/null
+++ b/module/company/home.inc.php
@@ -0,0 +1,126 @@
+get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}message WHERE $sql AND addtime>$today AND typeid=1 AND status=3");
+ $r['num'] < $MG['inquiry_limit'] or dalert(lang($L['message_limit'], array($MG['inquiry_limit'], $r['num'])));
+ }
+ } else if($job == 'price') {
+ if($MG['price_limit']) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}message WHERE $sql AND addtime>$today AND typeid=2 AND status=3");
+ $r['num'] < $MG['price_limit'] or dalert(lang($L['message_limit'], array($MG['price_limit'], $r['num'])));
+ }
+ } else {
+ if($MG['message_limit']) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}message WHERE $sql AND addtime>$today AND status=3");
+ $r['num'] < $MG['message_limit'] or dalert(lang($L['message_limit'], array($MG['message_limit'], $r['num'])));
+ }
+ }
+ $msg = captcha($captcha, 1, true);
+ if($msg) dalert($msg);
+ $title = dhtmlspecialchars(trim($title));
+ if(!$title) dalert($L['msg_type_title']);
+ $content = dhtmlspecialchars(trim($content));
+ if(!$content) dalert($L['msg_type_content']);
+ $truename = dhtmlspecialchars(trim($truename));
+ if(!$truename) dalert($L['msg_type_truename']);
+ $telephone = dhtmlspecialchars(trim($telephone));
+ if(!$telephone) message($L['msg_type_telephone']);
+ $company = dhtmlspecialchars(trim($company));
+ $email = dhtmlspecialchars(trim($email));
+ $qq = dhtmlspecialchars(trim($qq));
+ $wx = dhtmlspecialchars(trim($wx));
+ $ali = dhtmlspecialchars(trim($ali));
+ $skype = dhtmlspecialchars(trim($skype));
+ $content = nl2br($content);
+ if($company) $content .= ' '.$L['content_company'].$company;
+ if($truename) $content .= ' '.$L['content_truename'].$truename;
+ if($telephone) $content .= ' '.$L['content_telephone'].$telephone;
+ if(is_email($email)) $content .= ' '.$L['content_email'].$email;
+ if(is_qq($qq)) $content .= ' '.$L['content_qq'].' '.im_qq($qq).' '.$qq;
+ if(is_wx($wx)) $content .= ' '.$L['content_wx'].' '.im_wx($wx, $_username).' '.$wx;
+ if($ali) $content .= ' '.$L['content_ali'].' '.im_ali($ali).' '.$ali;
+ if($skype) $content .= ' '.$L['content_skype'].' '.im_skype($skype).' '.$skype;
+ if($job != 'guestbook') $content .= ' '.$L['content_from'];
+ if($job == 'guestbook') {
+ $type = 3;
+ } else if($job == 'price') {
+ $type = 2;
+ } else {
+ $type = 1;
+ }
+ if(send_message($username, $title, $content, $type, $_username)) {
+ dalert($L['msg_home_success'], '', 'parent.window.location=parent.window.location;');
+ } else {
+ dalert($_userid ? $L['msg_home_member_failed'] : $L['msg_home_guest_failed']);
+ }
+ break;
+ case 'next':
+ $itemid or dheader($MOD['linkurl']);
+ check_name($username) or dheader($MOD['linkurl']);
+ $user = userinfo($username);
+ $domain = $user['domain'];
+ if($domain) $DT['rewrite'] = intval($CFG['com_rewrite']);
+ $r = $db->get_one("SELECT itemid FROM {$DT_PRE}sell_5 WHERE username='$username' AND itemid>$itemid AND status=3 ORDER BY itemid ASC");
+ if($r) dheader(userurl($username, 'file=sell&itemid='.$r['itemid'], $domain));
+ dheader(userurl($username, 'file=sell', $domain));
+ break;
+ case 'prev':
+ $itemid or dheader($MOD['linkurl']);
+ check_name($username) or dheader($MOD['linkurl']);
+ $user = userinfo($username);
+ $domain = $user['domain'];
+ if($domain) $DT['rewrite'] = intval($CFG['com_rewrite']);
+ $r = $db->get_one("SELECT itemid FROM {$DT_PRE}sell_5 WHERE username='$username' AND itemid<$itemid AND status=3 ORDER BY itemid DESC");
+ if($r) dheader(userurl($username, 'file=sell&itemid='.$r['itemid'], $domain));
+ dheader(userurl($username, 'file=sell', $domain));
+ break;
+ default:
+ dheader($MOD['linkurl']);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/company/index.inc.php b/module/company/index.inc.php
new file mode 100644
index 0000000..89f79df
--- /dev/null
+++ b/module/company/index.inc.php
@@ -0,0 +1,88 @@
+get_one("SELECT userid FROM {$DT_PRE}company WHERE domain='$w3'");
+ if($c) d301('http://'.$w3);
+ }
+ $c = $db->get_one("SELECT username,domain FROM {$DT_PRE}company WHERE domain='$whost'".($host == $whost ? '' : " OR domain='$host'"), 'CACHE');
+ if($c) {
+ $username = $homepage = $c['username'];
+ $domain = $c['domain'];
+ }
+ }
+ }
+}
+if($username) {
+ include DT_ROOT.'/module/'.$module.'/init.inc.php';
+} else {
+ if($DT_PC) {
+ if(strpos($DT_URL, $MOD['linkurl']) === false) dhttp(404);
+ if($DT['safe_domain']) {
+ $safe_domain = explode('|', $DT['safe_domain']);
+ $pass_domain = false;
+ foreach($safe_domain as $v) {
+ if(strpos($DT_URL, $v) !== false) { $pass_domain = true; break; }
+ }
+ $pass_domain or dhttp(404);
+ }
+ if(!check_group($_groupid, $MOD['group_index'])) include load('403.inc');
+ if($MOD['index_html']) {
+ $html_file = DT_CACHE.'/htm/company.htm';
+ if(!is_file($html_file)) tohtml('index', $module);
+ if(is_file($html_file)) exit(include($html_file));
+ }
+ if($page == 1) $head_canonical = $MOD['linkurl'];
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'];
+ $destoon_task = "moduleid=$moduleid&html=index";
+ $CSS = array('catalog');
+ } else {
+ $condition = "groupid>5";
+ if($cityid) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize);
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+ }
+ $seo_file = 'index';
+ include DT_ROOT.'/include/seo.inc.php';
+ include template($MOD['template_index'] ? $MOD['template_index'] : 'index', $module);
+}
+?>
\ No newline at end of file
diff --git a/module/company/info.inc.php b/module/company/info.inc.php
new file mode 100644
index 0000000..d021dc0
--- /dev/null
+++ b/module/company/info.inc.php
@@ -0,0 +1,92 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3 || $item['username'] != $username) dheader($MENU[$menuid]['linkurl']);
+ if($item['islink']) dheader($item['linkurl']);
+ unset($item['template']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $CAT = get_cat($catid);
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ $content = DC::format($content, $DT_PC);
+ $CP = $MOD['cat_property'] && $CAT['property'];
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+ }
+ $adddate = timetodate($addtime, 5);
+ $editdate = timetodate($edittime, 5);
+ $todate = $totime ? timetodate($totime, 3) : 0;
+ $expired = $totime && $totime < $DT_TIME ? true : false;
+ $could_message = ($username && $username != $_username && !$expired && !$domain) ? 1 : 0;
+ $linkurl = $MOD['linkurl'].$linkurl;
+ $albums = get_albums($item);
+ $pics = count($albums);
+ $pics_width = $pics*70;
+ $album_js = 1;
+ $update = '';
+ if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+ $head_canonical = $linkurl;
+ $head_title = $title.$DT['seo_delimiter'].$head_title;
+ $head_keywords = $keyword;
+ $head_description = $introduce ? $introduce : $title;
+ if($DT_PC) {
+ //
+ } else {
+ $member = array();
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ include DT_ROOT.'/mobile/api/contact.inc.php';
+ $js_item = $js_album = 1;
+ }
+} else {
+ $url = "file=$file";
+ $condition = "username='$username' AND status=3";
+ if($kw) {
+ $condition .= match_kw('keyword', $keyword);
+ $url .= "&kw=$kw";
+ $head_title = $kw.$DT['seo_delimiter'].$head_title;
+ }
+ if($elite) $condition .= " AND level>0";
+ $demo_url = $action == 'search' ? '' : userurl($username, $url.'&page={destoon_page}', $domain);
+ $pagesize = intval($menu_num[$menuid]);
+ if(!$pagesize || $pagesize > 100) $pagesize = 30;
+ $offset = ($page-1)*$pagesize;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = $DT_PC ? home_pages($items, $page, $pagesize, $demo_url) : mobile_pages($items, $page, $pagesize, $demo_url);
+ $lists = array();
+ if($items) {
+ $order = 'edittime DESC';
+ if($orderby) $order = substr($orderby, 0, 1) == 'd' ? substr($orderby, 1).' DESC' : substr($orderby, 1).' ASC';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY {$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ while($r = $db->fetch_array($result)) {
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $homeurl ? ($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).$r['linkurl'] : userurl($username, "file=$file&itemid=$r[itemid]", $domain);
+ if($kw) {
+ $r['title'] = str_replace($kw, ''.$kw.' ', $r['title']);
+ $r['introduce'] = str_replace($kw, ''.$kw.' ', $r['introduce']);
+ }
+ $lists[] = $r;
+ }
+ $db->free_result($result);
+ }
+ if($DT_PC) {
+ //
+ } else {
+ $tags = $lists;
+ }
+}
+include template('info', $template);
+?>
\ No newline at end of file
diff --git a/module/company/introduce.inc.php b/module/company/introduce.inc.php
new file mode 100644
index 0000000..998fcb7
--- /dev/null
+++ b/module/company/introduce.inc.php
@@ -0,0 +1,53 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3 || $item['username'] != $username) dheader($MENU[$menuid]['linkurl']);
+ extract($item);
+ $t = $db->get_one("SELECT content FROM {$table_data} WHERE itemid=$itemid");
+ $content = $t['content'];
+ $content = DC::format($content, $DT_PC);
+ if(!$DT_BOT) $db->query("UPDATE LOW_PRIORITY {$table} SET hits=hits+1 WHERE itemid=$itemid", 'UNBUFFERED');
+ $head_title = $title.$DT['seo_delimiter'].$head_title;
+ $head_keywords = $title.','.$COM['company'];
+ $head_description = get_intro($content, 200);
+ if($DT_PC) {
+ //
+ } else {
+ $js_item = 1;
+ $head_name = $title;
+ }
+} else {
+ $content_table = content_table(4, $userid, is_file(DT_CACHE.'/4.part'), $DT_PRE.'company_data');
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE userid=$userid");
+ $content = $t['content'];
+ $thumb = $COM['thumb'];
+ $video = isset($HOME['video']) ? $HOME['video'] : '';
+
+ $userid = $COM['userid'];
+ $title = $COM['company'];
+ $likes = $COM['likes'];
+ $hates = $COM['hates'];
+ $reports = $COM['reports'];
+ $favorites = $COM['favorites'];
+ $comments = $COM['comments'];
+ $shares = $COM['shares'];
+}
+$TYPE = array();
+$result = $db->query("SELECT itemid,title,style FROM {$table} WHERE status=3 AND username='$username' ORDER BY listorder DESC,addtime DESC", 'CACHE');
+while($r = $db->fetch_array($result)) {
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = userurl($username, "file=$file&itemid=$r[itemid]", $domain);
+ $TYPE[] = $r;
+}
+if($DT_PC) {
+ //
+} else {
+ $foot = 'introduce';
+}
+include template($file, $template);
+?>
\ No newline at end of file
diff --git a/module/company/job.inc.php b/module/company/job.inc.php
new file mode 100644
index 0000000..5f92486
--- /dev/null
+++ b/module/company/job.inc.php
@@ -0,0 +1,92 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3 || $item['username'] != $username) dheader($MENU[$menuid]['linkurl']);
+ unset($item['template']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $CAT = get_cat($catid);
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ $content = DC::format($content, $DT_PC);
+ $CP = $MOD['cat_property'] && $CAT['property'];
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+ }
+ //do not require common.inc.php
+ $TYPE = explode('|', trim($MOD['type']));
+ $GENDER = explode('|', trim($MOD['gender']));
+ $MARRIAGE = explode('|', trim($MOD['marriage']));
+ $EDUCATION = explode('|', trim($MOD['education']));
+ $SITUATION = explode('|', trim($MOD['situation']));
+ $parentid = $CATEGORY[$catid]['parentid'] ? $CATEGORY[$catid]['parentid'] : $catid;
+ $expired = $totime && $totime < $DT_TIME ? true : false;
+ $linkurl = $MOD['linkurl'].$linkurl;
+ if(!$DT_BOT && $MOD['hits']) $db->query("UPDATE LOW_PRIORITY {$table} SET hits=hits+1 WHERE itemid=$itemid", 'UNBUFFERED');
+ $head_canonical = $linkurl;
+ $head_title = $title.$DT['seo_delimiter'].$head_title;
+ $head_keywords = $title.','.$COM['company'];
+ $head_description = dsubstr(strip_tags($content), 200, '...');
+ if($DT_PC) {
+ //
+ } else {
+ $member = array();
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ include DT_ROOT.'/mobile/api/contact.inc.php';
+ $js_item = 1;
+ }
+} else {
+ $url = "file=$file";
+ $condition = "username='$username' AND status=3";
+ if($kw) {
+ $condition .= match_kw('keyword', $keyword);
+ $url .= "&kw=$kw";
+ $head_title = $kw.$DT['seo_delimiter'].$head_title;
+ }
+ if($elite) $condition .= " AND level>0";
+ $demo_url = $action == 'search' ? '' : userurl($username, $url.'&page={destoon_page}', $domain);
+ $pagesize = intval($menu_num[$menuid]);
+ if(!$pagesize || $pagesize > 100) $pagesize = 30;
+ $offset = ($page-1)*$pagesize;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = $DT_PC ? home_pages($items, $page, $pagesize, $demo_url) : mobile_pages($items, $page, $pagesize, $demo_url);
+ $lists = array();
+ if($items) {
+ $order = 'itemid DESC';
+ if($orderby) $order = substr($orderby, 0, 1) == 'd' ? substr($orderby, 1).' DESC' : substr($orderby, 1).' ASC';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY {$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ while($r = $db->fetch_array($result)) {
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $homeurl ? ($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).$r['linkurl'] : userurl($username, "file=$file&itemid=$r[itemid]", $domain);
+ $r['parentid'] = $CATEGORY[$r['catid']]['parentid'] ? $CATEGORY[$r['catid']]['parentid'] : $r['catid'];
+ if($kw) {
+ $r['title'] = str_replace($kw, ''.$kw.' ', $r['title']);
+ $r['introduce'] = str_replace($kw, ''.$kw.' ', $r['introduce']);
+ }
+ $lists[] = $r;
+ }
+ $db->free_result($result);
+ }
+ if($DT_PC) {
+ //
+ } else {
+ $tags = $lists;
+ }
+}
+include template('job', $template);
+?>
\ No newline at end of file
diff --git a/module/company/link.inc.php b/module/company/link.inc.php
new file mode 100644
index 0000000..25ae07d
--- /dev/null
+++ b/module/company/link.inc.php
@@ -0,0 +1,29 @@
+ 100) $pagesize = 33;
+$offset = ($page-1)*$pagesize;
+$r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+$items = $r['num'];
+$pages = $DT_PC ? home_pages($items, $page, $pagesize, $demo_url) : mobile_pages($items, $page, $pagesize, $demo_url);
+$lists = array();
+if($items) {
+ $result = $db->query("SELECT * FROM {$table} WHERE $condition ORDER BY listorder DESC,addtime DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $lists[] = $r;
+ }
+ $db->free_result($result);
+}
+include template('link', $template);
+?>
\ No newline at end of file
diff --git a/module/company/list.htm.php b/module/company/list.htm.php
new file mode 100644
index 0000000..13e1253
--- /dev/null
+++ b/module/company/list.htm.php
@@ -0,0 +1,75 @@
+5 and catids like '%,".$catid.",%'";
+if($page == 1) {
+ $items = $db->count($table, $condition);
+ if($items != $CAT['item']) {
+ $CAT['item'] = $items;
+ $db->query("UPDATE {$DT_PRE}category SET item=$items WHERE catid=$catid");
+ }
+} else {
+ $items = $CAT['item'];
+}
+$pagesize = $MOD['pagesize'];
+$showpage = 1;
+$template = $CAT['template'] ? $CAT['template'] : ($MOD['template_list'] ? $MOD['template_list'] : 'list');
+$total = max(ceil($items/$MOD['pagesize']), 1);
+if(isset($fid) && isset($num)) {
+ $page = $fid;
+ $topage = $fid + $num - 1;
+ $total = $topage < $total ? $topage : $total;
+}
+for(; $page <= $total; $page++) {
+ $offset = ($page-1)*$pagesize;
+ $pages = listpages($CAT, $items, $page, $pagesize);
+ $tags = $_tags = $ids = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}");
+ while($r = $db->fetch_array($result)) {
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $tags[] = $r;
+ }
+ }
+ $seo_file = 'list';
+ include DT_ROOT.'/include/seo.inc.php';
+ $destoon_task = "moduleid=$moduleid&html=list&catid=$catid&page=$page";
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].($page > 1 ?listurl($CAT, $page) : $CAT['linkurl']);
+ $filename = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, $page);
+ $_tags = $tags;
+ $DT_PC = $GLOBALS['DT_PC'] = 1;
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ if($DT['pcharset']) $filename = convert($filename, DT_CHARSET, $DT['pcharset']);
+ file_put($filename, $data);
+ if($page == 1) {
+ $indexname = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, 0);
+ if($DT['pcharset']) $indexname = convert($indexname, DT_CHARSET, $DT['pcharset']);
+ file_copy($filename, $indexname);
+ }
+ if($EXT['mobile_enable']) {
+ include DT_ROOT.'/include/mobile.htm.php';
+ $head_pc = str_replace($MOD['mobile'], $MOD['linkurl'], $head_mobile);
+ if($CAT['parentid']) $PCAT = get_cat($CAT['parentid']);
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($CAT, '{destoon_page}'));
+ $tags = $_tags;
+ if($items) $js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid;
+ $head_title = $head_name = $CAT['catname'];
+ $filename = str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename);
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put($filename, $data);
+ if($page == 1) file_copy($filename, str_replace(DT_ROOT, DT_ROOT.'/mobile', $indexname));
+ }
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/company/list.inc.php b/module/company/list.inc.php
new file mode 100644
index 0000000..1dece16
--- /dev/null
+++ b/module/company/list.inc.php
@@ -0,0 +1,73 @@
+5 AND catids like '%,".$catid.",%'";
+ if($cityid) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ $items = $db->count($table, $condition, $CFG['db_expires']);
+ } else {
+ if($page == 1) {
+ $items = $db->count($table, $condition, $CFG['db_expires']);
+ if($items != $CAT['item']) {
+ $CAT['item'] = $items;
+ $db->query("UPDATE {$DT_PRE}category SET item=$items WHERE catid=$catid");
+ }
+ } else {
+ $items = $CAT['item'];
+ }
+ }
+ $pagesize = $MOD['pagesize'];
+ $offset = ($page-1)*$pagesize;
+ $pages = listpages($CAT, $items, $page, $pagesize);
+ $tags = $_tags = $ids = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $tags[] = $r;
+ }
+ }
+ $showpage = 1;
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].listurl($CAT, $page > 1 ? $page : 0);
+} else {
+ if(!$CAT || $CAT['moduleid'] != $moduleid) message($L['msg_not_cate']);
+ if(!check_group($_groupid, $MOD['group_list']) || !check_group($_groupid, $CAT['group_list'])) message($L['msg_no_right']);
+ $condition = "groupid>5";
+ $condition .= " AND catids like '%,".$catid.",%'";
+ if($cityid) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($CAT, '{destoon_page}'));
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid;
+ }
+ if($CAT['parentid']) $PCAT = get_cat($CAT['parentid']);
+ $head_title = $head_name = $CAT['catname'];
+}
+$seo_file = 'list';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $CAT['template'] ? $CAT['template'] : ($MOD['template_list'] ? $MOD['template_list'] : 'list');
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/company/news.inc.php b/module/company/news.inc.php
new file mode 100644
index 0000000..9d35f01
--- /dev/null
+++ b/module/company/news.inc.php
@@ -0,0 +1,99 @@
+get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $lists = array();
+ if($items) {
+ $result = $db->query("SELECT * FROM {$table} WHERE {$condition} ORDER BY addtime DESC LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['date'] = timetodate($r['addtime'], 3);
+ $lists[] = $r;
+ }
+ $db->free_result($result);
+ }
+ if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+ $CSS = array('article');
+ } else {
+ $tags = $lists;
+ $js_item = 1;
+ }
+ $head_title = $L['news_title'].$DT['seo_delimiter'].$MOD['name'];
+ if($kw) $head_title = $kw.$DT['seo_delimiter'].$head_title;
+ include template('news', $module);
+ exit;
+}
+$TYPE = get_type('news-'.$userid);
+$_TP = sort_type($TYPE);
+if($itemid) {
+ $item = $db->get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3 || $item['username'] != $username) dheader($MENU[$menuid]['linkurl']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $t = $db->get_one("SELECT content FROM {$table_data} WHERE itemid=$itemid");
+ $content = $t['content'];
+ $content = DC::format($content, $DT_PC);
+ if(!$DT_BOT) $db->query("UPDATE LOW_PRIORITY {$table} SET hits=hits+1 WHERE itemid=$itemid", 'UNBUFFERED');
+ $head_title = $title.$DT['seo_delimiter'].$head_title;
+ $head_keywords = $title.','.$COM['company'];
+ $head_description = get_intro($content, 200);
+ if($DT_PC) {
+ //
+ } else {
+ if($typeid) $head_name = $TYPE[$typeid]['typename'];
+ $foot = 'news';
+ }
+} else {
+ $typeid = isset($typeid) ? intval($typeid) : 0;
+ $url = "file=$file";
+ $condition = "username='$username' AND status=3";
+ if($kw) {
+ $condition .= match_kw('title', $keyword);
+ $url .= "&kw=$kw";
+ $head_title = $kw.$DT['seo_delimiter'].$head_title;
+ }
+ if($typeid) {
+ $condition .= " AND typeid='$typeid'";
+ $url .= "&typeid=$typeid";
+ $head_title = $TYPE[$typeid]['typename'].$DT['seo_delimiter'].$head_title;
+ }
+ $demo_url = userurl($username, $url.'&page={destoon_page}', $domain);
+
+ $pagesize = intval($menu_num[$menuid]);
+ if(!$pagesize || $pagesize > 100) $pagesize = 30;
+
+ $offset = ($page-1)*$pagesize;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = $DT_PC ? home_pages($items, $page, $pagesize, $demo_url) : mobile_pages($items, $page, $pagesize, $demo_url);
+ $lists = array();
+ if($items) {
+ $result = $db->query("SELECT * FROM {$table} WHERE {$condition} ORDER BY addtime DESC LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ while($r = $db->fetch_array($result)) {
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['date'] = timetodate($r['addtime'], 3);
+ $r['linkurl'] = userurl($username, "file=$file&itemid=$r[itemid]", $domain);
+ if($kw) $r['title'] = str_replace($kw, ''.$kw.' ', $r['title']);
+ $lists[] = $r;
+ }
+ $db->free_result($result);
+ }
+ if($DT_PC) {
+ //
+ } else {
+ $tags = $lists;
+ if($typeid) $head_name = $TYPE[$typeid]['typename'];
+ $foot = 'news';
+ }
+}
+include template('news', $template);
+?>
\ No newline at end of file
diff --git a/module/company/photo.inc.php b/module/company/photo.inc.php
new file mode 100644
index 0000000..a532c9a
--- /dev/null
+++ b/module/company/photo.inc.php
@@ -0,0 +1,143 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3 || $item['username'] != $username || $item['items'] < 1) dheader($MENU[$menuid]['linkurl']);
+ unset($item['template']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $CAT = get_cat($catid);
+ $CP = $MOD['cat_property'] && $CAT['property'];
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+ }
+ $adddate = timetodate($addtime, 3);
+ $editdate = timetodate($edittime, 3);
+ $linkurl = userurl($username, "file=$file&itemid=$itemid", $domain);
+ if($open < 3) {
+ $_key = $open == 2 ? $password : $answer;
+ $str = get_cookie('photo_'.$itemid);
+ $pass = $str == md5(md5($DT_IP.$open.$_key.DT_KEY));
+ if($_username && $_username == $username) $pass = true;
+ } else {
+ $pass = true;
+ }
+ if($pass) {
+ require DT_ROOT.'/module/'.$module.'/global.func.php';
+ $view = isset($view) ? 1 : 0;
+ if($view) {
+ $pagesize = 30;
+ $offset = ($page-1)*$pagesize;
+ $demo_url = userurl($username, 'file='.$file.'&itemid='.$itemid.'&view=1&page={destoon_page}', $domain).'#p';
+ $pages = $DT_PC ? home_pages($items, $page, $pagesize, $demo_url) : mobile_pages($items, $page, $pagesize, $demo_url);
+ $T = array();
+ $i = 1;
+ $result = $db->query("SELECT itemid,thumb,introduce FROM {$table_item} WHERE item=$itemid ORDER BY listorder ASC,itemid ASC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['number'] = $offset + $i++;
+ $r['linkurl'] = userurl($username, 'file='.$file.'&itemid='.$itemid.'&page='.$r['number'], $domain).'#p';
+ $r['thumb'] = str_replace('.thumb.', '.middle.', $r['thumb']);
+ $r['title'] = $r['introduce'] ? dsubstr($r['introduce'], 46, '..') : ' ';
+ $T[] = $r;
+ }
+ } else {
+ if($page > $items) $page = 1;
+ $T = array();
+ $result = $db->query("SELECT itemid,thumb,introduce FROM {$table_item} WHERE item=$itemid ORDER BY listorder ASC,itemid ASC");
+ while($r = $db->fetch_array($result)) {
+ $r['middle'] = str_replace('.thumb.', '.middle.', $r['thumb']);
+ $r['big'] = str_replace('.thumb.'.file_ext($r['thumb']), '', $r['thumb']);
+ $T[] = $r;
+ }
+ $demo_url = userurl($username, "file=$file&itemid=$itemid&page=".'{destoon_page}', $domain);
+ $next_photo = $items > 1 ? next_photo($page, $items, $demo_url) : $linkurl;
+ $prev_photo = $items > 1 ? prev_photo($page, $items, $demo_url) : $linkurl;
+ if($T) {
+ $S = side_photo($T, $page, $demo_url);
+ } else {
+ $S = array();
+ $T[0]['thumb'] = DT_SKIN.'image/spacer.gif';
+ $T[0]['introduce'] = $L['no_picture'];
+ }
+ $P = $T[$page-1];
+ $P['src'] = $P['big'];
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ $content = DC::format($content, $DT_PC);
+ }
+ } else {
+ $error = '';
+ if($submit) {
+ if(isset($key) && $key == $_key) {
+ $pass = true;
+ set_cookie('photo_'.$itemid, md5(md5($DT_IP.$open.$_key.DT_KEY)), $DT_TIME + 86400);
+ dheader($linkurl);
+ } else {
+ $error = $open == 2 ? $L['error_password'] : $L['error_answer'];
+ }
+ }
+ }
+ $update = '';
+ if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+ $head_canonical = $MOD['linkurl'].($page == 1 ? $item['linkurl'] : itemurl($item, $page));
+ $head_title = $title.$DT['seo_delimiter'].$head_title;
+ $head_keywords = $keyword;
+ $head_description = $introduce ? $introduce : $title;
+ if($DT_PC) {
+ //
+ } else {
+ $js_item = $js_album = 1;
+ }
+} else {
+ $url = "file=$file";
+ $condition = "username='$username' AND status=3 AND items>0";
+ if($kw) {
+ $condition .= match_kw('keyword', $keyword);
+ $url .= "&kw=$kw";
+ $head_title = $kw.$DT['seo_delimiter'].$head_title;
+ }
+ if($elite) $condition .= " AND level>0";
+ $demo_url = $action == 'search' ? '' : userurl($username, $url.'&page={destoon_page}', $domain);
+ $pagesize = intval($menu_num[$menuid]);
+ if(!$pagesize || $pagesize > 100) $pagesize = 16;
+ $offset = ($page-1)*$pagesize;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = $DT_PC ? home_pages($items, $page, $pagesize, $demo_url) : mobile_pages($items, $page, $pagesize, $demo_url);
+ $lists = array();
+ if($items) {
+ $order = 'itemid DESC';
+ if($orderby) $order = substr($orderby, 0, 1) == 'd' ? substr($orderby, 1).' DESC' : substr($orderby, 1).' ASC';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY {$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ while($r = $db->fetch_array($result)) {
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $homeurl ? ($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).$r['linkurl'] : userurl($username, "file=$file&itemid=$r[itemid]", $domain);
+ if($kw) {
+ $r['title'] = str_replace($kw, ''.$kw.' ', $r['title']);
+ $r['introduce'] = str_replace($kw, ''.$kw.' ', $r['introduce']);
+ }
+ $lists[] = $r;
+ }
+ $db->free_result($result);
+ }
+ if($DT_PC) {
+ //
+ } else {
+ $tags = $lists;
+ }
+}
+include template('photo', $template);
+?>
\ No newline at end of file
diff --git a/module/company/sell.inc.php b/module/company/sell.inc.php
new file mode 100644
index 0000000..c5ececa
--- /dev/null
+++ b/module/company/sell.inc.php
@@ -0,0 +1,121 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3 || $item['username'] != $username) dheader($MENU[$menuid]['linkurl']);
+ unset($item['template']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $CAT = get_cat($catid);
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ $content = DC::format($content, $DT_PC);
+ $CP = $MOD['cat_property'] && $CAT['property'];
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+ }
+ $adddate = timetodate($addtime, 5);
+ $editdate = timetodate($edittime, 5);
+ $todate = $totime ? timetodate($totime, 3) : 0;
+ $expired = $totime && $totime < $DT_TIME ? true : false;
+ define('SELL_ORDER', $MOD['checkorder'] == 2 ? 0 : 1);
+ $could_purchase = (SELL_ORDER && $price > 0 && $minamount > 0 && $amount > 0 && $unit && $username && $username != $_username && !$expired) ? 1 : 0;
+ $could_inquiry = ($username && $username != $_username && !$expired && !$domain) ? 1 : 0;
+ $linkurl = $MOD['linkurl'].$linkurl;
+ $albums = get_albums($item);
+ $pics = count($albums);
+ $pics_width = $pics*70;
+ $album_js = 1;
+ $amount = number_format($amount, 0, '.', '');
+ $typeid = $mycatid;
+ $inquiry_url = $MODULE[4]['linkurl'].'home.php?action=message&job=inquiry&&itemid='.$itemid.'&template='.$template.'&skin='.$skin.'&title='.rawurlencode($title).'&username='.$username.'&sign='.crypt_sign($itemid.$template.$skin.$title.$username);
+ $order_url = $MODULE[4]['linkurl'].'home.php?action=message&job=order&&itemid='.$itemid.'&template='.$template.'&skin='.$skin.'&title='.rawurlencode($title).'&username='.$username.'&sign='.crypt_sign($itemid.$template.$skin.$title.$username);
+ $update = '';
+ if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+ $head_canonical = $linkurl;
+ $head_title = $title.$DT['seo_delimiter'].$head_title;
+ $head_keywords = $keyword;
+ $head_description = $introduce ? $introduce : $title;
+ if($DT_PC) {
+ //
+ } else {
+ $member = array();
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ include DT_ROOT.'/mobile/api/contact.inc.php';
+ $js_item = $js_album = 1;
+ }
+} else {
+ $typeid = isset($typeid) ? intval($typeid) : 0;
+ $view = isset($view) ? 1 : 0;
+ $url = "file=$file";
+ $condition = "username='$username' AND status=3";
+ if($typeid) {
+ if($TYPE[$typeid]['parentid']) {
+ $condition .= " AND mycatid='$typeid'";
+ } else {
+ $cids = $typeid.',';
+ foreach($TYPE as $k=>$v) {
+ if($v['parentid'] == $typeid) $cids .= $k.',';
+ }
+ $cids = substr($cids, 0, -1);
+ $condition .= " AND mycatid IN ($cids)";
+ }
+ $url .= "&typeid=$typeid";
+ $head_title = $TYPE[$typeid]['typename'].$DT['seo_delimiter'].$head_title;
+ }
+ if($kw) {
+ $condition .= match_kw('keyword', $keyword);
+ $url .= "&kw=$kw";
+ $head_title = $kw.$DT['seo_delimiter'].$head_title;
+ }
+ if($view) {
+ $url .= "&view=$view";
+ }
+ if($elite) $condition .= " AND elite>0";
+ $demo_url = $action == 'search' ? '' : userurl($username, $url.'&page={destoon_page}', $domain);
+ $pagesize = intval($menu_num[$menuid]);
+ if(!$pagesize || $pagesize > 100) $pagesize = 16;
+ if($view) $pagesize = ceil($pagesize/2);
+ $offset = ($page-1)*$pagesize;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = $DT_PC ? home_pages($items, $page, $pagesize, $demo_url) : mobile_pages($items, $page, $pagesize, $demo_url);
+ $lists = array();
+ if($items) {
+ $order = 'edittime DESC';
+ if($orderby) $order = substr($orderby, 0, 1) == 'd' ? substr($orderby, 1).' DESC' : substr($orderby, 1).' ASC';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY {$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ while($r = $db->fetch_array($result)) {
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $homeurl ? ($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).$r['linkurl'] : userurl($username, "file=$file&itemid=$r[itemid]", $domain);
+ $r['date'] = timetodate($r['edittime'], 3);
+ if($kw) {
+ $r['title'] = str_replace($kw, ''.$kw.' ', $r['title']);
+ $r['introduce'] = str_replace($kw, ''.$kw.' ', $r['introduce']);
+ }
+ $lists[] = $r;
+ }
+ $db->free_result($result);
+ }
+ if($DT_PC) {
+ //
+ } else {
+ $tags = $lists;
+ if($typeid) $head_name = $TYPE[$typeid]['typename'];
+ }
+}
+include template('sell', $template);
+?>
\ No newline at end of file
diff --git a/module/company/task.inc.php b/module/company/task.inc.php
new file mode 100644
index 0000000..5c86400
--- /dev/null
+++ b/module/company/task.inc.php
@@ -0,0 +1,26 @@
+= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $page + 1;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $totalpage + 1 - $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ }
+} else if($html == 'index') {
+ if($DT['cache_hits'] && $MOD['hits']) {
+ $file = DT_CACHE.'/hits-'.$moduleid;
+ if($DT_TIME - @filemtime($file.'.dat') > $DT['cache_hits'] || @filesize($file.'.php') > 102400) update_hits($moduleid, $table);
+ }
+ if($MOD['index_html']) {
+ $file = DT_CACHE.'/htm/company.htm';
+ if($DT_TIME - @filemtime($file) > $task_index) tohtml('index', $module);
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/company/tour.inc.php b/module/company/tour.inc.php
new file mode 100644
index 0000000..c9686be
--- /dev/null
+++ b/module/company/tour.inc.php
@@ -0,0 +1,7 @@
+get_one("SELECT linkurl FROM {$table} WHERE vip>0 ORDER BY rand()");
+$url = $r ? $r['linkurl'] : $MOD['linkurl'];
+dheader($url);
+?>
\ No newline at end of file
diff --git a/module/company/video.inc.php b/module/company/video.inc.php
new file mode 100644
index 0000000..45d8cff
--- /dev/null
+++ b/module/company/video.inc.php
@@ -0,0 +1,84 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3 || $item['username'] != $username) dheader($MENU[$menuid]['linkurl']);
+ unset($item['template']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $CAT = get_cat($catid);
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ $content = DC::format($content, $DT_PC);
+ $CP = $MOD['cat_property'] && $CAT['property'];
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+ }
+ $adddate = timetodate($addtime, 3);
+ $editdate = timetodate($edittime, 3);
+ $linkurl = $MOD['linkurl'].$linkurl;
+ $keytags = $tag ? explode(' ', $tag) : array();
+ $player = DC::player($video, $width, $height, $MOD['autostart']);
+ $update = '';
+ if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+ $head_canonical = $linkurl;
+ $head_title = $title.$DT['seo_delimiter'].$head_title;
+ $head_keywords = $keyword;
+ $head_description = $introduce ? $introduce : $title;
+ if($DT_PC) {
+ //
+ } else {
+ $player = DC::player($video, '100%', '100%', $MOD['autostart'], 0, ' playsinline -webkit-playsinline webkit-playsinline');
+ $js_item = 1;
+ }
+} else {
+ $url = "file=$file";
+ $condition = "username='$username' AND status=3";
+ if($kw) {
+ $condition .= match_kw('keyword', $keyword);
+ $url .= "&kw=$kw";
+ $head_title = $kw.$DT['seo_delimiter'].$head_title;
+ }
+ if($elite) $condition .= " AND level>0";
+ $demo_url = $action == 'search' ? '' : userurl($username, $url.'&page={destoon_page}', $domain);
+ $pagesize = intval($menu_num[$menuid]);
+ if(!$pagesize || $pagesize > 100) $pagesize = 16;
+ $offset = ($page-1)*$pagesize;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = $DT_PC ? home_pages($items, $page, $pagesize, $demo_url) : mobile_pages($items, $page, $pagesize, $demo_url);
+ $lists = array();
+ if($items) {
+ $order = 'itemid DESC';
+ if($orderby) $order = substr($orderby, 0, 1) == 'd' ? substr($orderby, 1).' DESC' : substr($orderby, 1).' ASC';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY {$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ while($r = $db->fetch_array($result)) {
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $homeurl ? ($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).$r['linkurl'] : userurl($username, "file=$file&itemid=$r[itemid]", $domain);
+ if($kw) {
+ $r['title'] = str_replace($kw, ''.$kw.' ', $r['title']);
+ $r['introduce'] = str_replace($kw, ''.$kw.' ', $r['introduce']);
+ }
+ $lists[] = $r;
+ }
+ $db->free_result($result);
+ }
+ if($DT_PC) {
+ //
+ } else {
+ $tags = $lists;
+ }
+}
+include template('video', $template);
+?>
\ No newline at end of file
diff --git a/module/down/admin/html.inc.php b/module/down/admin/html.inc.php
new file mode 100644
index 0000000..e60e6ea
--- /dev/null
+++ b/module/down/admin/html.inc.php
@@ -0,0 +1,119 @@
+get_one("SELECT * FROM {$DT_PRE}category WHERE moduleid=$moduleid AND catid>$catids ORDER BY catid");
+ if($CAT) {
+ $bcatid = $catid = $CAT['catid'];
+ $total = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $num = 50;
+ $bfid = $fid;
+ isset($fpage) or $fpage = 1;
+ if($fpage <= $total) {
+ $fid = $fpage;
+ tohtml('list', $module);
+ $fid = $bfid;
+ msg($MOD['name'].' ['.$CAT['catname'].'] 第'.$fpage.'页至第'.($fpage+$num-1).'页生成成功'.progress(0, $fid, $tid), '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids='.$catids.'&fid='.$fid.'&tid='.$tid.'&all='.$all.'&one='.$one.'&fpage='.($fpage+$num), 0);
+ }
+ $fid++;
+ msg($MOD['name'].' ['.$CAT['catname'].'] 生成成功'.progress(0, $fid, $tid), '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids='.$catid.'&fid='.$fid.'&tid='.$tid.'&all='.$all.'&one='.$one);
+ } else {
+ $all ? msg($MOD['name'].'列表生成成功', '?moduleid='.$moduleid.'&file='.$file.'&action=show&all='.$all.'&one='.$one) : msg($MOD['name'].'列表生成成功', $this_forward);
+ }
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}category WHERE moduleid=$moduleid");
+ $tid = $r['num'];
+ msg('', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids=0&fid=1&&tid='.$tid.'&all='.$all.'&one='.$one);
+ }
+ break;
+ case 'show':
+ $update = (isset($update) && $update) ? 1 : 0;
+ if(!$update && !$MOD['show_html']) {
+ if($one) dheader( '?file=html&action=back&mid='.$moduleid);
+ $all ? msg($MOD['name'].'生成成功', $this_forward) : dmsg($MOD['name'].'生成成功', $this_forward);
+ }
+ $catid = isset($catid) ? intval($catid) : '';
+ $sql = $catid ? " AND catid=$catid" : '';
+ if(!isset($fid)) {
+ $r = $db->get_one("SELECT min(itemid) AS fid FROM {$table} WHERE status>2 {$sql}");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ }
+ isset($sid) or $sid = $fid;
+ if(!isset($tid)) {
+ $r = $db->get_one("SELECT max(itemid) AS tid FROM {$table} WHERE status>2 {$sql}");
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ }
+ if($update) {
+ require DT_ROOT.'/module/'.$module.'/'.$module.'.class.php';
+ $do = new $module($moduleid);
+ }
+ isset($num) or $num = 100;
+ if($fid <= $tid) {
+ $result = $db->query("SELECT itemid FROM {$table} WHERE status>2 AND itemid>=$fid {$sql} ORDER BY itemid LIMIT 0,$num");
+ if($db->affected_rows($result)) {
+ while($r = $db->fetch_array($result)) {
+ $itemid = $r['itemid'];
+ $update ? $do->update($itemid) : tohtml('show', $module);
+ }
+ $itemid += 1;
+ } else {
+ $itemid = $fid + $num;
+ }
+ } else {
+ if($update) {
+ $all ? msg('', '?moduleid='.$moduleid.'&file='.$file.'&action=index&all=1&one='.$one) : dmsg('更新成功', $this_forward);
+ } else {
+ if($one) dheader( '?file=html&action=back&mid='.$moduleid);
+ $all ? msg($MOD['name'].'生成成功', $this_forward) : dmsg($MOD['name'].'生成成功', $this_forward);
+ }
+ }
+ msg('ID从'.$fid.'至'.($itemid-1).$MOD['name'].($update ? '更新' : '生成').'成功'.progress($sid, $fid, $tid), "?moduleid=$moduleid&file=$file&action=$action&sid=$sid&fid=$itemid&tid=$tid&num=$num&update=$update&all=$all&one=$one", 0);
+ break;
+ case 'cate':
+ $catid or msg('请选择分类');
+ isset($num) or $num = 50;
+ isset($fid) or $fid = 1;
+ $total = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ if($fpage && $tpage) {
+ $fid = $fpage;
+ $num = $tpage - $fpage + 1;
+ tohtml('list', $module);
+ dmsg('生成成功', $this_forward);
+ }
+ if($fid <= $total) {
+ tohtml('list', $module);
+ msg('第'.$fid.'页至第'.($fid+$num-1).'页生成成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catid='.$catid.'&fid='.($fid+$num).'&num='.$num.'&fpage='.$fpage.'&tpage='.$tpage, 0);
+ } else {
+ dmsg('生成成功', $this_forward);
+ }
+ break;
+ case 'item':
+ $catid or msg('请选择分类');
+ msg('', '?moduleid='.$moduleid.'&file='.$file.'&action=show&catid='.$catid.'&num='.$num);
+ break;
+ default:
+ $r = $db->get_one("SELECT min(itemid) AS fid,max(itemid) AS tid FROM {$table} WHERE status=3");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ include tpl('html', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/down/admin/index.html b/module/down/admin/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/down/admin/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/down/admin/index.inc.php b/module/down/admin/index.inc.php
new file mode 100644
index 0000000..dd36d3f
--- /dev/null
+++ b/module/down/admin/index.inc.php
@@ -0,0 +1,207 @@
+ 9 ? " AND level>0" : " AND level=$level";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+ if($thumb) $condition .= " AND thumb<>''";
+ if($guest) $condition .= " AND username=''";
+ if($fileext) $condition .= " AND fileext='$fileext'";
+ if($ip) $condition .= " AND ip='$ip'";
+ if($username) $condition .= " AND username='$username'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+
+ $timetype = strpos($dorder[$order], 'add') !== false ? 'add' : '';
+}
+switch($action) {
+ case 'add':
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ $do->add($post);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ if($MOD['show_html'] && $post['status'] > 2) $do->tohtml($do->itemid);
+ dmsg('添加成功', '?moduleid='.$moduleid.'&action='.$action.'&catid='.$post['catid']);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $content = '';
+ $status = 3;
+ $addtime = timetodate($DT_TIME);
+ $totime = '';
+ $username = $_username;
+ $item = array();
+ $menuid = 0;
+ isset($url) or $url = '';
+ if($url) {
+ $tmp = fetch_url($url);
+ if($tmp) extract($tmp);
+ }
+ $history = 0;
+ include tpl('edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ $item = $do->get_one();
+ extract($item);
+ $history = history($moduleid, $itemid);
+ $addtime = timetodate($addtime);
+ $menuon = array('4', '3', '2', '1');
+ $menuid = $menuon[$status];
+ include tpl($action, $module);
+ }
+ break;
+ case 'move':
+ if($submit) {
+ $fromids or msg('请填写来源ID');
+ if($tocatid) {
+ $db->query("UPDATE {$table} SET catid=$tocatid WHERE `{$fromtype}` IN ($fromids)");
+ dmsg('移动成功', $forward);
+ } else {
+ msg('请选择目标分类');
+ }
+ } else {
+ $itemid = $itemid ? implode(',', $itemid) : '';
+ $menuid = 5;
+ include tpl($action);
+ }
+ break;
+ case 'update':
+ is_array($itemid) or msg('请选择'.$MOD['name']);
+ foreach($itemid as $v) {
+ $do->update($v);
+ }
+ dmsg('更新成功', $forward);
+ break;
+ case 'tohtml':
+ is_array($itemid) or msg('请选择'.$MOD['name']);
+ foreach($itemid as $itemid) {
+ tohtml('show', $module);
+ }
+ dmsg('生成成功', $forward);
+ break;
+ case 'delete':
+ $itemid or msg('请选择'.$MOD['name']);
+ isset($recycle) ? $do->recycle($itemid) : $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'restore':
+ $itemid or msg('请选择'.$MOD['name']);
+ $do->restore($itemid);
+ dmsg('还原成功', $forward);
+ break;
+ case 'clear':
+ $do->clear();
+ dmsg('清空成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择'.$MOD['name']);
+ $level = intval($level);
+ $do->level($itemid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ case 'recycle':
+ $lists = $do->get_list('status=0'.$condition, $dorder[$order]);
+ $menuid = 4;
+ include tpl('index', $module);
+ break;
+ case 'reject':
+ if($itemid && !$psize) {
+ $do->reject($itemid);
+ dmsg('拒绝成功', $forward);
+ } else {
+ $lists = $do->get_list('status=1'.$condition, $dorder[$order]);
+ $menuid = 3;
+ include tpl('index', $module);
+ }
+ break;
+ case 'check':
+ if($itemid && !$psize) {
+ $do->check($itemid);
+ dmsg('审核成功', $forward);
+ } else {
+ $lists = $do->get_list('status=2'.$condition, $dorder[$order]);
+ $menuid = 2;
+ include tpl('index', $module);
+ }
+ break;
+ default:
+ $lists = $do->get_list('status=3'.$condition, $dorder[$order]);
+ $menuid = 1;
+ include tpl('index', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/down/admin/install.inc.php b/module/down/admin/install.inc.php
new file mode 100644
index 0000000..4c349c4
--- /dev/null
+++ b/module/down/admin/install.inc.php
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/module/down/admin/menu.inc.php b/module/down/admin/menu.inc.php
new file mode 100644
index 0000000..c50d2ab
--- /dev/null
+++ b/module/down/admin/menu.inc.php
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/module/down/admin/template/edit.tpl.php b/module/down/admin/template/edit.tpl.php
new file mode 100644
index 0000000..7fdf7bd
--- /dev/null
+++ b/module/down/admin/template/edit.tpl.php
@@ -0,0 +1,230 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+单页采编
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/down/admin/template/html.tpl.php b/module/down/admin/template/html.tpl.php
new file mode 100644
index 0000000..339891c
--- /dev/null
+++ b/module/down/admin/template/html.tpl.php
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/down/admin/template/index.html b/module/down/admin/template/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/down/admin/template/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/down/admin/template/setting.tpl.php b/module/down/admin/template/setting.tpl.php
new file mode 100644
index 0000000..0d88729
--- /dev/null
+++ b/module/down/admin/template/setting.tpl.php
@@ -0,0 +1,473 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/down/admin/uninstall.inc.php b/module/down/admin/uninstall.inc.php
new file mode 100644
index 0000000..7c6acf7
--- /dev/null
+++ b/module/down/admin/uninstall.inc.php
@@ -0,0 +1,5 @@
+query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_data_".$moduleid."`");
+?>
\ No newline at end of file
diff --git a/module/down/down.class.php b/module/down/down.class.php
new file mode 100644
index 0000000..04c1abc
--- /dev/null
+++ b/module/down/down.class.php
@@ -0,0 +1,280 @@
+moduleid = $moduleid;
+ $this->table = $table;
+ $this->table_data = $table_data;
+ $this->split = $MOD['split'];
+ $this->fields = array('catid','areaid','level','title','style','fee','introduce','tag','album','thumb','fileurl','fileext','filesize','unit','status','hits','download','username','addtime','editor','edittime','ip','template', 'linkurl','filepath','note');
+ }
+
+ function down($moduleid) {
+ $this->__construct($moduleid);
+ }
+
+ function pass($post) {
+ global $MOD;
+ if(!is_array($post)) return false;
+ if(!$post['catid']) return $this->_(lang('message->pass_catid'));
+ if(strlen($post['title']) < 3) return $this->_(lang('message->pass_title'));
+ if(!$post['fileurl']) return $this->_(lang('message->pass_down_fileurl'));
+ $ext = file_ext($post['fileurl']);
+ if(in_array($ext, array('php', 'sql')) || strpos($post['fileurl'], '..') !== false) return $this->_(lang('message->pass_down_badurl'));
+ if(!$post['filesize']) return $this->_(lang('message->pass_down_filesize'));
+ if(DT_MAX_LEN && strlen(clear_img($post['content'])) > DT_MAX_LEN) $this->_(lang('message->pass_max'));
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $_username, $_userid, $_cname;
+ is_url($post['thumb']) or $post['thumb'] = '';
+ $post['filepath'] = (isset($post['filepath']) && is_filepath($post['filepath'])) ? file_vname($post['filepath']) : '';
+ $post['editor'] = $_username;
+ $post['addtime'] = (isset($post['addtime']) && is_time($post['addtime'])) ? datetotime($post['addtime']) : DT_TIME;
+ $post['editor'] = $_cname ? $_cname : $_username;
+ $post['edittime'] = DT_TIME;
+ is_url($post['thumb']) or $post['thumb'] = '';
+ $post['fee'] = dround($post['fee']);
+ $post['down'] = fix_link($post['down']);
+ $post['down_width'] = intval($post['down_width']);
+ $post['down_height'] = intval($post['down_height']);
+ $post['content'] = stripslashes($post['content']);
+ $post['content'] = save_local($post['content']);
+ if($MOD['clear_link']) $post['content'] = clear_link($post['content']);
+ if($MOD['save_remotepic']) $post['content'] = save_remote($post['content']);
+ if($MOD['introduce_length']) $post['introduce'] = addslashes(get_intro($post['content'], $MOD['introduce_length']));
+ if($this->itemid) {
+ $new = $post['content'];
+ if($post['thumb']) $new .= ' ';
+ $r = $this->get_one();
+ $old = $r['content'];
+ if($r['thumb']) $old .= ' ';
+ delete_diff($new, $old);
+ if($r['fileurl'] != $post['fileurl']) delete_upload($r['fileurl'], match_userid($r['fileurl']));
+ } else {
+ $post['ip'] = DT_IP;
+ }
+ $content = $post['content'];
+ unset($post['content']);
+ $post = dhtmlspecialchars($post);
+ $post['content'] = addslashes(dsafe($content));
+ return array_map("trim", $post);
+ }
+
+ function get_one() {
+ $r = DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$this->itemid");
+ if($r) {
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ $t = DB::get_one("SELECT content FROM {$content_table} WHERE itemid=$this->itemid");
+ $r['content'] = $t ? $t['content'] : '';
+ return $r;
+ } else {
+ return array();
+ }
+ }
+
+ function get_list($condition = 'status=3', $order = 'edittime DESC', $cache = '') {
+ global $MOD, $pages, $page, $pagesize, $offset, $items, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition", $cache);
+ $items = $r['num'];
+ }
+ $pages = defined('CATID') ? listpages(1, CATID, $items, $page, $pagesize, 10, $MOD['linkurl']) : pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = $catids = $CATS = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize", $cache);
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $catids[$r['catid']] = $r['catid'];
+ $lists[] = $r;
+ }
+ if($catids) {
+ $result = DB::query("SELECT catid,catname,linkurl FROM ".DT_PRE."category WHERE catid IN (".implode(',', $catids).")");
+ while($r = DB::fetch_array($result)) {
+ $CATS[$r['catid']] = $r;
+ }
+ if($CATS) {
+ foreach($lists as $k=>$v) {
+ $lists[$k]['catname'] = $v['catid'] ? $CATS[$v['catid']]['catname'] : '';
+ $lists[$k]['caturl'] = $v['catid'] ? $MOD['linkurl'].$CATS[$v['catid']]['linkurl'] : '';
+ }
+ }
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $MOD;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ DB::query("REPLACE INTO {$content_table} (itemid,content) VALUES ('$this->itemid', '$post[content]')");
+ $this->update($this->itemid);
+ if($post['status'] == 3 && $post['username'] && $MOD['credit_add']) {
+ credit_add($post['username'], $MOD['credit_add']);
+ credit_record($post['username'], $MOD['credit_add'], 'system', lang('my->credit_record_add', array($MOD['name'])), 'ID:'.$this->itemid);
+ }
+ clear_upload($post['content'].$post['thumb'].$post['fileurl'], $this->itemid);
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $this->delete($this->itemid, false);
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ DB::query("REPLACE INTO {$content_table} (itemid,content) VALUES ('$this->itemid', '$post[content]')");
+ $this->update($this->itemid);
+ clear_upload($post['content'].$post['thumb'].$post['fileurl'], $this->itemid);
+ if($post['status'] > 2) {
+ history($this->moduleid, $this->itemid, 'del');
+ $this->tohtml($this->itemid, $post['catid']);
+ }
+ return true;
+ }
+
+ function tohtml($itemid = 0, $catid = 0) {
+ global $module, $MOD;
+ if($MOD['show_html'] && $itemid) tohtml('show', $module, "itemid=$itemid");
+ }
+
+ function update($itemid) {
+ $item = DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$itemid");
+ $update = '';
+ $keyword = $item['title'].','.($item['album'] ? $item['album'].',' : '').($item['tag'] ? str_replace(' ', ',', trim($item['tag'])).',' : '').strip_tags(cat_pos(get_cat($item['catid']), ','));
+ if($keyword != $item['keyword']) {
+ $keyword = str_replace("//", '', addslashes($keyword));
+ $update .= ",keyword='$keyword'";
+ }
+ $item['itemid'] = $itemid;
+ $linkurl = itemurl($item);
+ if($linkurl != $item['linkurl']) $update .= ",linkurl='$linkurl'";
+ if($update) DB::query("UPDATE {$this->table} SET ".(substr($update, 1))." WHERE itemid=$itemid");
+ }
+
+ function recycle($itemid) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->recycle($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=0 WHERE itemid=$itemid");
+ $this->delete($itemid, false);
+ return true;
+ }
+ }
+
+ function restore($itemid) {
+ global $module, $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->restore($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=3 WHERE itemid=$itemid");
+ if($MOD['show_html']) tohtml('show', $module, "itemid=$itemid");
+ return true;
+ }
+ }
+
+ function delete($itemid, $all = true) {
+ global $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->delete($v, $all);
+ }
+ } else {
+ $this->itemid = $itemid;
+ $r = $this->get_one();
+ if($MOD['show_html']) {
+ $_file = DT_ROOT.'/'.$MOD['moduledir'].'/'.$r['linkurl'];
+ html_del($_file);
+ }
+ if($all) {
+ $userid = get_user($r['username']);
+ if($r['thumb']) delete_upload($r['thumb'], $userid);
+ if($r['fileurl']) delete_upload($r['fileurl'], $userid);
+ if($r['content']) delete_local($r['content'], $userid);
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ DB::query("DELETE FROM {$content_table} WHERE itemid=$itemid");
+ if($MOD['cat_property']) DB::query("DELETE FROM ".DT_PRE."category_value WHERE moduleid=$this->moduleid AND itemid=$itemid");
+ if($r['username'] && $MOD['credit_del']) {
+ credit_add($r['username'], -$MOD['credit_del']);
+ credit_record($r['username'], -$MOD['credit_del'], 'system', lang('my->credit_record_del', array($MOD['name'])), 'ID:'.$this->itemid);
+ }
+ history($this->moduleid, $itemid, 'del');
+ }
+ }
+ }
+
+ function check($itemid) {
+ global $_username, $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->check($v); }
+ } else {
+ $this->itemid = $itemid;
+ $item = $this->get_one();
+ if($MOD['credit_add'] && $item['username'] && $item['hits'] < 1) {
+ credit_add($item['username'], $MOD['credit_add']);
+ credit_record($item['username'], $MOD['credit_add'], 'system', lang('my->credit_record_add', array($MOD['name'])), 'ID:'.$this->itemid);
+ }
+ DB::query("UPDATE {$this->table} SET status=3,editor='$_username',edittime=".DT_TIME." WHERE itemid=$itemid");
+ history($this->moduleid, $itemid, 'del');
+ $this->tohtml($itemid);
+ return true;
+ }
+ }
+
+ function reject($itemid) {
+ global $_username;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->reject($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=1,editor='$_username' WHERE itemid=$itemid");
+ return true;
+ }
+ }
+
+ function clear($condition = 'status=0') {
+ $result = DB::query("SELECT itemid FROM {$this->table} WHERE $condition");
+ while($r = DB::fetch_array($result)) {
+ $this->delete($r['itemid']);
+ }
+ }
+
+ function level($itemid, $level) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET level=$level WHERE itemid IN ($itemids)");
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/down/down.inc.php b/module/down/down.inc.php
new file mode 100644
index 0000000..79b9e7e
--- /dev/null
+++ b/module/down/down.inc.php
@@ -0,0 +1,72 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+($item && $item['status'] > 2) or dheader($MOD['linkurl']);
+require DT_ROOT.'/include/content.class.php';
+extract($item);
+$CAT = get_cat($catid);
+$linkurl = $MOD['linkurl'].$linkurl;
+if(!check_group($_groupid, $MOD['group_show']) || !check_group($_groupid, $MOD['group_contact']) || !check_group($_groupid, $CAT['group_show'])) {
+ dheader($linkurl );
+}
+$fee = DC::fee($item['fee'], $MOD['fee_view']);
+if($MG['fee_mode'] && $MOD['fee_mode']) $fee = 0;
+if($item['username'] == $_username) $fee = 0;
+if($fee) {
+ if($_userid) {
+ check_pay($moduleid, $itemid) or dheader($linkurl);
+ } else {
+ dheader($linkurl);
+ }
+}
+$db->query("UPDATE {$table} SET download=download+1 WHERE itemid=$itemid");
+$fileurl = trim($fileurl);
+$localfile = str_replace(DT_PATH, '', $fileurl);
+if(strpos($localfile, '://') !== false) {
+ $local = false;
+} else {
+ $localfile = DT_ROOT.'/'.$localfile;
+ if($DT['pcharset']) $localfile = convert($localfile, DT_CHARSET, $DT['pcharset']);
+ if(is_file($localfile)) {
+ $local = true;
+ $fileurl = linkurl($fileurl);
+ } else {
+ dheader($fileurl);
+ //dalert($L['not_file'], $linkurl);
+ }
+}
+if(isset($mirror)) {
+ include DT_ROOT.'/file/config/mirror.inc.php';
+ if(isset($MIRROR[$mirror])) {
+ if($local) {
+ dheader(str_replace(DT_ROOT.'/', $MIRROR[$mirror]['url'], $localfile));
+ } else {
+ if($DT['ftp_remote'] && $DT['remote_url']) $fileurl = str_replace($DT['remote_url'], $MIRROR[$mirror]['url'], $fileurl);
+ dheader($fileurl);
+ }
+ } else {
+ dalert($L['not_mirror'], $linkurl);
+ }
+} else {
+ if($local) {
+ if($MOD['upload'] && filesize($localfile) < $MOD['readsize']*1024*1024) {
+ $ext = file_ext($localfile);
+ if(!in_array($ext, explode('|', $MOD['upload'])) || in_array($ext, array('php', 'sql')) || strpos($localfile, './') !== false) dheader($fileurl);//Safe
+ $title = file_vname($title);
+ $title or dheader($fileurl);
+ if(strpos(DT_UA, 'Firefox') !== false) $title = str_replace(' ', '_', $title);
+ if(strpos(DT_UA, 'MSIE') !== false || strpos(DT_UA, 'rv:1') !== false) $title = convert($title, DT_CHARSET, 'GBK');
+ $title or dheader($fileurl);
+ file_down($localfile, $title.'.'.$ext);
+ } else {
+ dheader($fileurl);
+ }
+ } else {
+ dheader($fileurl);
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/down/index.htm.php b/module/down/index.htm.php
new file mode 100644
index 0000000..7d0f009
--- /dev/null
+++ b/module/down/index.htm.php
@@ -0,0 +1,46 @@
+get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].'index.php?page={destoon_page}');
+ $tags = array();
+ if($items) {
+ $order = $MOD['order'];
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put(str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename), $data);
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/down/index.inc.php b/module/down/index.inc.php
new file mode 100644
index 0000000..b9aea1f
--- /dev/null
+++ b/module/down/index.inc.php
@@ -0,0 +1,40 @@
+ 1 ? 'index.php?page='.$page : '');
+} else {
+ $condition = "status=3";
+ if($cityid) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize);
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+}
+$seo_file = 'index';
+include DT_ROOT.'/include/seo.inc.php';
+include template($MOD['template_index'] ? $MOD['template_index'] : 'index', $module);
+?>
\ No newline at end of file
diff --git a/module/down/list.htm.php b/module/down/list.htm.php
new file mode 100644
index 0000000..bff4910
--- /dev/null
+++ b/module/down/list.htm.php
@@ -0,0 +1,92 @@
+count($table, $condition);
+ if($items != $CAT['item']) {
+ $CAT['item'] = $items;
+ $db->query("UPDATE {$DT_PRE}category SET item=$items WHERE catid=$catid");
+ }
+} else {
+ $items = $CAT['item'];
+}
+$pagesize = $MOD['pagesize'];
+$showpage = 1;
+$datetype = 3;
+$target = '_blank';
+$template = $CAT['template'] ? $CAT['template'] : ($MOD['template_list'] ? $MOD['template_list'] : 'list');
+$total = max(ceil($items/$MOD['pagesize']), 1);
+if(isset($fid) && isset($num)) {
+ $page = $fid;
+ $topage = $fid + $num - 1;
+ $total = $topage < $total ? $topage : $total;
+}
+for(; $page <= $total; $page++) {
+ $offset = ($page-1)*$pagesize;
+ $pages = listpages($CAT, $items, $page, $pagesize);
+ $tags = array();
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}");
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $seo_file = 'list';
+ include DT_ROOT.'/include/seo.inc.php';
+ $destoon_task = "moduleid=$moduleid&html=list&catid=$catid&page=$page";
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].($page > 1 ?listurl($CAT, $page) : $CAT['linkurl']);
+ $filename = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, $page);
+ $_tags = $tags;
+ $DT_PC = $GLOBALS['DT_PC'] = 1;
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ if($DT['pcharset']) $filename = convert($filename, DT_CHARSET, $DT['pcharset']);
+ file_put($filename, $data);
+ if($page == 1) {
+ $indexname = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, 0);
+ if($DT['pcharset']) $indexname = convert($indexname, DT_CHARSET, $DT['pcharset']);
+ file_copy($filename, $indexname);
+ }
+ if($EXT['mobile_enable']) {
+ include DT_ROOT.'/include/mobile.htm.php';
+ $head_pc = str_replace($MOD['mobile'], $MOD['linkurl'], $head_mobile);
+ if($CAT['parentid']) $PCAT = get_cat($CAT['parentid']);
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($CAT, '{destoon_page}'));
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $tags = array();
+ foreach($_tags as $r) {
+ $r['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $r['linkurl']);
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ if($items) $js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid;
+ $head_title = $head_name = $CAT['catname'];
+ $filename = str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename);
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put($filename, $data);
+ if($page == 1) file_copy($filename, str_replace(DT_ROOT, DT_ROOT.'/mobile', $indexname));
+ }
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/down/list.inc.php b/module/down/list.inc.php
new file mode 100644
index 0000000..c5826ac
--- /dev/null
+++ b/module/down/list.inc.php
@@ -0,0 +1,90 @@
+count($table, $condition, $CFG['db_expires']);
+ } else {
+ if($page == 1) {
+ $items = $db->count($table, $condition, $CFG['db_expires']);
+ if($items != $CAT['item']) {
+ $CAT['item'] = $items;
+ $db->query("UPDATE {$DT_PRE}category SET item=$items WHERE catid=$catid");
+ }
+ } else {
+ $items = $CAT['item'];
+ }
+ }
+ $pagesize = $MOD['pagesize'];
+ $offset = ($page-1)*$pagesize;
+ $pages = listpages($CAT, $items, $page, $pagesize);
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ $showpage = 1;
+ $datetype = 3;
+ $target = '_blank';
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].listurl($CAT, $page > 1 ? $page : 0);
+} else {
+ if(!$CAT || $CAT['moduleid'] != $moduleid) message($L['msg_not_cate']);
+ if(!check_group($_groupid, $MOD['group_list']) || !check_group($_groupid, $CAT['group_list'])) message($L['msg_no_right']);
+ $condition = "status=3";
+ $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($cityid) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($CAT, '{destoon_page}'));
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid;
+ }
+ if($CAT['parentid']) $PCAT = get_cat($CAT['parentid']);
+ $head_title = $head_name = $CAT['catname'];
+}
+$seo_file = 'list';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $CAT['template'] ? $CAT['template'] : ($MOD['template_list'] ? $MOD['template_list'] : 'list');
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/down/my.inc.php b/module/down/my.inc.php
new file mode 100644
index 0000000..0f5d39f
--- /dev/null
+++ b/module/down/my.inc.php
@@ -0,0 +1,225 @@
+get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND status>1");
+ $limit_used = $r['num'];
+ $limit_free = $mod_limit > $limit_used ? $mod_limit - $limit_used : 0;
+}
+$MOD['upload'] = implode('|', array_intersect(explode('|', $MOD['upload']), explode('|', $MG['uploadtype'] ? $MG['uploadtype'] : $DT['uploadtype'])));
+switch($action) {
+ case 'add':
+ if($mod_limit && $limit_used >= $mod_limit) dalert(lang($L['info_limit'], array($mod_limit, $limit_used)), $_userid ? '?mid='.$mid : '?action=index');
+ if($MG['hour_limit']) {
+ $today = $DT_TIME - 3600;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND addtime>$today");
+ if($r && $r['num'] >= $MG['hour_limit']) dalert(lang($L['hour_limit'], array($MG['hour_limit'])), $_userid ? '?mid='.$mid : '?action=index');
+ }
+ if($MG['day_limit']) {
+ $today = $DT_TODAY - 86400;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND addtime>$today");
+ if($r && $r['num'] >= $MG['day_limit']) dalert(lang($L['day_limit'], array($MG['day_limit'])), $_userid ? '?mid='.$mid : '?action=index');
+ }
+
+ if($mod_free_limit >= 0) {
+ $fee_add = ($MOD['fee_add'] && (!$MOD['fee_mode'] || !$MG['fee_mode']) && $limit_used >= $mod_free_limit && $_userid) ? dround($MOD['fee_add']) : 0;
+ } else {
+ $fee_add = 0;
+ }
+ $fee_currency = $MOD['fee_currency'];
+ $fee_unit = $fee_currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $need_password = $fee_add && $fee_currency == 'money' && $fee_add > $DT['quick_pay'];
+ $need_captcha = $MOD['captcha_add'] == 2 ? $MG['captcha'] : $MOD['captcha_add'];
+ $need_question = $MOD['question_add'] == 2 ? $MG['question'] : $MOD['question_add'];
+ $could_color = check_group($_groupid, $MOD['group_color']) && $MOD['credit_color'] && $_userid;
+
+ if($submit) {
+ if($fee_add && $fee_add > ($fee_currency == 'money' ? $_money : $_credit)) dalert($L['balance_lack']);
+ if($need_password && !is_payword($_username, $password)) dalert($L['error_payword']);
+
+ if($MG['add_limit']) {
+ $last = $db->get_one("SELECT addtime FROM {$table} WHERE $sql ORDER BY itemid DESC");
+ if($last && $DT_TIME - $last['addtime'] < $MG['add_limit']) dalert(lang($L['add_limit'], array($MG['add_limit'])));
+ }
+ $msg = captcha($captcha, $need_captcha, true);
+ if($msg) dalert($msg);
+ $msg = question($answer, $need_question, true);
+ if($msg) dalert($msg);
+ if($do->pass($post)) {
+ $CAT = get_cat($post['catid']);
+ if(!$CAT || !check_group($_groupid, $CAT['group_add'])) dalert(lang($L['group_add'], array($CAT['catname'])));
+ $post['addtime'] = $post['level'] = $post['fee'] = 0;
+ $post['style'] = $post['template'] = $post['note'] = $post['filepath'] = '';
+ $need_check = $MOD['check_add'] == 2 ? $MG['check'] : $MOD['check_add'];
+ $post['status'] = get_status(3, $need_check);
+ $post['hits'] = 0;
+ $post['save_remotepic'] = $MOD['save_remotepic'] ? 1 : 0;
+ $post['username'] = $_username;
+ $post['areaid'] = $cityid;
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($could_color && $color && $_credit > $MOD['credit_color']) {
+ $post['style'] = $color;
+ credit_add($_username, -$MOD['credit_color']);
+ credit_record($_username, -$MOD['credit_color'], 'system', $L['title_color'], '['.$MOD['name'].']'.$post['title']);
+ }
+ $do->add($post);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ if($MOD['show_html'] && $post['status'] > 2) $do->tohtml($do->itemid);
+ if($fee_add) {
+ if($fee_currency == 'money') {
+ money_add($_username, -$fee_add);
+ money_record($_username, -$fee_add, $L['in_site'], 'system', lang($L['credit_record_add'], array($MOD['name'])), 'ID:'.$do->itemid);
+ } else {
+ credit_add($_username, -$fee_add);
+ credit_record($_username, -$fee_add, 'system', lang($L['credit_record_add'], array($MOD['name'])), 'ID:'.$do->itemid);
+ }
+ }
+
+ $msg = $post['status'] == 2 ? $L['success_check'] : $L['success_add'];
+ $js = '';
+ if(isset($post['sync_sina']) && $post['sync_sina']) $js .= sync_weibo('sina', $moduleid, $do->itemid);
+ if($_userid) {
+ set_cookie('dmsg', $msg);
+ $forward = '?mid='.$mid.'&status='.$post['status'];
+ $msg = '';
+ } else {
+ $forward = '?mid='.$mid.'&action=add';
+ }
+ $js .= 'window.onload=function(){parent.window.location="'.$forward.'";}';
+ dalert($msg, '', $js);
+ } else {
+ dalert($do->errmsg, '', ($need_captcha ? reload_captcha() : '').($need_question ? reload_question() : ''));
+ }
+ } else {
+ if($itemid) {
+ $MG['copy'] && $_userid or dheader(($DT_PC ? $MODULE[2]['linkurl'] : $MODULE[2]['mobile']).'account.php?action=group&itemid=1');
+
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['username'] != $_username) message();
+ extract($item);
+ $thumb = '';
+ $totime = $totime > $DT_TIME ? timetodate($totime, 3) : '';
+ } else {
+ $_catid = $catid;
+ foreach($do->fields as $v) {
+ $$v = '';
+ }
+ $content = '';
+ $catid = $_catid;
+ $areaid = $cityid;
+ }
+ $item = array();
+ }
+ break;
+ case 'edit':
+ $itemid or message();
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['username'] != $_username) message();
+
+ if($MG['edit_limit'] < 0) message($L['edit_refuse']);
+ if($MG['edit_limit'] && $DT_TIME - $item['addtime'] > $MG['edit_limit']*86400) message(lang($L['edit_limit'], array($MG['edit_limit'])));
+
+ if($submit) {
+ if($do->pass($post)) {
+ $CAT = get_cat($post['catid']);
+ if(!$CAT || !check_group($_groupid, $CAT['group_add'])) dalert(lang($L['group_add'], array($CAT['catname'])));
+ $post['addtime'] = timetodate($item['addtime']);
+ $post['level'] = $item['level'];
+ $post['fee'] = $item['fee'];
+ $post['style'] = addslashes($item['style']);
+ $post['template'] = addslashes($item['template']);
+ $post['filepath'] = addslashes($item['filepath']);
+ $post['note'] = addslashes($item['note']);
+ $need_check = $MOD['check_add'] == 2 ? $MG['check'] : $MOD['check_add'];
+ $post['status'] = get_status($item['status'], $need_check);
+ $post['hits'] = $item['hits'];
+ $post['save_remotepic'] = $MOD['save_remotepic'] ? 1 : 0;
+ $post['username'] = $_username;
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ $do->edit($post);
+ set_cookie('dmsg', $L['success_edit']);
+ dalert('', '', 'parent.window.location="'.$forward.'"');
+ } else {
+ dalert($do->errmsg);
+ }
+ } else {
+ extract($item);
+ }
+ break;
+ case 'delete':
+ $MG['delete'] or message();
+ $itemid or message();
+ $itemids = is_array($itemid) ? $itemid : array($itemid);
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $db->get_one("SELECT username FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['username'] != $_username) message();
+ $do->recycle($itemid);
+ }
+ dmsg($L['success_delete'], $forward);
+ break;
+ default:
+ $status = isset($status) ? intval($status) : 3;
+ in_array($status, array(1, 2, 3, 4)) or $status = 3;
+ $condition = "username='$_username'";
+ $condition .= " AND status=$status";
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($catid) $condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ $timetype = strpos($MOD['order'], 'add') !== false ? 'add' : '';
+ $lists = $do->get_list($condition, $MOD['order']);
+ break;
+}
+if($_userid) {
+ $nums = array();
+ for($i = 1; $i < 4; $i++) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE username='$_username' AND status=$i");
+ $nums[$i] = $r['num'];
+ }
+}
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MODULE[2]['linkurl'], $MODULE[2]['mobile'], $DT_URL);
+} else {
+ $foot = '';
+ if($action == 'add' || $action == 'edit') {
+ //
+ } else {
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ foreach($lists as $k=>$v) {
+ $lists[$k]['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $v['linkurl']);
+ $lists[$k]['date'] = timetodate($v[$time], 5);
+ }
+ $pages = mobile_pages($items, $page, $pagesize);
+ $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : 'my.php');
+ }
+}
+$head_title = lang($L['module_manage'], array($MOD['name']));
+include template($MOD['template_my'] ? $MOD['template_my'] : 'my_'.$module, 'member');
+?>
\ No newline at end of file
diff --git a/module/down/search.inc.php b/module/down/search.inc.php
new file mode 100644
index 0000000..a9d4b11
--- /dev/null
+++ b/module/down/search.inc.php
@@ -0,0 +1,154 @@
+ $DT['max_kw']) message(lang($L['word_limit'], array($DT['min_kw'], $DT['max_kw'])), $MOD['linkurl'].'search.php');
+ if($DT['search_limit'] && $page == 1) {
+ if(($DT_TIME - $DT['search_limit']) < get_cookie('last_search')) message(lang($L['time_limit'], array($DT['search_limit'])), $MOD['linkurl'].'search.php');
+ set_cookie('last_search', $DT_TIME);
+ }
+ }
+
+ $pptsql = '';
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $PPT = property_condition($catid);
+ foreach($PPT as $k=>$v) {
+ $PPT[$k]['select'] = '';
+ $oid = $v['oid'];
+ $tmp = 'ppt_'.$oid;
+ if(isset($$tmp)) {
+ $PPT[$k]['select'] = $tmp = strip_kw($$tmp);
+ if($tmp && in_array($tmp, $v['options'])) {
+ $tmp = 'O'.$oid.':'.$tmp.';';
+ $pptsql .= match_kw('pptword', $tmp);
+ }
+ }
+ }
+ }
+ $fds = $MOD['fields'];
+ $condition = '';
+ if($catid) $condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($dfields[$fields] == 'content') {
+ if($keyword && $MOD['fulltext'] == 1) $condition .= match_kw($dfields[$fields], $keyword);
+ $condition = str_replace('AND ', 'AND i.', $condition);
+ $condition = str_replace('i.content', 'd.content', $condition);
+ $condition = "i.status=3 AND i.itemid=d.itemid".$condition;
+ if($keyword && $MOD['fulltext'] == 2) $condition .= " AND MATCH(`content`) AGAINST('$kw'".(preg_match("/[+-<>()~*]/", $kw) ? ' IN BOOLEAN MODE' : '').")";
+ $table = $table.' i,'.$table_data.' d';
+ $fds = 'i.'.str_replace(',', ',i.', $fds);
+ } else {
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($pptsql) $condition .= $pptsql;//PPT
+ $condition = "status=3".$condition;
+ }
+ $pagesize = $MOD['pagesize'];
+ $offset = ($page-1)*$pagesize;
+ $items = $db->count($table, $condition, $DT['cache_search']);
+ $pages = pages($items, $page, $pagesize);
+ if($items) {
+ $order = $dorder[$order] ? " ORDER BY $dorder[$order]" : '';
+ $result = $db->query("SELECT {$fds} FROM {$table} WHERE {$condition}{$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ if($kw) {
+ $replacef = explode(' ', $kw);
+ $replacet = array_map('highlight', $replacef);
+ }
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ if($kw) $r['title'] = str_replace($replacef, $replacet, $r['title']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ }
+ if($page == 1 && $kw && $DT['search_kw']) keyword($DT['search_kw'], $_username, $kw, $items, $moduleid);
+ $showpage = 1;
+ $datetype = 3;
+ $target = '_blank';
+ $cols = 4;
+ $class = '';
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+} else {
+ if($kw) {
+ check_group($_groupid, $MOD['group_search']) or message($L['msg_no_search']);
+ } else if($catid) {
+ $CAT or message($L['msg_not_cate']);
+ if(!check_group($_groupid, $MOD['group_list']) || !check_group($_groupid, $CAT['group_list'])) message($L['msg_no_right']);
+ } else {
+ check_group($_groupid, $MOD['group_index']) or message($L['msg_no_right']);
+ }
+ $head_title = $MOD['name'].$DT['seo_delimiter'].$head_title;
+ if($kw) $head_title = $kw.$DT['seo_delimiter'].$head_title;
+ if(!$areaid && $cityid && strpos($DT_URL, 'areaid') === false) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ }
+ $elite = isset($elite) ? intval($elite) : 0;
+ (isset($orderby) && in_array($orderby, array('ddownload', 'dhits', 'dcomments'))) or $orderby = '';
+ $tags = array();
+ if($DT_QST) {
+ $condition = "status=3";
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($catid) $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($areaid) $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($elite) $condition .= " AND level>0";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize);
+ if($items) {
+ $order = $MOD['order'];
+ if($orderby) $order = substr($orderby, 0, 1) == 'd' ? substr($orderby, 1).' DESC' : substr($orderby, 1).' ASC';
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY {$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ while($r = $db->fetch_array($result)) {
+ if($kw) $r['title'] = str_replace($kw, ''.$kw.' ', $r['title']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = preg_replace("/(.*)([&?]page=[0-9]*)(.*)/i", "\\1\\3", rewrite($DT_URL, 1)).'&job=ajax';
+ }
+ if($page == 1 && $kw && $DT['search_kw']) keyword($DT['search_kw'], $_username, $kw, $items, $moduleid);
+ }
+ if($job == 'ajax') {
+ if($tags) include template('list-'.$module, 'tag');
+ exit;
+ }
+ $head_title = $MOD['name'].$L['search'];
+}
+$seo_file = 'search';
+include DT_ROOT.'/include/seo.inc.php';
+include template($MOD['template_search'] ? $MOD['template_search'] : 'search', $module);
+?>
\ No newline at end of file
diff --git a/module/down/show.htm.php b/module/down/show.htm.php
new file mode 100644
index 0000000..b06040d
--- /dev/null
+++ b/module/down/show.htm.php
@@ -0,0 +1,66 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+if(!$item || $item['status'] < 3) return false;
+require_once DT_ROOT.'/include/content.class.php';
+$could_comment = in_array($moduleid, explode(',', $EXT['comment_module'])) ? 1 : 0;
+extract($item);
+$CAT = get_cat($catid);
+$content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+$t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+$content = $_content = $t['content'];
+if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid);
+ if($lazy) $content = DC::lazy($content);
+ $content = DC::format($content, 1);
+}
+
+$CP = $MOD['cat_property'] && $CAT['property'];
+if($CP) {
+ require_once DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+}
+
+$adddate = timetodate($addtime, 3);
+$editdate = timetodate($edittime, 3);
+$fileurl = $linkurl;
+$linkurl = $MOD['linkurl'].$linkurl;
+$maincat = get_maincat(0, $moduleid);
+$fee = DC::fee($item['fee'], $MOD['fee_view']);
+$user_status = 4;
+include DT_ROOT.'/file/config/filetype.inc.php';
+include DT_ROOT.'/file/config/mirror.inc.php';
+$seo_file = 'show';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $item['template'] ? $item['template'] : ($CAT['show_template'] ? $CAT['show_template'] : ($MOD['template_show'] ? $MOD['template_show'] : 'show'));
+$destoon_task = "moduleid=$moduleid&html=show&itemid=$itemid";
+if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $linkurl);
+$DT_PC = $GLOBALS['DT_PC'] = 1;
+ob_start();
+include template($template, $module);
+$data = ob_get_contents();
+ob_clean();
+$filename = DT_ROOT.'/'.$MOD['moduledir'].'/'.$fileurl;
+if($DT['pcharset']) $filename = convert($filename, DT_CHARSET, $DT['pcharset']);
+file_put($filename, $data);
+if($EXT['mobile_enable']) {
+ include DT_ROOT.'/include/mobile.htm.php';
+ $head_pc = $linkurl;
+ $head_title = $head_name = $CAT['catname'];
+ $js_item = 1;
+ $foot = '';
+ if($_content) {
+ $content = $_content;
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, 0);
+ $content = DC::format($content, 0);
+ }
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put(str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename), $data);
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/down/show.inc.php b/module/down/show.inc.php
new file mode 100644
index 0000000..dc2b945
--- /dev/null
+++ b/module/down/show.inc.php
@@ -0,0 +1,86 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if($item && $item['status'] > 2) {
+ if($MOD['show_html'] && is_file(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl'])) d301($MOD['linkurl'].$item['linkurl']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ } else {
+ include load('404.inc');
+ }
+ $CAT = get_cat($catid);
+ if(!check_group($_groupid, $CAT['group_show'])) include load('403.inc');
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ if($lazy) $content = DC::lazy($content);
+ $content = DC::format($content, $DT_PC);
+ }
+ $CP = $MOD['cat_property'] && $CAT['property'];
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+ }
+
+ $adddate = timetodate($addtime, 3);
+ $editdate = timetodate($edittime, 3);
+ $linkurl = $MOD['linkurl'].$linkurl;
+ $maincat = get_maincat(0, $moduleid);
+ $update = '';
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ if(check_group($_groupid, $MOD['group_contact'])) {
+ if($fee) {
+ $user_status = 4;
+ $destoon_task = "moduleid=$moduleid&html=show&itemid=$itemid";
+ $description = '';
+ } else {
+ $user_status = 3;
+ }
+ } else {
+ $user_status = $_userid ? 1 : 0;
+ if($_username && $item['username'] == $_username) $user_status = 3;
+ }
+ include DT_ROOT.'/file/config/filetype.inc.php';
+ include DT_ROOT.'/file/config/mirror.inc.php';
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $linkurl);
+} else {
+ $itemid or dheader($MOD['mobile']);
+ $item = $db->get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ ($item && $item['status'] > 2) or message($L['msg_not_exist']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $CAT = get_cat($catid);
+ if(!check_group($_groupid, $MOD['group_show']) || !check_group($_groupid, $CAT['group_show'])) message($L['msg_no_right']);
+ $member = array();
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ include DT_ROOT.'/mobile/api/contact.inc.php';
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ if($share_icon) $share_icon = DC::icon($thumb, $content);
+ $content = DC::format($content, 0);
+ }
+ include DT_ROOT.'/file/config/filetype.inc.php';
+ include DT_ROOT.'/file/config/mirror.inc.php';
+ $editdate = timetodate($edittime, 5);
+ $update = '';
+ $head_title = $head_name = $CAT['catname'];
+ $js_item = 1;
+ $foot = '';
+}
+if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+$seo_file = 'show';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $item['template'] ? $item['template'] : ($CAT['show_template'] ? $CAT['show_template'] : ($MOD['template_show'] ? $MOD['template_show'] : 'show'));
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/down/task.inc.php b/module/down/task.inc.php
new file mode 100644
index 0000000..07bc6ba
--- /dev/null
+++ b/module/down/task.inc.php
@@ -0,0 +1,65 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3) exit;
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ $currency = $MOD['fee_currency'];
+ $fee_unit = $currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $fee_name = $currency == 'money' ? $DT['money_name'] : $DT['credit_name'];
+ if(check_group($_groupid, $MOD['group_contact'])) {
+ if($fee) {
+ if($MG['fee_mode'] && $MOD['fee_mode']) {
+ $user_status = 3;
+ } else {
+ $mid = $moduleid;
+ if($_userid) {
+ $user_status = check_pay($mid, $itemid) ? 3 : 2;
+ } else {
+ $user_status = 0;
+ }
+ }
+ } else {
+ $user_status = 3;
+ }
+ } else {
+ $user_status = $_userid ? 1 : 0;
+ }
+ if($_username && $_username == $item['username']) $user_status = 3;
+ if($user_status == 3) {
+ include DT_ROOT.'/file/config/filetype.inc.php';
+ include DT_ROOT.'/file/config/mirror.inc.php';
+ }
+ $content = strip_nr(ob_template('content', 'chip'), true);
+ echo 'Inner("down", \''.$content.'\');';
+ $update = '';
+ if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+ if($MOD['hits']) echo 'Inner("hits", \''.$item['hits'].'\');';
+ if($MOD['show_html'] && $task_item && $DT_TIME - @filemtime(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl']) > $task_item) tohtml('show', $module);
+} else if($html == 'list') {
+ $catid or exit;
+ if($MOD['list_html'] && $task_list && $CAT) {
+ $num = 1;
+ $totalpage = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $demo = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, '{DEMO}');
+ $fid = $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $page + 1;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $totalpage + 1 - $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ }
+} else if($html == 'index') {
+ if($DT['cache_hits'] && $MOD['hits']) {
+ $file = DT_CACHE.'/hits-'.$moduleid;
+ if($DT_TIME - @filemtime($file.'.dat') > $DT['cache_hits'] || @filesize($file.'.php') > 102400) update_hits($moduleid, $table);
+ }
+ if($MOD['index_html']) {
+ $file = DT_ROOT.'/'.$MOD['moduledir'].'/'.$DT['index'].'.'.$DT['file_ext'];
+ if($DT_TIME - @filemtime($file) > $task_index) tohtml('index', $module);
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/exhibit/admin/html.inc.php b/module/exhibit/admin/html.inc.php
new file mode 100644
index 0000000..e60e6ea
--- /dev/null
+++ b/module/exhibit/admin/html.inc.php
@@ -0,0 +1,119 @@
+get_one("SELECT * FROM {$DT_PRE}category WHERE moduleid=$moduleid AND catid>$catids ORDER BY catid");
+ if($CAT) {
+ $bcatid = $catid = $CAT['catid'];
+ $total = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $num = 50;
+ $bfid = $fid;
+ isset($fpage) or $fpage = 1;
+ if($fpage <= $total) {
+ $fid = $fpage;
+ tohtml('list', $module);
+ $fid = $bfid;
+ msg($MOD['name'].' ['.$CAT['catname'].'] 第'.$fpage.'页至第'.($fpage+$num-1).'页生成成功'.progress(0, $fid, $tid), '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids='.$catids.'&fid='.$fid.'&tid='.$tid.'&all='.$all.'&one='.$one.'&fpage='.($fpage+$num), 0);
+ }
+ $fid++;
+ msg($MOD['name'].' ['.$CAT['catname'].'] 生成成功'.progress(0, $fid, $tid), '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids='.$catid.'&fid='.$fid.'&tid='.$tid.'&all='.$all.'&one='.$one);
+ } else {
+ $all ? msg($MOD['name'].'列表生成成功', '?moduleid='.$moduleid.'&file='.$file.'&action=show&all='.$all.'&one='.$one) : msg($MOD['name'].'列表生成成功', $this_forward);
+ }
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}category WHERE moduleid=$moduleid");
+ $tid = $r['num'];
+ msg('', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids=0&fid=1&&tid='.$tid.'&all='.$all.'&one='.$one);
+ }
+ break;
+ case 'show':
+ $update = (isset($update) && $update) ? 1 : 0;
+ if(!$update && !$MOD['show_html']) {
+ if($one) dheader( '?file=html&action=back&mid='.$moduleid);
+ $all ? msg($MOD['name'].'生成成功', $this_forward) : dmsg($MOD['name'].'生成成功', $this_forward);
+ }
+ $catid = isset($catid) ? intval($catid) : '';
+ $sql = $catid ? " AND catid=$catid" : '';
+ if(!isset($fid)) {
+ $r = $db->get_one("SELECT min(itemid) AS fid FROM {$table} WHERE status>2 {$sql}");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ }
+ isset($sid) or $sid = $fid;
+ if(!isset($tid)) {
+ $r = $db->get_one("SELECT max(itemid) AS tid FROM {$table} WHERE status>2 {$sql}");
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ }
+ if($update) {
+ require DT_ROOT.'/module/'.$module.'/'.$module.'.class.php';
+ $do = new $module($moduleid);
+ }
+ isset($num) or $num = 100;
+ if($fid <= $tid) {
+ $result = $db->query("SELECT itemid FROM {$table} WHERE status>2 AND itemid>=$fid {$sql} ORDER BY itemid LIMIT 0,$num");
+ if($db->affected_rows($result)) {
+ while($r = $db->fetch_array($result)) {
+ $itemid = $r['itemid'];
+ $update ? $do->update($itemid) : tohtml('show', $module);
+ }
+ $itemid += 1;
+ } else {
+ $itemid = $fid + $num;
+ }
+ } else {
+ if($update) {
+ $all ? msg('', '?moduleid='.$moduleid.'&file='.$file.'&action=index&all=1&one='.$one) : dmsg('更新成功', $this_forward);
+ } else {
+ if($one) dheader( '?file=html&action=back&mid='.$moduleid);
+ $all ? msg($MOD['name'].'生成成功', $this_forward) : dmsg($MOD['name'].'生成成功', $this_forward);
+ }
+ }
+ msg('ID从'.$fid.'至'.($itemid-1).$MOD['name'].($update ? '更新' : '生成').'成功'.progress($sid, $fid, $tid), "?moduleid=$moduleid&file=$file&action=$action&sid=$sid&fid=$itemid&tid=$tid&num=$num&update=$update&all=$all&one=$one", 0);
+ break;
+ case 'cate':
+ $catid or msg('请选择分类');
+ isset($num) or $num = 50;
+ isset($fid) or $fid = 1;
+ $total = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ if($fpage && $tpage) {
+ $fid = $fpage;
+ $num = $tpage - $fpage + 1;
+ tohtml('list', $module);
+ dmsg('生成成功', $this_forward);
+ }
+ if($fid <= $total) {
+ tohtml('list', $module);
+ msg('第'.$fid.'页至第'.($fid+$num-1).'页生成成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catid='.$catid.'&fid='.($fid+$num).'&num='.$num.'&fpage='.$fpage.'&tpage='.$tpage, 0);
+ } else {
+ dmsg('生成成功', $this_forward);
+ }
+ break;
+ case 'item':
+ $catid or msg('请选择分类');
+ msg('', '?moduleid='.$moduleid.'&file='.$file.'&action=show&catid='.$catid.'&num='.$num);
+ break;
+ default:
+ $r = $db->get_one("SELECT min(itemid) AS fid,max(itemid) AS tid FROM {$table} WHERE status=3");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ include tpl('html', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/exhibit/admin/index.html b/module/exhibit/admin/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/exhibit/admin/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/exhibit/admin/index.inc.php b/module/exhibit/admin/index.inc.php
new file mode 100644
index 0000000..4ef717a
--- /dev/null
+++ b/module/exhibit/admin/index.inc.php
@@ -0,0 +1,222 @@
+ 9 ? " AND level>0" : " AND level=$level";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+ if($thumb) $condition .= " AND thumb<>''";
+ if($guest) $condition .= " AND username=''";
+ if($sign) $condition .= " AND sign=1";
+ if($process == 1) {
+ $condition .= " AND fromtime>$DT_TIME";
+ } else if($process == 2) {
+ $condition .= " AND fromtime<$DT_TIME AND totime>$DT_TIME";
+ } else if($process == 3) {
+ $condition .= " AND totime<$DT_TIME";
+ }
+ if($level) $condition .= $level > 9 ? " AND level>0" : " AND level=$level";
+ if($ip) $condition .= " AND ip='$ip'";
+ if($username) $condition .= " AND username='$username'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+
+ $timetype = strpos($dorder[$order], 'edit') === false ? 'add' : '';
+}
+switch($action) {
+ case 'add':
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ $do->add($post);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ if($MOD['show_html'] && $post['status'] > 2) $do->tohtml($do->itemid);
+ dmsg('添加成功', '?moduleid='.$moduleid.'&action='.$action.'&catid='.$post['catid']);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $content = $city = '';
+ $status = 3;
+ $addtime = timetodate($DT_TIME);
+ $username = $_username;
+ $item = array();
+ $menuid = 0;
+ isset($url) or $url = '';
+ if($url) {
+ $tmp = fetch_url($url);
+ if($tmp) extract($tmp);
+ }
+ $history = 0;
+ include tpl('edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ $item = $do->get_one();
+ extract($item);
+ $history = history($moduleid, $itemid);
+ $fromtime = timetodate($fromtime);
+ $totime = timetodate($totime);
+ $addtime = timetodate($addtime);
+ $menuon = array('5', '4', '2', '1', '3');
+ $menuid = $menuon[$status];
+ include tpl($action, $module);
+ }
+ break;
+ case 'move':
+ if($submit) {
+ $fromids or msg('请填写来源ID');
+ if($tocatid) {
+ $db->query("UPDATE {$table} SET catid=$tocatid WHERE `{$fromtype}` IN ($fromids)");
+ dmsg('移动成功', $forward);
+ } else {
+ msg('请选择目标分类');
+ }
+ } else {
+ $itemid = $itemid ? implode(',', $itemid) : '';
+ $menuid = 6;
+ include tpl($action);
+ }
+ break;
+ case 'update':
+ is_array($itemid) or msg('请选择'.$MOD['name']);
+ foreach($itemid as $v) {
+ $do->update($v);
+ }
+ dmsg('更新成功', $forward);
+ break;
+ case 'tohtml':
+ is_array($itemid) or msg('请选择'.$MOD['name']);
+ foreach($itemid as $itemid) {
+ tohtml('show', $module);
+ }
+ dmsg('生成成功', $forward);
+ break;
+ case 'delete':
+ $itemid or msg('请选择'.$MOD['name']);
+ isset($recycle) ? $do->recycle($itemid) : $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'restore':
+ $itemid or msg('请选择'.$MOD['name']);
+ $do->restore($itemid);
+ dmsg('还原成功', $forward);
+ break;
+ case 'clear':
+ $do->clear();
+ dmsg('清空成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择'.$MOD['name']);
+ $level = intval($level);
+ $do->level($itemid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ case 'recycle':
+ $lists = $do->get_list('status=0'.$condition, $dorder[$order]);
+ $menuid = 5;
+ include tpl('index', $module);
+ break;
+ case 'reject':
+ if($itemid && !$psize) {
+ $do->reject($itemid);
+ dmsg('拒绝成功', $forward);
+ } else {
+ $lists = $do->get_list('status=1'.$condition, $dorder[$order]);
+ $menuid = 4;
+ include tpl('index', $module);
+ }
+ break;
+ case 'expire':
+ $lists = $do->get_list("`totime`<$DT_TIME".$condition);
+ $menuid = 3;
+ include tpl('index', $module);
+ break;
+ case 'check':
+ if($itemid && !$psize) {
+ $do->check($itemid);
+ dmsg('审核成功', $forward);
+ } else {
+ $lists = $do->get_list('status=2'.$condition, $dorder[$order]);
+ $menuid = 2;
+ include tpl('index', $module);
+ }
+ break;
+ default:
+ $lists = $do->get_list('status=3'.$condition, $dorder[$order]);
+ $menuid = 1;
+ include tpl('index', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/exhibit/admin/menu.inc.php b/module/exhibit/admin/menu.inc.php
new file mode 100644
index 0000000..09e88d0
--- /dev/null
+++ b/module/exhibit/admin/menu.inc.php
@@ -0,0 +1,12 @@
+
\ No newline at end of file
diff --git a/module/exhibit/admin/remkdir.inc.php b/module/exhibit/admin/remkdir.inc.php
new file mode 100644
index 0000000..bd8a0f1
--- /dev/null
+++ b/module/exhibit/admin/remkdir.inc.php
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/module/exhibit/admin/sign.inc.php b/module/exhibit/admin/sign.inc.php
new file mode 100644
index 0000000..8dca499
--- /dev/null
+++ b/module/exhibit/admin/sign.inc.php
@@ -0,0 +1,65 @@
+get_one("SELECT * FROM {$table_sign} WHERE itemid=$itemid");
+ $item or msg('记录不存在');
+ $item['linkurl'] = DT_PATH.'api/redirect.php?mid='.$moduleid.'&itemid='.$item['id'];
+ $item['addtime'] = timetodate($item['addtime'], 6);
+ include tpl('sign_show', $module);
+ break;
+ case 'delete':
+ $itemid or msg('未选择记录');
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ $db->query("DELETE FROM {$table_sign} WHERE itemid IN ($itemids)");
+ dmsg('删除成功', $forward);
+ break;
+ default:
+ $sfields = array('按条件', '展会名称', '发布人', '会员', '公司', '姓名', '地址', '邮编', '手机', '邮件', 'QQ', '微信', '备注');
+ $dfields = array('title', 'title', 'user', 'username', 'company', 'truename', 'address', 'postcode', 'mobile', 'email', 'qq', 'wx', 'content');
+ $sorder = array('排序方式', '报名时间降序', '报名时间升序', '报名人数降序', '报名人数升序');
+ $dorder = array('itemid DESC', 'addtime DESC', 'addtime ASC', 'amount DESC', 'amount ASC');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $itemid or $itemid = '';
+ isset($amounts) or $amounts = '';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ isset($minamount) or $minamount = '';
+ isset($maxamount) or $maxamount = '';
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+ $condition = '1';
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ if($id) $condition .= " AND id=$id";
+ if($minamount != '') $condition .= " AND amount>=$minamount";
+ if($maxamount != '') $condition .= " AND amount<=$maxamount";
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_sign} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table_sign} WHERE $condition ORDER BY $dorder[$order] LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['linkurl'] = DT_PATH.'api/redirect.php?mid='.$moduleid.'&itemid='.$r['id'];
+ $r['addtime'] = timetodate($r['addtime'], 5);
+ $lists[] = $r;
+ }
+ include tpl('sign', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/exhibit/admin/template/edit.tpl.php b/module/exhibit/admin/template/edit.tpl.php
new file mode 100644
index 0000000..eea09c3
--- /dev/null
+++ b/module/exhibit/admin/template/edit.tpl.php
@@ -0,0 +1,247 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+单页采编
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/exhibit/admin/template/html.tpl.php b/module/exhibit/admin/template/html.tpl.php
new file mode 100644
index 0000000..339891c
--- /dev/null
+++ b/module/exhibit/admin/template/html.tpl.php
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/exhibit/admin/template/index.html b/module/exhibit/admin/template/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/exhibit/admin/template/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/exhibit/admin/template/index.tpl.php b/module/exhibit/admin/template/index.tpl.php
new file mode 100644
index 0000000..f1b870c
--- /dev/null
+++ b/module/exhibit/admin/template/index.tpl.php
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+取消', 0, 'onchange="this.form.action=\'?moduleid='.$moduleid.'&file='.$file.'&action=level\';this.form.submit();"');?>
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/exhibit/admin/template/setting.tpl.php b/module/exhibit/admin/template/setting.tpl.php
new file mode 100644
index 0000000..fe9b6d0
--- /dev/null
+++ b/module/exhibit/admin/template/setting.tpl.php
@@ -0,0 +1,496 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/exhibit/admin/template/sign.tpl.php b/module/exhibit/admin/template/sign.tpl.php
new file mode 100644
index 0000000..ae3e348
--- /dev/null
+++ b/module/exhibit/admin/template/sign.tpl.php
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/exhibit/admin/template/sign_show.tpl.php b/module/exhibit/admin/template/sign_show.tpl.php
new file mode 100644
index 0000000..d35790b
--- /dev/null
+++ b/module/exhibit/admin/template/sign_show.tpl.php
@@ -0,0 +1,66 @@
+
+报名详情
+
+
+
\ No newline at end of file
diff --git a/module/exhibit/admin/uninstall.inc.php b/module/exhibit/admin/uninstall.inc.php
new file mode 100644
index 0000000..55c3b80
--- /dev/null
+++ b/module/exhibit/admin/uninstall.inc.php
@@ -0,0 +1,6 @@
+query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_data_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_sign_".$moduleid."`");
+?>
\ No newline at end of file
diff --git a/module/exhibit/global.func.php b/module/exhibit/global.func.php
new file mode 100644
index 0000000..7ca7b97
--- /dev/null
+++ b/module/exhibit/global.func.php
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/module/exhibit/index.htm.php b/module/exhibit/index.htm.php
new file mode 100644
index 0000000..1148a62
--- /dev/null
+++ b/module/exhibit/index.htm.php
@@ -0,0 +1,47 @@
+get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].'index.php?page={destoon_page}');
+ $tags = array();
+ if($items) {
+ $order = $MOD['order'];
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put(str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename), $data);
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/exhibit/index.html b/module/exhibit/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/exhibit/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/exhibit/list.htm.php b/module/exhibit/list.htm.php
new file mode 100644
index 0000000..4432f7b
--- /dev/null
+++ b/module/exhibit/list.htm.php
@@ -0,0 +1,91 @@
+count($table, $condition);
+ if($items != $CAT['item']) {
+ $CAT['item'] = $items;
+ $db->query("UPDATE {$DT_PRE}category SET item=$items WHERE catid=$catid");
+ }
+} else {
+ $items = $CAT['item'];
+}
+$pagesize = $MOD['pagesize'];
+$showpage = 1;
+$datetype = 5;
+$template = $CAT['template'] ? $CAT['template'] : ($MOD['template_list'] ? $MOD['template_list'] : 'list');
+$total = max(ceil($items/$MOD['pagesize']), 1);
+if(isset($fid) && isset($num)) {
+ $page = $fid;
+ $topage = $fid + $num - 1;
+ $total = $topage < $total ? $topage : $total;
+}
+for(; $page <= $total; $page++) {
+ $offset = ($page-1)*$pagesize;
+ $pages = listpages($CAT, $items, $page, $pagesize);
+ $tags = array();
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}");
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $seo_file = 'list';
+ include DT_ROOT.'/include/seo.inc.php';
+ $destoon_task = "moduleid=$moduleid&html=list&catid=$catid&page=$page";
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].($page > 1 ?listurl($CAT, $page) : $CAT['linkurl']);
+ $filename = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, $page);
+ $_tags = $tags;
+ $DT_PC = $GLOBALS['DT_PC'] = 1;
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ if($DT['pcharset']) $filename = convert($filename, DT_CHARSET, $DT['pcharset']);
+ file_put($filename, $data);
+ if($page == 1) {
+ $indexname = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, 0);
+ if($DT['pcharset']) $indexname = convert($indexname, DT_CHARSET, $DT['pcharset']);
+ file_copy($filename, $indexname);
+ }
+ if($EXT['mobile_enable']) {
+ include DT_ROOT.'/include/mobile.htm.php';
+ $head_pc = str_replace($MOD['mobile'], $MOD['linkurl'], $head_mobile);
+ if($CAT['parentid']) $PCAT = get_cat($CAT['parentid']);
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($CAT, '{destoon_page}'));
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $tags = array();
+ foreach($_tags as $r) {
+ $r['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $r['linkurl']);
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ if($items) $js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid;
+ $head_title = $head_name = $CAT['catname'];
+ $filename = str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename);
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put($filename, $data);
+ if($page == 1) file_copy($filename, str_replace(DT_ROOT, DT_ROOT.'/mobile', $indexname));
+ }
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/exhibit/list.inc.php b/module/exhibit/list.inc.php
new file mode 100644
index 0000000..b9f4a39
--- /dev/null
+++ b/module/exhibit/list.inc.php
@@ -0,0 +1,88 @@
+count($table, $condition, $CFG['db_expires']);
+ } else {
+ if($page == 1) {
+ $items = $db->count($table, $condition, $CFG['db_expires']);
+ if($items != $CAT['item']) {
+ $CAT['item'] = $items;
+ $db->query("UPDATE {$DT_PRE}category SET item=$items WHERE catid=$catid");
+ }
+ } else {
+ $items = $CAT['item'];
+ }
+ }
+ $pagesize = $MOD['pagesize'];
+ $offset = ($page-1)*$pagesize;
+ $pages = listpages($CAT, $items, $page, $pagesize);
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ $showpage = 1;
+ $datetype = 5;
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].listurl($CAT, $page > 1 ? $page : 0);
+} else {
+ if(!$CAT || $CAT['moduleid'] != $moduleid) message($L['msg_not_cate']);
+ if(!check_group($_groupid, $MOD['group_list']) || !check_group($_groupid, $CAT['group_list'])) message($L['msg_no_right']);
+ $condition = "status=3";
+ $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($cityid) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($CAT, '{destoon_page}'));
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid;
+ }
+ if($CAT['parentid']) $PCAT = get_cat($CAT['parentid']);
+ $head_title = $head_name = $CAT['catname'];
+}
+$seo_file = 'list';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $CAT['template'] ? $CAT['template'] : ($MOD['template_list'] ? $MOD['template_list'] : 'list');
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/exhibit/my.inc.php b/module/exhibit/my.inc.php
new file mode 100644
index 0000000..3d7629a
--- /dev/null
+++ b/module/exhibit/my.inc.php
@@ -0,0 +1,273 @@
+get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND status>1");
+ $limit_used = $r['num'];
+ $limit_free = $mod_limit > $limit_used ? $mod_limit - $limit_used : 0;
+}
+switch($action) {
+ case 'add':
+ if($mod_limit && $limit_used >= $mod_limit) dalert(lang($L['info_limit'], array($mod_limit, $limit_used)), $_userid ? '?mid='.$mid : '?action=index');
+ if($MG['hour_limit']) {
+ $today = $DT_TIME - 3600;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND addtime>$today");
+ if($r && $r['num'] >= $MG['hour_limit']) dalert(lang($L['hour_limit'], array($MG['hour_limit'])), $_userid ? '?mid='.$mid : '?action=index');
+ }
+ if($MG['day_limit']) {
+ $today = $DT_TODAY - 86400;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND addtime>$today");
+ if($r && $r['num'] >= $MG['day_limit']) dalert(lang($L['day_limit'], array($MG['day_limit'])), $_userid ? '?mid='.$mid : '?action=index');
+ }
+
+ if($mod_free_limit >= 0) {
+ $fee_add = ($MOD['fee_add'] && (!$MOD['fee_mode'] || !$MG['fee_mode']) && $limit_used >= $mod_free_limit && $_userid) ? dround($MOD['fee_add']) : 0;
+ } else {
+ $fee_add = 0;
+ }
+ $fee_currency = $MOD['fee_currency'];
+ $fee_unit = $fee_currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $need_password = $fee_add && $fee_currency == 'money' && $fee_add > $DT['quick_pay'];
+ $need_captcha = $MOD['captcha_add'] == 2 ? $MG['captcha'] : $MOD['captcha_add'];
+ $need_question = $MOD['question_add'] == 2 ? $MG['question'] : $MOD['question_add'];
+ $could_color = check_group($_groupid, $MOD['group_color']) && $MOD['credit_color'] && $_userid;
+
+ if($submit) {
+ if($fee_add && $fee_add > ($fee_currency == 'money' ? $_money : $_credit)) dalert($L['balance_lack']);
+ if($need_password && !is_payword($_username, $password)) dalert($L['error_payword']);
+ if($MG['add_limit']) {
+ $last = $db->get_one("SELECT addtime FROM {$table} WHERE $sql ORDER BY itemid DESC");
+ if($last && $DT_TIME - $last['addtime'] < $MG['add_limit']) dalert(lang($L['add_limit'], array($MG['add_limit'])));
+ }
+ $msg = captcha($captcha, $need_captcha, true);
+ if($msg) dalert($msg);
+ $msg = question($answer, $need_question, true);
+ if($msg) dalert($msg);
+
+ if($do->pass($post)) {
+ $CAT = get_cat($post['catid']);
+ if(!$CAT || !check_group($_groupid, $CAT['group_add'])) dalert(lang($L['group_add'], array($CAT['catname'])));
+ $post['addtime'] = $post['level'] = $post['fee'] = 0;
+ $post['style'] = $post['template'] = $post['note'] = $post['filepath'] = '';
+ $need_check = $MOD['check_add'] == 2 ? $MG['check'] : $MOD['check_add'];
+ $post['status'] = get_status(3, $need_check);
+ $post['hits'] = 0;
+ $post['username'] = $_username;
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($could_color && $color && $_credit > $MOD['credit_color']) {
+ $post['style'] = $color;
+ credit_add($_username, -$MOD['credit_color']);
+ credit_record($_username, -$MOD['credit_color'], 'system', $L['title_color'], '['.$MOD['name'].']'.$post['title']);
+ }
+ $do->add($post);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ if($MOD['show_html'] && $post['status'] > 2) $do->tohtml($do->itemid);
+ if($fee_add) {
+ if($fee_currency == 'money') {
+ money_add($_username, -$fee_add);
+ money_record($_username, -$fee_add, $L['in_site'], 'system', lang($L['credit_record_add'], array($MOD['name'])), 'ID:'.$do->itemid);
+ } else {
+ credit_add($_username, -$fee_add);
+ credit_record($_username, -$fee_add, 'system', lang($L['credit_record_add'], array($MOD['name'])), 'ID:'.$do->itemid);
+ }
+ }
+
+ $msg = $post['status'] == 2 ? $L['success_check'] : $L['success_add'];
+ $js = '';
+ if(isset($post['sync_sina']) && $post['sync_sina']) $js .= sync_weibo('sina', $moduleid, $do->itemid);
+ if($_userid) {
+ set_cookie('dmsg', $msg);
+ $forward = '?mid='.$mid.'&status='.$post['status'];
+ $msg = '';
+ } else {
+ $forward = '?mid='.$mid.'&action=add';
+ }
+ $js .= 'window.onload=function(){parent.window.location="'.$forward.'";}';
+ dalert($msg, '', $js);
+ } else {
+ dalert($do->errmsg, '', ($need_captcha ? reload_captcha() : '').($need_question ? reload_question() : ''));
+ }
+ } else {
+ if($itemid) {
+ $MG['copy'] && $_userid or dheader(($DT_PC ? $MODULE[2]['linkurl'] : $MODULE[2]['mobile']).'account.php?action=group&itemid=1');
+
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['username'] != $_username) message();
+ extract($item);
+ $thumb = '';
+ $fromtime = timetodate($fromtime);
+ $totime = timetodate($totime);
+ } else {
+ $_catid = $catid;
+ foreach($do->fields as $v) {
+ $$v = '';
+ }
+ if($_userid) {
+ $user = userinfo($_username);
+ $truename = $user['truename'];
+ $email = $user['email'];
+ $mobile = $user['mobile'];
+ $gender = $user['gender'];
+ $areaid = $user['areaid'];
+ $telephone = $user['telephone'];
+ $fax = $user['fax'];
+ $addr = $user['address'];
+ $qq = $user['qq'];
+ $wx = $user['wx'];
+ $areaid = $user['areaid'];
+ } else {
+ $areaid = $cityid;
+ }
+ $content = '';
+ $catid = $_catid;
+ if($DT_MOB == 'ios') {
+ $fromtime = timetodate(DT_TIME + 86400*3, 3).' 00:00:00';
+ $totime = timetodate(DT_TIME + 86400*10, 3).' 23:59:59';
+ }
+ }
+ $item = array();
+ }
+ break;
+ case 'edit':
+ $itemid or message();
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['username'] != $_username) message();
+
+ if($MG['edit_limit'] < 0) message($L['edit_refuse']);
+ if($MG['edit_limit'] && $DT_TIME - $item['addtime'] > $MG['edit_limit']*86400) message(lang($L['edit_limit'], array($MG['edit_limit'])));
+
+ if($submit) {
+ if($do->pass($post)) {
+ $CAT = get_cat($post['catid']);
+ if(!$CAT || !check_group($_groupid, $CAT['group_add'])) dalert(lang($L['group_add'], array($CAT['catname'])));
+ $post['addtime'] = timetodate($item['addtime']);
+ $post['level'] = $item['level'];
+ $post['fee'] = $item['fee'];
+ $post['style'] = addslashes($item['style']);
+ $post['template'] = addslashes($item['template']);
+ $post['filepath'] = addslashes($item['filepath']);
+ $post['note'] = addslashes($item['note']);
+ $need_check = $MOD['check_add'] == 2 ? $MG['check'] : $MOD['check_add'];
+ $post['status'] = get_status($item['status'], $need_check);
+ $post['hits'] = $item['hits'];
+ $post['username'] = $_username;
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ $do->edit($post);
+ if($post['status'] < 3 && $item['status'] > 2) history($moduleid, $itemid, 'set', $item);
+ set_cookie('dmsg', $post['status'] == 2 ? $L['success_edit_check'] : $L['success_edit']);
+ dalert('', '', 'parent.window.location="'.($post['status'] == 2 ? '?mid='.$moduleid.'&status=2' : $forward).'"');
+ } else {
+ dalert($do->errmsg);
+ }
+ } else {
+ extract($item);
+ $fromtime = timetodate($fromtime);
+ $totime = timetodate($totime);
+ }
+ break;
+ case 'delete':
+ $MG['delete'] or message();
+ $itemid or message();
+ $itemids = is_array($itemid) ? $itemid : array($itemid);
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $db->get_one("SELECT username FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['username'] != $_username) message();
+ $do->recycle($itemid);
+ }
+ dmsg($L['success_delete'], $forward);
+ break;
+ case 'sign':
+ $id = isset($id) && $id ? intval($id) : '';
+ $sfields = $L['exhibit_sign_fields'];
+ $dfields = array('title', 'title', 'username', 'company', 'truename', 'address', 'postcode', 'mobile', 'email', 'qq', 'wx', 'content');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $itemid or $itemid = '';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = is_date($fromdate) ? datetotime($fromdate.' 0:0:0') : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = is_date($todate) ? datetotime($todate.' 23:59:59') : 0;
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $condition = "user='$_username'";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($id) $condition .= " AND id=$id";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_sign} WHERE $condition");
+ $items = $r['num'];
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table_sign} WHERE $condition ORDER BY addtime DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['linkurl'] = DT_PATH.'api/redirect.php?mid='.$moduleid.'&itemid='.$r['id'];
+ $r['addtime'] = timetodate($r['addtime'], 5);
+ $lists[] = $r;
+ }
+ break;
+ default:
+ $status = isset($status) ? intval($status) : 3;
+ in_array($status, array(1, 2, 3, 4)) or $status = 3;
+ $condition = "username='$_username'";
+ $condition .= " AND status=$status";
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($catid) $condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ $timetype = strpos($MOD['order'], 'edit') === false ? 'add' : '';
+ $lists = $do->get_list($condition, $MOD['order']);
+ break;
+}
+if($_userid) {
+ $nums = array();
+ for($i = 1; $i < 5; $i++) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE username='$_username' AND status=$i");
+ $nums[$i] = $r['num'];
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_sign} WHERE user='$_username'");
+ $nums[5] = $r['num'];
+}
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MODULE[2]['linkurl'], $MODULE[2]['mobile'], $DT_URL);
+} else {
+ $foot = '';
+ if($action == 'add' || $action == 'edit') {
+ //
+ } else {
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ foreach($lists as $k=>$v) {
+ $lists[$k]['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $v['linkurl']);
+ $lists[$k]['date'] = timetodate($v[$time], 5);
+ }
+ $pages = mobile_pages($items, $page, $pagesize);
+ $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : 'my.php');
+ }
+}
+$head_title = lang($L['module_manage'], array($MOD['name']));
+include template($MOD['template_my'] ? $MOD['template_my'] : 'my_'.$module, 'member');
+?>
\ No newline at end of file
diff --git a/module/exhibit/search.inc.php b/module/exhibit/search.inc.php
new file mode 100644
index 0000000..70312f2
--- /dev/null
+++ b/module/exhibit/search.inc.php
@@ -0,0 +1,177 @@
+ 0 && $month < 13) {
+ $M = $month < 10 ? '0'.$month : $month;
+ $Y = date('Y');
+ $fromdate = $Y.$M.'01';
+ $fromtime = datetotime($fromdate.' 0:0:0');
+ $D = date('t', $fromtime);
+ $todate = $Y.$M.$D;
+ $totime = datetotime($todate.' 0:0:0');
+ }
+ $sfields = array($L['by_auto'], $L['by_title'], $L['by_content'], $L['sponsor'], $L['undertaker'], $L['hallname'], $L['city']);
+ $dfields = array('keyword', 'title', 'content', 'sponsor', 'undertaker', 'hallname', 'city');
+ $sorder = array($L['order'], $L['order_auto'], $L['order_fromtime'], $L['order_totime'], $L['order_hits']);
+ $dorder = array($MOD['order'], '', 'fromtime DESC', 'totime DESC', 'hits DESC');
+ if(!$MOD['fulltext']) unset($sfields[2], $dfields[2]);
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ $order_select = dselect($sorder, 'order', '', $order);
+ $category_select = category_select('catid', $L['all_category'], $catid, $moduleid);
+ $area_select = $DT['city'] ? ajax_area_select('areaid', $L['all_area'], $areaid) : '';
+ $tags = array();
+ if($DT_QST) {
+ if($kw) {
+ if(strlen($kw) < $DT['min_kw'] || strlen($kw) > $DT['max_kw']) message(lang($L['word_limit'], array($DT['min_kw'], $DT['max_kw'])), $MOD['linkurl'].'search.php');
+ if($DT['search_limit'] && $page == 1) {
+ if(($DT_TIME - $DT['search_limit']) < get_cookie('last_search')) message(lang($L['time_limit'], array($DT['search_limit'])), $MOD['linkurl'].'search.php');
+ set_cookie('last_search', $DT_TIME);
+ }
+ }
+
+ $pptsql = '';
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $PPT = property_condition($catid);
+ foreach($PPT as $k=>$v) {
+ $PPT[$k]['select'] = '';
+ $oid = $v['oid'];
+ $tmp = 'ppt_'.$oid;
+ if(isset($$tmp)) {
+ $PPT[$k]['select'] = $tmp = strip_kw($$tmp);
+ if($tmp && in_array($tmp, $v['options'])) {
+ $tmp = 'O'.$oid.':'.$tmp.';';
+ $pptsql .= match_kw('pptword', $tmp);
+ }
+ }
+ }
+ }
+ $fds = $MOD['fields'];
+ $condition = '';
+ if($catid) $condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($fromtime) $condition .= " AND fromtime>=$fromtime";
+ if($totime) $condition .= " AND fromtime<=$totime";
+ if($process == 1) {
+ $condition .= " AND fromtime>$DT_TIME";
+ } else if($process == 2) {
+ $condition .= " AND fromtime<$DT_TIME AND totime>$DT_TIME";
+ } else if($process == 3) {
+ $condition .= " AND totime<$DT_TIME";
+ }
+ if($dfields[$fields] == 'content') {
+ if($keyword && $MOD['fulltext'] == 1) $condition .= match_kw($dfields[$fields], $keyword);
+ $condition = str_replace('AND ', 'AND i.', $condition);
+ $condition = str_replace('i.content', 'd.content', $condition);
+ $condition = "i.status=3 AND i.itemid=d.itemid".$condition;
+ if($keyword && $MOD['fulltext'] == 2) $condition .= " AND MATCH(`content`) AGAINST('$kw'".(preg_match("/[+-<>()~*]/", $kw) ? ' IN BOOLEAN MODE' : '').")";
+ $table = $table.' i,'.$table_data.' d';
+ $fds = 'i.'.str_replace(',', ',i.', $fds);
+ } else {
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($pptsql) $condition .= $pptsql;//PPT
+ $condition = "status=3".$condition;
+ }
+ $pagesize = $MOD['pagesize'];
+ $offset = ($page-1)*$pagesize;
+ $items = $db->count($table, $condition, $DT['cache_search']);
+ $pages = pages($items, $page, $pagesize);
+ if($items) {
+ $order = $dorder[$order] ? " ORDER BY $dorder[$order]" : '';
+ $result = $db->query("SELECT {$fds} FROM {$table} WHERE {$condition}{$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ if($kw) {
+ $replacef = explode(' ', $kw);
+ $replacet = array_map('highlight', $replacef);
+ }
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['fromdate'] = timetodate($r['fromtime'], 3);
+ $r['todate'] = timetodate($r['totime'], 3);
+ $r['process'] = get_process($r['fromtime'], $r['totime']);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ if($kw) $r['title'] = str_replace($replacef, $replacet, $r['title']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ }
+ if($page == 1 && $kw && $DT['search_kw']) keyword($DT['search_kw'], $_username, $kw, $items, $moduleid);
+ $showpage = 1;
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+} else {
+ if($kw) {
+ check_group($_groupid, $MOD['group_search']) or message($L['msg_no_search']);
+ } else if($catid) {
+ $CAT or message($L['msg_not_cate']);
+ if(!check_group($_groupid, $MOD['group_list']) || !check_group($_groupid, $CAT['group_list'])) message($L['msg_no_right']);
+ } else {
+ check_group($_groupid, $MOD['group_index']) or message($L['msg_no_right']);
+ }
+ $head_title = $MOD['name'].$DT['seo_delimiter'].$head_title;
+ if($kw) $head_title = $kw.$DT['seo_delimiter'].$head_title;
+ if(!$areaid && $cityid && strpos($DT_URL, 'areaid') === false) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ }
+ $elite = isset($elite) ? intval($elite) : 0;
+ (isset($orderby) && in_array($orderby, array('dorders', 'dhits', 'dcomments'))) or $orderby = '';
+ $tags = array();
+ if($DT_QST) {
+ $condition = "status=3";
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($catid) $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($areaid) $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($elite) $condition .= " AND level>0";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize);
+ if($items) {
+ $order = $MOD['order'];
+ if($orderby) $order = substr($orderby, 0, 1) == 'd' ? substr($orderby, 1).' DESC' : substr($orderby, 1).' ASC';
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY {$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ while($r = $db->fetch_array($result)) {
+ if($kw) $r['title'] = str_replace($kw, ''.$kw.' ', $r['title']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = preg_replace("/(.*)([&?]page=[0-9]*)(.*)/i", "\\1\\3", rewrite($DT_URL, 1)).'&job=ajax';
+ }
+ if($page == 1 && $kw && $DT['search_kw']) keyword($DT['search_kw'], $_username, $kw, $items, $moduleid);
+ }
+ if($job == 'ajax') {
+ if($tags) include template('list-'.$module, 'tag');
+ exit;
+ }
+ $head_title = $MOD['name'].$L['search'];
+}
+$seo_file = 'search';
+include DT_ROOT.'/include/seo.inc.php';
+include template($MOD['template_search'] ? $MOD['template_search'] : 'search', $module);
+?>
\ No newline at end of file
diff --git a/module/exhibit/show.inc.php b/module/exhibit/show.inc.php
new file mode 100644
index 0000000..6b8d487
--- /dev/null
+++ b/module/exhibit/show.inc.php
@@ -0,0 +1,89 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if($item && $item['status'] > 2) {
+ if($MOD['show_html'] && is_file(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl'])) d301($MOD['linkurl'].$item['linkurl']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ } else {
+ include load('404.inc');
+ }
+ $CAT = get_cat($catid);
+ if(!check_group($_groupid, $CAT['group_show'])) include load('403.inc');
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ if($lazy) $content = DC::lazy($content);
+ $content = DC::format($content, $DT_PC);
+ }
+ $CP = $MOD['cat_property'] && $CAT['property'];
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+ }
+ $process = get_process($fromtime, $totime);
+ $fromdate = timetodate($fromtime, 3);
+ $todate = timetodate($totime, 3);
+ $adddate = timetodate($addtime, 3);
+ $editdate = timetodate($edittime, 3);
+ $linkurl = $MOD['linkurl'].$linkurl;
+ $maincat = get_maincat(0, $moduleid);
+ $update = '';
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ if(check_group($_groupid, $MOD['group_contact'])) {
+ if($fee) {
+ $user_status = 4;
+ $destoon_task = "moduleid=$moduleid&html=show&itemid=$itemid";
+ $description = DC::description($content, $MOD['pre_view']);
+ } else {
+ $user_status = 3;
+ }
+ } else {
+ $user_status = $_userid ? 1 : 0;
+ if($_username && $item['username'] == $_username) $user_status = 3;
+ }
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $linkurl);
+} else {
+ $itemid or dheader($MOD['mobile']);
+ $item = $db->get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ ($item && $item['status'] > 2) or message($L['msg_not_exist']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $CAT = get_cat($catid);
+ if(!check_group($_groupid, $MOD['group_show']) || !check_group($_groupid, $CAT['group_show'])) message($L['msg_no_right']);
+ $member = array();
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ include DT_ROOT.'/mobile/api/contact.inc.php';
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ if($share_icon) $share_icon = DC::icon($thumb, $content);
+ $content = DC::format($content, 0);
+ }
+ $process = get_process($fromtime, $totime);
+ $fromdate = timetodate($fromtime, 3);
+ $todate = timetodate($totime, 3);
+ $adddate = timetodate($addtime, 3);
+ $editdate = timetodate($edittime, 5);
+ $could_sign = ($sign && $process == 1 && $user_status == 3 && $username && $username != $_username) ? 1 : 0;
+ $update = '';
+ $head_title = $head_name = $CAT['catname'];
+ $js_item = 1;
+ $foot = '';
+}
+if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+$seo_file = 'show';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $item['template'] ? $item['template'] : ($CAT['show_template'] ? $CAT['show_template'] : ($MOD['template_show'] ? $MOD['template_show'] : 'show'));
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/exhibit/task.inc.php b/module/exhibit/task.inc.php
new file mode 100644
index 0000000..fff420c
--- /dev/null
+++ b/module/exhibit/task.inc.php
@@ -0,0 +1,77 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3) exit;
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ $currency = $MOD['fee_currency'];
+ $fee_unit = $currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $fee_name = $currency == 'money' ? $DT['money_name'] : $DT['credit_name'];
+ $inner = false;
+ if(check_group($_groupid, $MOD['group_show'])) {
+ if($fee) {
+ $inner = true;
+ if($MG['fee_mode'] && $MOD['fee_mode']) {
+ $user_status = 3;
+ } else {
+ $mid = $moduleid;
+ if($_userid) {
+ $user_status = check_pay($mid, $itemid) ? 3 : 2;
+ } else {
+ $user_status = 0;
+ }
+ }
+ } else {
+ $user_status = 3;
+ }
+ } else {
+ $inner = true;
+ $user_status = $_userid ? 1 : 0;
+ }
+ if($_username && $_username == $item['username']) $user_status = 3;
+ if($inner) {
+ if($user_status == 3 || $user_status == 2) {
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $content = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $content['content'];
+ if($content) {
+ if($user_status == 2) $description = DC::description($content, $MOD['pre_view']);
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ $content = DC::format($content, $DT_PC);
+ }
+ }
+ $content = strip_nr(ob_template('content', 'chip'), true);
+ echo 'Inner("content", \''.$content.'\');';
+ }
+ $update = '';
+ if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+ if($MOD['hits']) echo 'Inner("hits", \''.$item['hits'].'\');';
+ echo 'Dd("process").src = \''.(DT_PATH.'file/image/process_'.get_process($item['fromtime'], $item['totime']).'.gif').'\';';
+ if($MOD['show_html'] && $task_item && $DT_TIME - @filemtime(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl']) > $task_item) tohtml('show', $module);
+} else if($html == 'list') {
+ $catid or exit;
+ if($MOD['list_html'] && $task_list && $CAT) {
+ $num = 1;
+ $totalpage = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $demo = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, '{DEMO}');
+ $fid = $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $page + 1;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $totalpage + 1 - $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ }
+} else if($html == 'index') {
+ if($DT['cache_hits'] && $MOD['hits']) {
+ $file = DT_CACHE.'/hits-'.$moduleid;
+ if($DT_TIME - @filemtime($file.'.dat') > $DT['cache_hits'] || @filesize($file.'.php') > 102400) update_hits($moduleid, $table);
+ }
+ if($MOD['index_html']) {
+ $file = DT_ROOT.'/'.$MOD['moduledir'].'/'.$DT['index'].'.'.$DT['file_ext'];
+ if($DT_TIME - @filemtime($file) > $task_index) tohtml('index', $module);
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/extend/ad.class.php b/module/extend/ad.class.php
new file mode 100644
index 0000000..297e8db
--- /dev/null
+++ b/module/extend/ad.class.php
@@ -0,0 +1,280 @@
+table = DT_PRE.'ad';
+ $this->table_place = DT_PRE.'ad_place';
+ }
+
+ function ad() {
+ $this->__construct();
+ }
+
+ function is_place($place) {
+ global $L;
+ if(!is_array($place)) return false;
+ if(!$place['name']) return $this->_($L['pass_ad_name']);
+ if($place['typeid'] == 3 || $place['typeid'] == 4 || $place['typeid'] == 5) {
+ if(!$place['width']) return $this->_($L['pass_place_width']);
+ if(!$place['height']) return $this->_($L['pass_place_height']);
+ }
+ if($place['typeid'] == 6 || $place['typeid'] == 7) {
+ if(!$place['moduleid']) return $this->_($L['pass_place_module']);
+ $condition = "moduleid=$place[moduleid] AND typeid=$place[typeid]";
+ if($this->pid) $condition .= " AND pid<>$this->pid";
+ $r = DB::get_one("SELECT pid FROM {$this->table_place} WHERE $condition");
+ if($r) return $this->_($L['pass_place_repeat']);
+ }
+ return true;
+ }
+
+ function set_place($place) {
+ global $_username;
+ $place = array_map('ad_restore', $place);
+ if(!$this->pid) $place['addtime'] = DT_TIME;
+ $place['edittime'] = DT_TIME;
+ $place['editor'] = $_username;
+ $place['width'] = intval($place['width']);
+ $place['height'] = intval($place['height']);
+ return $place;
+ }
+
+ function add_place($place) {
+ $place = $this->set_place($place);
+ $sqlk = $sqlv = '';
+ foreach($place as $k=>$v) {
+ $sqlk .= ','.$k; $sqlv .= ",'$v'";
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table_place} ($sqlk) VALUES ($sqlv)");
+ $this->pid = DB::insert_id();
+ clear_upload($place['thumb'], $this->pid, $this->table_place);
+ return $this->pid;
+ }
+
+ function edit_place($place) {
+ $place = $this->set_place($place);
+ $sql = '';
+ foreach($place as $k=>$v) {
+ $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table_place} SET $sql WHERE pid=$this->pid");
+ clear_upload($place['thumb'], $this->pid, $this->table_place);
+ return true;
+ }
+
+ function get_one_place() {
+ return DB::get_one("SELECT * FROM {$this->table_place} WHERE pid='$this->pid'");
+ }
+
+ function get_list_place($condition = '1', $order = 'listorder DESC,pid DESC') {
+ global $MOD, $TYPE, $pages, $page, $pagesize, $offset, $sum, $items;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table_place} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $ads = array();
+ $result = DB::query("SELECT * FROM {$this->table_place} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['alt'] = $r['name'];
+ $r['name'] = set_style($r['name'], $r['style']);
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['width'] = $r['width'] ? $r['width'].'px' : '--';
+ $r['height'] = $r['height'] ? $r['height'].'px' : '--';
+ $r['typename'] = $TYPE[$r['typeid']];
+ $r['typeurl'] = $MOD['ad_url'].list_url($r['typeid']);
+ $ads[] = $r;
+ }
+ return $ads;
+ }
+
+ function get_place() {
+ $ads = array();
+ $result = DB::query("SELECT * FROM {$this->table_place} ORDER BY listorder DESC,pid DESC");
+ while($r = DB::fetch_array($result)) {
+ $ads[$r['pid']] = $r;
+ }
+ return $ads;
+ }
+
+ function order_place($listorder) {
+ if(!is_array($listorder)) return false;
+ foreach($listorder as $k=>$v) {
+ $k = intval($k);
+ $v = intval($v);
+ DB::query("UPDATE {$this->table_place} SET listorder=$v WHERE pid=$k");
+ }
+ return true;
+ }
+
+ function delete_place($pid) {
+ if(is_array($pid)) {
+ foreach($pid as $v) {
+ $this->delete_place($v);
+ }
+ } else {
+ $p = DB::get_one("SELECT * FROM {$this->table_place} WHERE pid=$pid");
+ DB::query("DELETE FROM {$this->table_place} WHERE pid=$pid");
+ $filename = $p['typeid'] > 5 ? 'ad_'.$p['moduleid'].'_d'.$p['typeid'].'.htm' : 'ad_'.$a['pid'].'_d0.htm';
+ file_del(DT_CACHE.'/htm/'.$filename);
+ file_del(DT_CACHE.'/htm/ad_'.$pid.'.htm');
+ file_del(DT_ROOT.'/file/script/A'.$pid.'.js');
+ $result = DB::query("SELECT aid FROM {$this->table} WHERE pid=$pid ORDER BY aid DESC");
+ while($r = DB::fetch_array($result)) {
+ $this->delete($r['aid']);
+ }
+ }
+ }
+
+ function is_ad($ad) {
+ global $L;
+ if(!is_array($ad)) return false;
+ if(!$ad['title']) return $this->_($L['pass_ad_title']);
+ if(!$ad['fromtime'] || !is_time($ad['fromtime'])) return $this->_($L['pass_ad_from']);
+ if(!$ad['totime'] || !is_time($ad['totime'])) return $this->_($L['pass_ad_end']);
+ if(datetotime($ad['fromtime']) > datetotime($ad['totime'])) return $this->_($L['pass_ad_bad_date']);
+ if($ad['typeid'] == 1 || $ad['typeid'] == 7) {
+ if(!$ad['code']) return $this->_($L['pass_ad_code']);
+ } else if($ad['typeid'] == 2) {
+ if(!$ad['text_name']) return $this->_($L['pass_ad_text_name']);
+ if(!$ad['text_url']) return $this->_($L['pass_ad_text_url']);
+ } else if($ad['typeid'] == 3) {
+ if(!$ad['image_src']) return $this->_($L['pass_ad_image_src']);
+ } else if($ad['typeid'] == 4) {
+ if(!$ad['video_src']) return $this->_($L['pass_ad_video_src']);
+ }
+ return true;
+ }
+
+ function set_ad($ad) {
+ global $_username;
+ $ad = array_map('ad_restore', $ad);
+ if(!$this->aid) $ad['addtime'] = DT_TIME;
+ $ad['edittime'] = DT_TIME;
+ $ad['editor'] = $_username;
+ $ad['fromtime'] = datetotime($ad['fromtime']);
+ $ad['totime'] = datetotime($ad['totime']);
+ $ad['username'] or $ad['username'] = $_username;
+ $ad['url'] = '';
+ if($ad['typeid'] == 2) {
+ $ad['url'] = $ad['text_url'];
+ } else if($ad['typeid'] == 3 || $ad['typeid'] == 5) {
+ $ad['url'] = $ad['image_url'];
+ } else if($ad['typeid'] == 4) {
+ $ad['url'] = $ad['video_url'];
+ }
+ return $ad;
+ }
+
+ function get_one() {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE aid='$this->aid'");
+ }
+
+ function get_list($condition = '1', $order = 'fromtime DESC') {
+ global $MOD, $TYPE, $pages, $page, $pagesize, $offset, $L, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $ads = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['fromdate'] = timetodate($r['fromtime'], 3);
+ $r['todate'] = timetodate($r['totime'], 3);
+ $r['days'] = $r['totime'] > DT_TIME ? intval(($r['totime']-DT_TIME)/86400) : 0;
+ if($r['totime'] < DT_TIME) {
+ $r['process'] = $L['status_expired'];
+ } else if($r['fromtime'] > DT_TIME) {
+ $r['process'] = $L['status_not_start'];
+ } else {
+ $r['process'] = $L['status_displaying'];
+ }
+ $ads[] = $r;
+ }
+ return $ads;
+ }
+
+ function add($ad) {
+ $ad = $this->set_ad($ad);
+ $sqlk = $sqlv = '';
+ foreach($ad as $k=>$v) {
+ $sqlk .= ','.$k; $sqlv .= ",'$v'";
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->aid = DB::insert_id();
+ DB::query("UPDATE {$this->table_place} SET ads=ads+1 WHERE pid='$ad[pid]'");
+ clear_upload($ad['image_src'].$ad['video_src'].$ad['code'], $this->aid, $this->table);
+ return $this->aid;
+ }
+
+ function edit($ad) {
+ $ad = $this->set_ad($ad);
+ $sql = '';
+ foreach($ad as $k=>$v) {
+ $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE aid=$this->aid");
+ clear_upload($ad['image_src'].$ad['video_src'].$ad['code'], $this->aid, $this->table);
+ return true;
+ }
+
+ function delete($aid) {
+ if(is_array($aid)) {
+ foreach($aid as $v) {
+ $this->delete($v);
+ }
+ } else {
+ $this->aid = $aid;
+ $a = $this->get_one();
+ $filename = ad_name($a);
+ file_del(DT_CACHE.'/htm/'.$filename);
+ $userid = get_user($a['username']);
+ if($a['image_src']) delete_upload($a['image_src'], $userid);
+ if($a['video_src']) delete_upload($a['video_src'], $userid);
+ DB::query("DELETE FROM {$this->table} WHERE aid=$aid");
+ DB::query("UPDATE {$this->table_place} SET ads=ads-1 WHERE pid=$a[pid]");
+ }
+ }
+
+ function order_ad($listorder) {
+ if(!is_array($listorder)) return false;
+ foreach($listorder as $k=>$v) {
+ $k = intval($k);
+ $v = intval($v);
+ DB::query("UPDATE {$this->table} SET listorder=$v WHERE aid=$k");
+ }
+ return true;
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+
+function ad_restore($string) {
+ return str_replace(array('union'), array('union'), $string);
+}
+?>
\ No newline at end of file
diff --git a/module/extend/ad.htm.php b/module/extend/ad.htm.php
new file mode 100644
index 0000000..f362f4a
--- /dev/null
+++ b/module/extend/ad.htm.php
@@ -0,0 +1,130 @@
+get_one("SELECT * FROM {$DT_PRE}ad WHERE aid=$aid");
+$p = $db->get_one("SELECT * FROM {$DT_PRE}ad_place WHERE pid=$a[pid]");
+if(!$p || !$a) return false;
+$DT_PC = $GLOBALS['DT_PC'] = 1;
+$ad_moduleid = $p['moduleid'];
+$pid = $p['pid'];
+$typeid = $p['typeid'];
+$width = $p['width'];
+$height = $p['height'];
+$areaid = intval($a['areaid']);
+$fileroot = DT_CACHE.'/htm/';
+$filename = $fileroot.ad_name($a);
+$template = $p['template'] ? $p['template'] : 'ad';
+if($p['code']) {
+ $default = $typeid > 5 ? 'ad_'.$ad_moduleid.'_d'.$typeid.'.htm' : 'ad_'.$pid.'_d0.htm';
+ file_put($fileroot.$default, ''.$p['code']);
+}
+if($typeid == 7) {
+ $totime = 0;
+ $code = '';
+ $ad = $db->query("SELECT * FROM {$DT_PRE}ad WHERE pid=$p[pid] AND status=3 AND key_moduleid=$a[key_moduleid] AND key_catid=$a[key_catid] AND key_word='$a[key_word]' AND fromtime<$DT_TIME AND totime>$DT_TIME AND areaid=$areaid ORDER BY listorder ASC,addtime ASC");
+ while($t = $db->fetch_array($ad)) {
+ if($t['totime'] > $totime) $totime = $t['totime'];
+ $code .= $t['code'];
+ }
+ if($code) {
+ file_put($filename, ''.$code.'
');
+ } else {
+ file_del($filename);
+ }
+} else if($typeid == 6) {
+ $totime = 0;
+ $bmid = $moduleid;
+ $moduleid = $ad_moduleid;
+ $tags = array();
+ $ad_module = $MODULE[$ad_moduleid]['module'];
+ $showpage = 0;
+ $id = $ad_moduleid == 4 ? 'userid' : 'itemid';
+ $pages = '';
+ $datetype = 5;
+ $ad = $db->query("SELECT * FROM {$DT_PRE}ad WHERE pid=$p[pid] AND status=3 AND key_moduleid=$a[key_moduleid] AND key_catid=$a[key_catid] AND key_word='$a[key_word]' AND fromtime<$DT_TIME AND totime>$DT_TIME AND areaid=$areaid ORDER BY listorder ASC,addtime ASC");
+ while($t = $db->fetch_array($ad)) {
+ if(!isset($MODULE[$moduleid])) continue;
+ if($t['totime'] > $totime) $totime = $t['totime'];
+ $d = $db->get_one("SELECT * FROM ".get_table($ad_moduleid)." WHERE `{$id}`=$t[key_id]");
+ if($d) {
+ if($t['stats']) {
+ $d['linkurl'] = DT_PATH.'api/redirect.php?aid='.$t['aid'];
+ } else {
+ if(strpos($d['linkurl'], '://') === false) $d['linkurl'] = $MODULE[$ad_moduleid]['linkurl'].$d['linkurl'];
+ }
+ $d['alt'] = $d['title'];
+ $d['title'] = set_style($d['title'], $d['style']);
+ $tags[] = $d;
+ }
+ }
+ if($tags) {
+ ob_start();
+ include template($template, 'chip');
+ $data = ob_get_contents();
+ ob_clean();
+ file_put($filename, ''.$data);
+ } else {
+ file_del($filename);
+ }
+ $moduleid = $bmid;
+} else if($typeid == 5) {
+ $totime = 0;
+ $tags = array();
+ $ad = $db->query("SELECT * FROM {$DT_PRE}ad WHERE pid=$p[pid] AND status=3 AND fromtime<$DT_TIME AND totime>$DT_TIME AND areaid=$areaid ORDER BY listorder ASC,addtime ASC");
+ while($t = $db->fetch_array($ad)) {
+ if(strpos($t['image_src'], '://') === false) $t['image_src'] = DT_PATH.$t['image_src'];
+ $t['alt'] = $t['image_alt'];
+ $t['thumb'] = $t['image_src'];
+ $t['linkurl'] = $t['stats'] ? DT_PATH.'api/redirect.php?aid='.$t['aid'] : $t['url'];
+ if($t['totime'] > $totime) $totime = $t['totime'];
+ $tags[] = $t;
+ }
+ if($tags) {
+ ob_start();
+ include template($template, 'chip');
+ $data = ob_get_contents();
+ ob_clean();
+ file_put($filename, ''.$data);
+ } else {
+ file_del($filename);
+ }
+} else {
+ $ad = $db->get_one("SELECT * FROM {$DT_PRE}ad WHERE pid=$p[pid] AND status=3 AND fromtime<$DT_TIME AND totime>$DT_TIME AND areaid=$areaid ORDER BY fromtime DESC");
+ if($ad) {
+ extract($ad);
+ if($url && $stats) $url = DT_PATH.'api/redirect.php?aid='.$aid;
+ if($typeid == 2) {
+ $text_name = set_style($text_name, $text_style);
+ } else if($typeid == 3) {
+ if(strtolower(file_ext($image_src)) == 'mp4') {
+ $typeid = 4;
+ $video_src = $image_src;
+ }
+ } else if($typeid == 4) {
+ if(in_array(strtolower(file_ext($video_src)), array('jpg', 'jpeg', 'png', 'gif', 'bmp'))) {
+ $typeid = 3;
+ $image_src = $video_src;
+ }
+ }
+ ob_start();
+ include template($template, 'chip');
+ $data = ob_get_contents();
+ ob_clean();
+ file_put($filename, ''.$data);
+ if($typeid > 1) {
+ $data = 'document.write(\''.dwrite($data).'\');';
+ file_put(DT_ROOT.'/file/script/A'.$p['pid'].'.js', $data);
+ }
+ } else {
+ file_del($filename);
+ if($typeid > 1) {
+ if($p['code']) {
+ file_put(DT_ROOT.'/file/script/A'.$p['pid'].'.js', $p['code']);
+ } else {
+ file_del(DT_ROOT.'/file/script/A'.$p['pid'].'.js');
+ }
+ }
+ }
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/extend/ad.inc.php b/module/extend/ad.inc.php
new file mode 100644
index 0000000..5914712
--- /dev/null
+++ b/module/extend/ad.inc.php
@@ -0,0 +1,71 @@
+pid = $pid;
+ $p = $do->get_one_place();
+ $p or message($L['not_ad_place']);
+ $head_title = lang($L['view_ad_place'], array($p['name']));
+ $title = $p['name'];
+ $typeid = $p['typeid'];
+ } else if($aid) {
+ $do->aid = $aid;
+ $a = $do->get_one();
+ $a or message($L['not_ad']);
+ $head_title = lang($L['view_ad'], array($a['title']));
+ $title = $a['title'];
+ $pid = $a['pid'];
+ $typeid = $a['typeid'];
+ if($typeid > 5) {
+ $ad_moduleid = $a['key_moduleid'];
+ $ad_catid = $a['key_catid'];
+ $ad_kw = $a['key_word'];
+ }
+ }
+ $action = 'view';
+} else {
+ $destoon_task = "moduleid=$moduleid&html=ad";
+ $head_title = $L['ad_title'];
+ if($catid) $typeid = $catid;
+ $condition = 'open=1';
+ if($keyword) $condition .= match_kw('name', $modes[$mode]);
+ if($typeid) {
+ isset($TYPE[$typeid]) or dheader($EXT['ad_url']);
+ $condition .= " AND typeid=$typeid";
+ $head_title = $TYPE[$typeid].$DT['seo_delimiter'].$head_title;
+ }
+ $lists = $do->get_list_place($condition, 'listorder DESC,pid DESC');
+}
+$template = $ext;
+if($DT_PC) {
+ $destoon_task = "moduleid=$moduleid&html=$ext";
+ if($EXT['mobile_enable']) $head_mobile = str_replace($url, $mob, $DT_URL);
+} else {
+ if($itemid) {
+ //
+ } else {
+ $pages = mobile_pages($items, $page, $pagesize);
+ }
+ $head_name = $L['ad_title'];
+ if($sns_app) $seo_title = $site_name;
+ $foot = '';
+}
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/extend/address.inc.php b/module/extend/address.inc.php
new file mode 100644
index 0000000..0c5eb72
--- /dev/null
+++ b/module/extend/address.inc.php
@@ -0,0 +1,22 @@
+
\ No newline at end of file
diff --git a/module/extend/admin/ad.inc.php b/module/extend/admin/ad.inc.php
new file mode 100644
index 0000000..0921984
--- /dev/null
+++ b/module/extend/admin/ad.inc.php
@@ -0,0 +1,322 @@
+pid = $pid;
+$do->aid = $aid;
+$currency = $MOD['ad_currency'];
+$unit = $currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+$this_forward = '?moduleid='.$moduleid.'&file='.$file.'&action=list&pid='.$pid.'&page='.$page;
+$this_place_forward = '?moduleid='.$moduleid.'&file='.$file.'&page='.$page;
+switch($action) {
+ case 'add':
+ if($submit) {
+ $pid or msg('未指定广告位');
+ if($do->is_ad($post)) {
+ $do->add($post);
+ $aid = $do->aid;
+ if($post['typeid'] == 6) $MOD['linkurl'] = $MODULE[$post['key_moduleid']]['linkurl'];
+ tohtml('ad', $module);
+ dmsg('添加成功', $this_forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ if(!$pid) {
+ $t = $db->get_one("SELECT pid FROM {$DT_PRE}ad_place ORDER BY pid DESC");
+ if($t) {
+ $pid = $t['pid'];
+ $do->pid = $pid;
+ } else {
+ msg('未指定广告位');
+ }
+ }
+ $p = $do->get_one_place();
+ $fromtime = timetodate($DT_TIME, 3).' 00:00:00';
+ $title = $introduce = $code = $url = $totime = $text_name = $text_url = $text_title = $text_style = $image_src = $image_url = $image_alt = $video_src = $video_url = $key_word = $key_id = $note = '';
+ $video_auto = $video_loop = $stats = 1;
+ $key_catid = $hits = 0;
+ $username = $_username;
+ $status = 3;
+ $menuid = 0;
+ include tpl('ad_edit', $module);
+ }
+ break;
+ case 'edit':
+ $aid or msg();
+ if($submit) {
+ if($do->is_ad($post)) {
+ $do->edit($post);
+ if($pid != $post['pid']) {
+ $db->query("UPDATE {$DT_PRE}ad_place SET ads=ads+1 WHERE pid=$post[pid]");
+ $db->query("UPDATE {$DT_PRE}ad_place SET ads=ads-1 WHERE pid=$pid");
+ }
+ if($post['typeid'] == 6) $MOD['linkurl'] = $MODULE[$post['key_moduleid']]['linkurl'];
+ tohtml('ad', $module);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($do->get_one());
+ $do->pid = $pid;
+ $p = $do->get_one_place();
+ $fromtime = timetodate($fromtime, 6);
+ $totime = timetodate($totime, 6);
+ $menuid = $status == 2 ? 2 : 1;
+ include tpl('ad_edit', $module);
+ }
+ break;
+ case 'delete':
+ $aids or msg('请选择广告');
+ $do->delete($aids);
+ dmsg('删除成功', $forward);
+ break;
+ case 'order_ad':
+ $do->order_ad($listorder);
+ dmsg('排序成功', $forward);
+ break;
+ case 'list':
+ $P = $do->get_place();
+ $sfields = array('按条件', '广告名称', '广告介绍', '广告代码', '关键词', '文字链接名称', '文字链接地址', '文字链接提示', '图片地址', '图片链接地址', '图片链接提示', '视频地址', '视频链接地址', '会员名', '备注');
+ $dfields = array('title', 'title', 'introduce', 'code', 'key_word', 'text_name', 'text_url', 'text_title', 'image_src', 'image_url', 'image_alt', 'video_src', 'video_url', 'username', 'note');
+ $sorder = array('结果排序方式', '添加时间降序', '添加时间升序', '修改时间降序', '修改时间升序', '开始时间降序', '开始时间升序', '结束时间降序', '结束时间升序', '点击次数降序', '点击次数升序', '费用总额降序', '费用总额升序');
+ $dorder = array('pid DESC,listorder ASC,addtime ASC', 'addtime DESC', 'addtime ASC', 'edittime DESC', 'edittime ASC', 'fromtime DESC', 'fromtime ASC', 'totime DESC', 'totime ASC', 'hits DESC', 'hits ASC', 'amount DESC', 'amount ASC');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ isset($typeid) or $typeid = 0;
+ $areaid = isset($areaid) ? intval($areaid) : 0;
+ if($job == 'check' && $order == 0) $order = 1;
+ $pid or $pid = '';
+ isset($datetype) && in_array($datetype, array('edittime', 'addtime', 'fromtime', 'totime')) or $datetype = 'totime';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+
+ $condition = $job == 'check' ? "status=2" : "status=3";
+ if($pid) $condition .= " AND pid=$pid";
+ if($typeid) $condition .= " AND typeid=$typeid";
+ $type_select = $pid ? '' : dselect($TYPE, 'typeid', '广告类型', $typeid).' ';
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+
+ $lists = $do->get_list($condition, $dorder[$order]);
+ include tpl('ad_list', $module);
+ break;
+ case 'stats':
+ $sfields = array('按条件', '会员', 'IP', '客户端', '操作系统', '浏览器');
+ $dfields = array('username', 'username', 'ip', 'ua', 'os', 'bs');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $ip = isset($ip) ? $ip : '';
+ $pc = isset($pc) ? intval($pc) : -1;
+ $robot = isset($robot) ? $robot : '';
+ $username = isset($username) ? $username : '';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ $aid or $aid = '';
+ $pid or $pid = '';
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $condition = '1';
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($ip) $condition .= " AND ip='$ip'";
+ if($aid) $condition .= " AND aid=$aid";
+ if($pid) $condition .= " AND pid=$pid";
+ if($pc > -1) $condition .= " AND pc=$pc";
+ if($username) $condition .= " AND username='$username'";
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}ad_stats WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}ad_stats WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['area'] = ip2area($r['ip']);
+ $r['addtime'] = timetodate($r['addtime'], 6);
+ $lists[] = $r;
+ }
+ include tpl('ad_stats', $module);
+ break;
+ case 'add_place':
+ if($submit) {
+ if($do->is_place($post)) {
+ $do->add_place($post);
+ dmsg('广告位添加成功,请添加广告', '?moduleid='.$moduleid.'&file='.$file.'&id='.$do->itemid.'&tm='.($DT_TIME+5));
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ $name = $style = $thumb = $introduce = $price = $code = $width = $height = $template = '';
+ $typeid = $open = 1;
+ $menuid = 0;
+ include tpl('ad_edit_place', $module);
+ }
+ break;
+ case 'edit_place':
+ $pid or msg();
+ if($submit) {
+ if($do->is_place($post)) {
+ $do->edit_place($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ $r = $do->get_one_place();
+ $mid = $r['moduleid'];
+ unset($r['moduleid']);
+ extract($r);
+ $menuid = 1;
+ include tpl('ad_edit_place', $module);
+ }
+ break;
+ case 'view':
+ $url = $EXT['ad_url'];
+ $mob = $EXT['ad_mob'];
+ $destoon_task = '';
+ $filename = '';
+ $ad_moduleid = 0;
+ if($pid) {
+ $p = $do->get_one_place();
+ $head_title = '广告位 ['.$p['name'].'] 预览';
+ $title = $p['name'];
+ $typeid = $p['typeid'];
+ } else if($aid) {
+ $a = $do->get_one();
+ $head_title = '广告 ['.$a['title'].'] 预览';
+ $title = $a['title'];
+ $pid = $a['pid'];
+ $typeid = $a['typeid'];
+ if($typeid > 5) {
+ $ad_moduleid = $a['key_moduleid'];
+ $ad_catid = $a['key_catid'];
+ $ad_kw = $a['key_word'];
+ }
+ }
+ include template('ad', $module);
+ break;
+ case 'runcode':
+ $destoon_task = '';
+ $codes = stripslashes($codes);
+ include tpl('ad_runcode', $module);
+ break;
+ case 'delete_place':
+ $pids or msg('请选择广告位');
+ $do->delete_place($pids);
+ dmsg('删除成功', $forward ? $forward : $this_place_forward);
+ break;
+ case 'order_place':
+ $do->order_place($listorder);
+ dmsg('排序成功', $forward ? $forward : $this_place_forward);
+ break;
+ case 'html':
+ $all = (isset($all) && $all) ? 1 : 0;
+ $one = (isset($one) && $one) ? 1 : 0;
+ if(!isset($num)) {
+ $num = 100;
+ cache_clear_ad(1);
+ $result = $db->query("SELECT * FROM {$DT_PRE}ad_place WHERE ads=0 AND code<>''");
+ $totime = $DT_TIME+86400*365*10;
+ while($r = $db->fetch_array($result)) {
+ if($r['typeid'] > 5) {
+ $filename = 'ad_'.$r['moduleid'].'_d'.$r['typeid'].'.htm';
+ } else {
+ $filename = 'ad_'.$r['pid'].'_d0.htm';
+ }
+ $data = ''.$r['code'];
+ file_put(DT_CACHE.'/htm/'.$filename, $data);
+ if($r['typeid'] > 1 && $r['typeid'] < 6) {
+ $data = 'document.write(\''.dwrite($r['code']).'\');';
+ file_put(DT_ROOT.'/file/script/A'.$r['pid'].'.js', $data);
+ }
+ }
+ }
+ if(!isset($fid)) {
+ $r = $db->get_one("SELECT min(aid) AS fid FROM {$DT_PRE}ad");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ }
+ isset($sid) or $sid = $fid;
+ if(!isset($tid)) {
+ $r = $db->get_one("SELECT max(aid) AS tid FROM {$DT_PRE}ad");
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ }
+ $_moduleid = $moduleid;
+ if($fid <= $tid) {
+ $_result = $db->query("SELECT * FROM {$DT_PRE}ad WHERE aid>=$fid ORDER BY aid LIMIT 0,$num");
+ if($db->affected_rows($_result)) {
+ while($a = $db->fetch_array($_result)) {
+ $aid = $a['aid'];
+ if($a['typeid'] == 6) {
+ $MOD['linkurl'] = $MODULE[$a['key_moduleid']]['linkurl'];
+ }
+ tohtml('ad', $module);
+ }
+ $aid += 1;
+ } else {
+ $aid = $fid + $num;
+ }
+ } else {
+ if($all) dheader('?moduleid=3&file=announce&action=html&all=1&one='.$one);
+ dmsg('生成成功', "?moduleid=$_moduleid&file=$file");
+ }
+ msg('ID从'.$fid.'至'.($aid-1).'[广告]生成成功'.progress($sid, $fid, $tid), "?moduleid=$_moduleid&file=$file&action=$action&sid=$sid&fid=$aid&tid=$tid&num=$num&all=$all&one=$one");
+ break;
+ default:
+ $sorder = array('结果排序方式', '添加时间降序', '添加时间升序', '更新时间降序', '更新时间升序', '广告价格降序', '广告价格升序', '广告数量降序', '广告数量升序', '广告宽度降序', '广告宽度升序', '广告高度降序', '广告高度升序');
+ $dorder = array('listorder DESC,pid DESC', 'addtime DESC', 'addtime ASC', 'edittime DESC', 'eidttime ASC', 'price DESC', 'price ASC', 'ads DESC', 'ads ASC', 'width DESC', 'width ASC', 'height DESC', 'height ASC');
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ isset($typeid) or $typeid = 0;
+ $width = isset($width) ? intval($width) : '';
+ $width or $width = '';
+ $height = isset($height) ? intval($height) : '';
+ $height or $height = '';
+ $open = isset($open) ? $open : -1;
+ $thumb = isset($thumb) ? intval($thumb) : 0;
+
+ $type_select = dselect($TYPE, 'typeid', '', $typeid);
+ $order_select = dselect($sorder, 'order', '', $order);
+
+ $condition = '1';
+ if($keyword) $condition .= match_kw('name', $keyword);
+ if($typeid) $condition .= " AND typeid=$typeid";
+ if($width) $condition .= " AND width=$width";
+ if($height) $condition .= " AND height=$height";
+ if($thumb) $condition .= " AND thumb<>''";
+ if($open > -1) $condition .= " AND open=$open";
+ $lists = $do->get_list_place($condition, $dorder[$order]);
+ include tpl('ad', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/extend/admin/announce.inc.php b/module/extend/admin/announce.inc.php
new file mode 100644
index 0000000..140f12c
--- /dev/null
+++ b/module/extend/admin/announce.inc.php
@@ -0,0 +1,121 @@
+pass($post)) {
+ $do->add($post);
+ dmsg('添加成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&typeid='.$post['typeid']);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $addtime = timetodate($DT_TIME);
+ $typeid = 0;
+ $menuid = 0;
+ include tpl('announce_edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($do->get_one());
+ $addtime = timetodate($addtime);
+ $fromtime = $fromtime ? timetodate($fromtime) : '';
+ $totime = $totime ? timetodate($totime) : '';
+ $menuid = 1;
+ include tpl('announce_edit', $module);
+ }
+ break;
+ case 'order':
+ $do->order($listorder);
+ dmsg('排序成功', $forward);
+ break;
+ case 'html':
+ $all = (isset($all) && $all) ? 1 : 0;
+ $one = (isset($one) && $one) ? 1 : 0;
+ if(!isset($num)) {
+ $num = 50;
+ }
+ if(!isset($fid)) {
+ $r = $db->get_one("SELECT min(itemid) AS fid FROM {$DT_PRE}announce");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ }
+ isset($sid) or $sid = $fid;
+ if(!isset($tid)) {
+ $r = $db->get_one("SELECT max(itemid) AS tid FROM {$DT_PRE}announce");
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ }
+ if($fid <= $tid) {
+ $result = $db->query("SELECT itemid,linkurl,islink FROM {$DT_PRE}announce WHERE itemid>=$fid ORDER BY itemid LIMIT 0,$num");
+ if($db->affected_rows($result)) {
+ while($r = $db->fetch_array($result)) {
+ $itemid = $r['itemid'];
+ if(!$r['islink']) {
+ $linkurl = $do->linkurl($itemid);
+ if($linkurl != $r['linkurl']) $db->query("UPDATE {$DT_PRE}announce SET linkurl='$linkurl' WHERE itemid=$itemid");
+ }
+ }
+ $itemid += 1;
+ } else {
+ $itemid = $fid + $num;
+ }
+ } else {
+ if($all) dheader('?moduleid=3&file=webpage&action=html&all=1&one='.$one);
+ dmsg('更新成功', "?moduleid=$moduleid&file=$file");
+ }
+ msg('ID从'.$fid.'至'.($itemid-1).'[公告]更新成功'.progress($sid, $fid, $tid), "?moduleid=$moduleid&file=$file&action=$action&sid=$sid&fid=$itemid&tid=$tid&num=$num&all=$all&one=$one");
+ break;
+ case 'delete':
+ $itemid or msg('请选择公告');
+ $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择公告');
+ $level = intval($level);
+ $do->level($itemid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ default:
+ $sorder = array('结果排序方式', '添加时间降序', '添加时间升序', '浏览次数降序', '浏览次数升序', '开始时间降序', '开始时间升序', '到期时间降序', '到期时间升序');
+ $dorder = array('listorder DESC,addtime DESC', 'addtime DESC', 'addtime ASC', 'hits DESC', 'hits ASC', 'fromtime DESC', 'fromtime ASC', 'totime DESC', 'totime ASC');
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ isset($typeid) or $typeid = 0;
+ $level = isset($level) ? intval($level) : 0;
+ $type_select = type_select('announce', 1, 'typeid', '请选择分类', $typeid);
+ $order_select = dselect($sorder, 'order', '', $order);
+ $level_select = level_select('level', '级别', $level, 'all');
+ $condition = '1';
+ if($_areaids) $condition .= " AND areaid IN (".$_areaids.")";//CITY
+ if($keyword) $condition .= match_kw('title', $keyword);
+ if($typeid) $condition .= " AND typeid IN (".type_child($typeid, $TYPE).")";
+ if($level) $condition .= $level > 9 ? " AND level>0" : " AND level=$level";
+ if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ $lists = $do->get_list($condition, $dorder[$order]);
+ include tpl('announce', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/extend/admin/config.inc.php b/module/extend/admin/config.inc.php
new file mode 100644
index 0000000..7ff7b1c
--- /dev/null
+++ b/module/extend/admin/config.inc.php
@@ -0,0 +1,74 @@
+
\ No newline at end of file
diff --git a/module/extend/admin/form.inc.php b/module/extend/admin/form.inc.php
new file mode 100644
index 0000000..c3fd4d8
--- /dev/null
+++ b/module/extend/admin/form.inc.php
@@ -0,0 +1,376 @@
+pass($post)) {
+ $do->add($post);
+ dmsg('添加成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $addtime = timetodate($DT_TIME);
+ $maxanswer = 1;
+ $typeid = 0;
+ $menuid = 0;
+ include tpl('form_edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($do->get_one());
+ $addtime = timetodate($addtime);
+ $fromtime = $fromtime ? timetodate($fromtime) : '';
+ $totime = $totime ? timetodate($totime) : '';
+ $menuid = 1;
+ include tpl('form_edit', $module);
+ }
+ break;
+ case 'html':
+ $all = (isset($all) && $all) ? 1 : 0;
+ $one = (isset($one) && $one) ? 1 : 0;
+ if(!isset($num)) {
+ $num = 50;
+ }
+ if(!isset($fid)) {
+ $r = $db->get_one("SELECT min(itemid) AS fid FROM {$DT_PRE}form");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ }
+ isset($sid) or $sid = $fid;
+ if(!isset($tid)) {
+ $r = $db->get_one("SELECT max(itemid) AS tid FROM {$DT_PRE}form");
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ }
+ if($fid <= $tid) {
+ $result = $db->query("SELECT itemid,linkurl FROM {$DT_PRE}form WHERE itemid>=$fid ORDER BY itemid LIMIT 0,$num");
+ if($db->affected_rows($result)) {
+ while($r = $db->fetch_array($result)) {
+ $itemid = $r['itemid'];
+ $linkurl = $do->linkurl($itemid);
+ if($linkurl != $r['linkurl']) $db->query("UPDATE {$DT_PRE}form SET linkurl='$linkurl' WHERE itemid=$itemid");
+ }
+ $itemid += 1;
+ } else {
+ $itemid = $fid + $num;
+ }
+ } else {
+ if($all) dheader('?moduleid=3&file=html&action=html&all=1&one='.$one);
+ dmsg('更新成功', "?moduleid=$moduleid&file=$file");
+ }
+ msg('ID从'.$fid.'至'.($itemid-1).'[表单]更新成功'.progress($sid, $fid, $tid), "?moduleid=$moduleid&file=$file&action=$action&sid=$sid&fid=$itemid&tid=$tid&num=$num&all=$all&one=$one");
+ break;
+ case 'delete':
+ $itemid or msg('请选择表单');
+ $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择表单');
+ $level = intval($level);
+ $do->level($itemid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ case 'record':
+ $formid = intval($formid);
+ $formid or msg();
+ $do->itemid = $formid;
+ $P = $do->get_one();
+ $P or exit('表单不存在');
+ $I = $do->item_all("formid=$formid");
+ $condition = "formid=$formid";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ if($keyword) $condition .= " AND (ip LIKE '%$keyword%' OR username LIKE '%$keyword%')";
+ $lists = $do->get_list_record($condition);
+ include tpl('form_record', $module);
+ break;
+ case 'question':
+ $fid = isset($fid) ? intval($fid) : 0;
+ $fid or msg();
+ $do->itemid = $fid;
+ $F = $do->get_one();
+ $F or msg('表单不存在');
+ $menus = array (
+ array('添加选项', '?moduleid='.$moduleid.'&file='.$file.'&action=question&fid='.$fid.'&job=add'),
+ array('复制选项', '?moduleid='.$moduleid.'&file='.$file.'&action=question&fid='.$fid.'&job=copy'),
+ array('选项管理', '?moduleid='.$moduleid.'&file='.$file.'&action=question&fid='.$fid),
+ array('回复记录', '?moduleid='.$moduleid.'&file='.$file.'&action=answer&fid='.$fid.'&job=record'),
+ array('统计报表', '?moduleid='.$moduleid.'&file='.$file.'&action=answer&fid='.$fid.'&job=stats'),
+ );
+ $TYPE = array('单行文本(text)', '多行文本(textarea)', '列表选择(select)', '复选框(checkbox)', '单选框(radio)');
+ if($job == 'add') {
+ if($submit) {
+ if(!$post['name']) msg('请填写选项名称');
+ if($post['type'] > 1) {
+ if(!$post['value']) msg('请填写备选值');
+ if(strpos($post['value'], '|') === false) msg('最少需要设定2个备选值');
+ if($post['type'] != 3 && substr_count($post['value'], '(*)') > 1) msg('只能默认选中一个值');
+ if(substr_count($post['value'], '其他') > 1) msg('其他选择值只能有一个');
+ }
+ if(!preg_match("/^([0-9]{1,})\-([0-9]{1,})$/", $post['required'])) $post['required'] = abs(intval($post['required']));
+ $post['fid'] = $fid;
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ $sqlk .= ','.$k; $sqlv .= ",'$v'";
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ $db->query("INSERT INTO {$table}_question ($sqlk) VALUES ($sqlv)");
+ dmsg('添加成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&fid='.$fid);
+ } else {
+ $qid = 0;
+ $type = 4;
+ $required = '1';
+ $name = $value = $extend = '';
+ $menuid = 0;
+ include tpl('form_question_edit', $module);
+ }
+ } else if($job == 'edit') {
+ $qid = isset($qid) ? intval($qid) : 0;
+ $qid or msg();
+ $Q = $db->get_one("SELECT * FROM {$table}_question WHERE qid=$qid");
+ $Q or msg('选项不存在');
+ if($submit) {
+ if(!$post['name']) msg('请填写选项名称');
+ if($post['type'] > 1) {
+ if(!$post['value']) msg('请填写备选值');
+ if(strpos($post['value'], '|') === false) msg('最少需要设定2个备选值');
+ if($post['type'] != 3 && substr_count($post['value'], '(*)') > 1) msg('只能默认选中一个值');
+ if(substr_count($post['value'], '其他') > 1) msg('其他选择值只能有一个');
+ }
+ if(!preg_match("/^([0-9]{1,})\-([0-9]{1,})$/", $post['required'])) $post['required'] = abs(intval($post['required']));
+ $sql = '';
+ foreach($post as $k=>$v) {
+ $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ $db->query("UPDATE {$table}_question SET $sql WHERE qid=$qid");
+ dmsg('修改成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&fid='.$fid);
+ } else {
+ extract($Q);
+ $menuid = 1;
+ include tpl('form_question_edit', $module);
+ }
+ } else if($job == 'delete') {
+ $qid = isset($qid) ? intval($qid) : 0;
+ $qid or msg();
+ $db->query("DELETE FROM {$table}_question WHERE qid=$qid");
+ dmsg('删除成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&fid='.$fid);
+ } else if($job == 'order') {
+ is_array($listorder) or msg();
+ foreach($listorder as $k=>$v) {
+ $k = intval($k);
+ $v = intval($v);
+ $db->query("UPDATE {$table}_question SET listorder=$v WHERE qid=$k");
+ }
+ dmsg('排序成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&fid='.$fid);
+ } else if($job == 'copy') {
+ if($submit) {
+ if($type) {
+ $ffid = intval($ffid);
+ $ffid or msg('请填写表单ID');
+ $ffid != $fid or msg('表单ID与当前表单相同');
+ $condition = "fid=$ffid";
+ } else {
+ $fqid = intval($fqid);
+ $fqid or msg('请填写选项ID');
+ $condition = "qid=$fqid";
+ }
+ $i = 0;
+ $result = $db->query("SELECT * FROM {$table}_question WHERE {$condition}");
+ while($r = $db->fetch_array($result)) {
+ if($name) {
+ $n = daddslashes($r['name']);
+ $t = $db->get_one("SELECT * FROM {$table}_question WHERE fid=$fid AND name='$n'");
+ if($t) {
+ if($type) continue;
+ msg('选项名称 ['.$r['name'].'] 已存在');
+ }
+ }
+ unset($r['qid']);
+ $r['fid'] = $fid;
+ $post = daddslashes($r);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ $sqlk .= ','.$k; $sqlv .= ",'$v'";
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ $db->query("INSERT INTO {$table}_question ($sqlk) VALUES ($sqlv)");
+ $i++;
+ }
+ if($i) dmsg('复制成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&fid='.$fid);
+ msg('选项不存在或存在同名');
+ } else {
+ include tpl('form_question_copy', $module);
+ }
+ } else {
+ $condition = "fid=$fid";
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table}_question WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table}_question WHERE $condition ORDER BY listorder ASC,qid ASC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $lists[] = $r;
+ }
+ if($F['question'] != $items) $db->query("UPDATE {$table} SET question=$items WHERE itemid=$fid");
+ include tpl('form_question', $module);
+ }
+ break;
+ case 'answer':
+ $fid = isset($fid) ? intval($fid) : 0;
+ $fid or msg();
+ $do->itemid = $fid;
+ $F = $do->get_one();
+ $F or msg('表单不存在');
+ $menus = array (
+ array('添加选项', '?moduleid='.$moduleid.'&file='.$file.'&action=question&fid='.$fid.'&job=add'),
+ array('复制选项', '?moduleid='.$moduleid.'&file='.$file.'&action=question&fid='.$fid.'&job=copy'),
+ array('选项管理', '?moduleid='.$moduleid.'&file='.$file.'&action=question&fid='.$fid),
+ array('回复记录', '?moduleid='.$moduleid.'&file='.$file.'&action=answer&fid='.$fid.'&job=record'),
+ array('统计报表', '?moduleid='.$moduleid.'&file='.$file.'&action=answer&fid='.$fid.'&job=stats'),
+ );
+ if($job == 'show') {
+ $rid = isset($rid) ? intval($rid) : 0;
+ $rid or msg();
+ $R = $db->get_one("SELECT * FROM {$table}_record WHERE rid=$rid");
+ $R or msg('记录不存在');
+ $Q = array();
+ $result = $db->query("SELECT * FROM {$table}_question WHERE fid=$fid ORDER BY listorder ASC,qid ASC");
+ while($r = $db->fetch_array($result)) {
+ $Q[$r['qid']] = $r;
+ }
+ $A = array();
+ $result = $db->query("SELECT * FROM {$table}_answer WHERE rid=$rid ORDER BY rid ASC");
+ while($r = $db->fetch_array($result)) {
+ if($Q[$r['qid']]['type'] == 1) {
+ $r['content'] = nl2br($r['content']);
+ } else if($Q[$r['qid']]['type'] == 3) {
+ $r['content'] = substr($r['content'], 1, -1);
+ }
+ $A[$r['qid']] = $r;
+ }
+ include tpl('form_answer_show', $module);
+ } else if($job == 'delete') {
+ $rid = isset($rid) ? intval($rid) : 0;
+ $rid or msg();
+ $R = $db->get_one("SELECT * FROM {$table}_record WHERE rid=$rid");
+ $R or msg('记录不存在');
+ $db->query("DELETE FROM {$table}_record WHERE rid=$rid");
+ $db->query("DELETE FROM {$table}_answer WHERE rid=$rid");
+ dmsg('删除成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&fid='.$fid);
+ } else if($job == 'stats') {
+ $F['answer'] > 0 or msg('数据不足,无法生成报表');
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table}_question WHERE fid=$fid AND type>1 ORDER BY listorder ASC,qid ASC");
+ while($r = $db->fetch_array($result)) {
+ $id = $r['qid'];
+ $t = array();
+ $t['title'] = $r['name'];
+ $xd = $yd = '';
+ $o = explode('|', str_replace('(*)', '', $r['value']));
+ foreach($o as $k=>$v) {
+ if($k) { $xd .= ','; $yd .= ','; }
+ if($r['type'] == 3) {
+ $n = $db->count($table.'_answer', "qid=$id AND content LIKE '%,$v,%'");
+ } else {
+ $n = $db->count($table.'_answer', "qid=$id AND content='$v'");
+ }
+ $xd .= "'".$v."'";
+ $yd .= "{value:".$n.", name:'".$v."'}";
+ }
+ $t['xd'] = $xd;
+ $t['yd'] = $yd;
+ $lists[$id] = $t;
+ }
+ $lists or msg('数据不足,无法生成报表');
+ $qid = isset($qid) ? intval($qid) : 0;
+ if($qid && isset($lists[$qid])) {
+ $t = $lists[$qid];
+ $lists = array();
+ $lists[$qid] = $t;
+ }
+ include tpl('form_answer_stats', $module);
+ } else {
+ $sfields = array('按条件', '会员', 'IP', '参数');
+ $dfields = array('username','username','ip', 'item');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $condition = "fid=$fid";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table}_record WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table}_record WHERE $condition ORDER BY rid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $lists[] = $r;
+ }
+ if($F['answer'] != $items) $db->query("UPDATE {$table} SET answer=$items WHERE itemid=$fid");
+ include tpl('form_answer', $module);
+ }
+ break;
+ default:
+ $sfields = array('按条件', '标题', '内容');
+ $dfields = array('title','title','content');
+ $sorder = array('结果排序方式', '添加时间降序', '添加时间升序', '回复总数降序', '回复总数升序', '浏览次数降序', '浏览次数升序', '选项总数降序', '选项总数升序', '开始时间降序', '开始时间升序', '到期时间降序', '到期时间升序');
+ $dorder = array('itemid DESC', 'addtime DESC', 'addtime ASC', 'answer DESC', 'answer ASC', 'hits DESC', 'hits ASC', 'question DESC', 'question ASC', 'fromtime DESC', 'fromtime ASC', 'totime DESC', 'totime ASC');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ isset($typeid) or $typeid = 0;
+ $level = isset($level) ? intval($level) : 0;
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $type_select = type_select($TYPE, 1, 'typeid', '请选择分类', $typeid);
+ $order_select = dselect($sorder, 'order', '', $order);
+ $level_select = level_select('level', '级别', $level, 'all');
+ $condition = '1';
+ if($_areaids) $condition .= " AND areaid IN (".$_areaids.")";//CITY
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($typeid) $condition .= " AND typeid IN (".type_child($typeid, $TYPE).")";
+ if($level) $condition .= $level > 9 ? " AND level>0" : " AND level=$level";
+ if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ $lists = $do->get_list($condition, $dorder[$order]);
+ include tpl('form', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/extend/admin/html.inc.php b/module/extend/admin/html.inc.php
new file mode 100644
index 0000000..bcf1f0d
--- /dev/null
+++ b/module/extend/admin/html.inc.php
@@ -0,0 +1,11 @@
+ad->announce->webpage->gift->vote->poll->form
+ msg('正在开始更新扩展', '?moduleid=3&file=spread&action=html&all=1&one='.$one);
+}
+?>
\ No newline at end of file
diff --git a/module/extend/admin/index.html b/module/extend/admin/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/extend/admin/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/extend/admin/link.inc.php b/module/extend/admin/link.inc.php
new file mode 100644
index 0000000..c0889da
--- /dev/null
+++ b/module/extend/admin/link.inc.php
@@ -0,0 +1,109 @@
+''";
+ if($level) $condition .= $level > 9 ? " AND level>0" : " AND level=$level";
+ if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+}
+switch($action) {
+ case 'add':
+ if($submit) {
+ if($do->pass($post)) {
+ $do->add($post);
+ dmsg('添加成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&typeid='.$post['typeid']);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $linkurl = 'http://';
+ $status = 3;
+ $addtime = timetodate($DT_TIME);
+ $typeid = 0;
+ $menuid = 0;
+ include tpl('link_edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($do->get_one());
+ $menuid = $status == 3 ? 1 : 2;
+ include tpl('link_edit', $module);
+ }
+ break;
+ case 'check':
+ if($itemid) {
+ $do->check($itemid);
+ dmsg('审核成功', $forward);
+ } else {
+ $menuid = 2;
+ $lists = $do->get_list("status=2 AND username=''".$condition, $dorder[$order]);
+ include tpl('link', $module);
+ }
+ break;
+ case 'order':
+ $do->order($listorder);
+ dmsg('排序成功', $forward);
+ break;
+ case 'delete':
+ $itemid or msg('请选择链接');
+ $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择链接');
+ $level = intval($level);
+ $do->level($itemid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ default:
+ $menuid = 1;
+ $lists = $do->get_list("status=3 AND username=''".$condition, $dorder[$order]);
+ include tpl('link', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/extend/admin/poll.inc.php b/module/extend/admin/poll.inc.php
new file mode 100644
index 0000000..26cbc7c
--- /dev/null
+++ b/module/extend/admin/poll.inc.php
@@ -0,0 +1,217 @@
+itemid = $pollid;
+ $P = $do->get_one();
+ $P or msg('票选不存在');
+ $menus = array (
+ array('添加选项', '?moduleid='.$moduleid.'&file='.$file.'&pollid='.$pollid.'&action=item_add'),
+ array('选项管理', '?moduleid='.$moduleid.'&file='.$file.'&pollid='.$pollid.'&action=item'),
+ array('投票记录', '?moduleid='.$moduleid.'&file='.$file.'&pollid='.$pollid.'&action=record'),
+ array('统计报表', '?moduleid='.$moduleid.'&file='.$file.'&pollid='.$pollid.'&action=stats'),
+ );
+}
+switch($action) {
+ case 'add':
+ if($submit) {
+ if($do->pass($post)) {
+ $do->add($post);
+ dmsg('添加成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $poll_max = 0;
+ $poll_page = 30;
+ $poll_cols = 3;
+ $poll_order = 0;
+ $thumb_width = 120;
+ $thumb_height = 90;
+ $addtime = timetodate($DT_TIME);
+ $typeid = 0;
+ $menuid = 0;
+ include tpl('poll_edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($do->get_one());
+ $addtime = timetodate($addtime);
+ $fromtime = $fromtime ? timetodate($fromtime) : '';
+ $totime = $totime ? timetodate($totime) : '';
+ $menuid = 1;
+ include tpl('poll_edit', $module);
+ }
+ break;
+ case 'html':
+ $all = (isset($all) && $all) ? 1 : 0;
+ $one = (isset($one) && $one) ? 1 : 0;
+ if(!isset($num)) {
+ $num = 50;
+ }
+ if(!isset($fid)) {
+ $r = $db->get_one("SELECT min(itemid) AS fid FROM {$DT_PRE}vote");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ }
+ isset($sid) or $sid = $fid;
+ if(!isset($tid)) {
+ $r = $db->get_one("SELECT max(itemid) AS tid FROM {$DT_PRE}poll");
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ }
+ if($fid <= $tid) {
+ $result = $db->query("SELECT itemid,linkurl FROM {$DT_PRE}poll WHERE itemid>=$fid ORDER BY itemid LIMIT 0,$num");
+ if($db->affected_rows($result)) {
+ while($r = $db->fetch_array($result)) {
+ $itemid = $r['itemid'];
+ $linkurl = $do->linkurl($itemid);
+ if($linkurl != $r['linkurl']) $db->query("UPDATE {$DT_PRE}poll SET linkurl='$linkurl' WHERE itemid=$itemid");
+ }
+ $itemid += 1;
+ } else {
+ $itemid = $fid + $num;
+ }
+ } else {
+ if($all) dheader('?moduleid=3&file=form&action=html&all=1&one='.$one);
+ dmsg('更新成功', "?moduleid=$moduleid&file=$file");
+ }
+ msg('ID从'.$fid.'至'.($itemid-1).'[票选]更新成功'.progress($sid, $fid, $tid), "?moduleid=$moduleid&file=$file&action=$action&sid=$sid&fid=$itemid&tid=$tid&num=$num&all=$all&one=$one");
+ break;
+ case 'delete':
+ $itemid or msg('请选择票选');
+ $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择票选');
+ $level = intval($level);
+ $do->level($itemid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ case 'record':
+ $I = $do->item_all("pollid=$pollid");
+ $sfields = array('按条件', '会员', 'IP');
+ $dfields = array('username','username','ip');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $condition = "pollid=$pollid";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND polltime>=$fromtime";
+ if($totime) $condition .= " AND polltime<=$totime";
+ $lists = $do->get_list_record($condition);
+ include tpl('poll_record', $module);
+ break;
+ case 'stats':
+ $title = $P['title'];
+ $I = $do->item_all("pollid=$pollid");
+ $xd = $yd = '';
+ foreach($I as $k=>$v) {
+ if($k) { $xd .= ','; $yd .= ','; }
+ $xd .= "'".$v['title']."'";
+ $yd .= "{value:".$v['polls'].", name:'".$v['title']."'}";
+ }
+ include tpl('poll_stats', $module);
+ break;
+ case 'item_add':
+ if($submit) {
+ $do->item_add($post);
+ dmsg('添加成功', $forward);
+ } else {
+ $title = $style = $linkurl = $introduce = $thumb = '';
+ $polls = $listorder = 0;
+ $menuid = 0;
+ include tpl('poll_item_edit', $module);
+ }
+ break;
+ case 'item_edit':
+ $itemid or msg();
+ $r = $db->get_one("SELECT * FROM {$DT_PRE}poll_item WHERE itemid=$itemid");
+ $r or msg('选项不存在');
+ if($submit) {
+ $do->item_edit($post, $r);
+ dmsg('修改成功', $forward);
+ } else {
+ extract($r);
+ $menuid = 1;
+ include tpl('poll_item_edit', $module);
+ }
+ break;
+ case 'item_delete':
+ $itemid or msg('请选择选项');
+ $do->item_delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'item_order':
+ $do->item_order($listorder);
+ dmsg('排序成功', $forward);
+ break;
+ case 'item':
+ $sorder = array('结果排序方式', '投票次数降序', '投票次数升序');
+ $dorder = array('listorder DESC,itemid DESC', 'polls DESC', 'polls ASC');
+ $sfields = array('标题', '简介', '链接');
+ $dfields = array('title', 'introduce', 'linkurl');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+ $condition = "pollid=$pollid";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ $lists = $do->item_list($condition, $dorder[$order]);
+ $t = $db->get_one("SELECT SUM(polls) AS total FROM {$DT_PRE}poll_item WHERE pollid=$pollid");
+ $polls = $t ? intval($t['total']) : 0;
+ if($polls != $P['polls']) $db->query("UPDATE {$DT_PRE}poll SET polls=$polls WHERE itemid=$pollid");
+ include tpl('poll_item', $module);
+ break;
+ default:
+ $sfields = array('按条件', '标题', '内容');
+ $dfields = array('title','title','content');
+ $sorder = array('结果排序方式', '添加时间降序', '添加时间升序', '投票总数降序', '投票总数升序', '浏览次数降序', '浏览次数升序', '选项总数降序', '选项总数升序', '开始时间降序', '开始时间升序', '到期时间降序', '到期时间升序');
+ $dorder = array('itemid DESC', 'addtime DESC', 'addtime ASC', 'polls DESC', 'polls ASC', 'hits DESC', 'hits ASC', 'items DESC', 'items ASC', 'fromtime DESC', 'fromtime ASC', 'totime DESC', 'totime ASC');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ isset($typeid) or $typeid = 0;
+ $level = isset($level) ? intval($level) : 0;
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $type_select = type_select('poll', 1, 'typeid', '请选择分类', $typeid);
+ $order_select = dselect($sorder, 'order', '', $order);
+ $level_select = level_select('level', '级别', $level, 'all');
+ $condition = '1';
+ if($_areaids) $condition .= " AND areaid IN (".$_areaids.")";//CITY
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($typeid) $condition .= " AND typeid IN (".type_child($typeid, $TYPE).")";
+ if($level) $condition .= $level > 9 ? " AND level>0" : " AND level=$level";
+ if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ $lists = $do->get_list($condition, $dorder[$order]);
+ include tpl('poll', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/extend/admin/sitemap.inc.php b/module/extend/admin/sitemap.inc.php
new file mode 100644
index 0000000..af99aee
--- /dev/null
+++ b/module/extend/admin/sitemap.inc.php
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/module/extend/admin/spread.inc.php b/module/extend/admin/spread.inc.php
new file mode 100644
index 0000000..523bd67
--- /dev/null
+++ b/module/extend/admin/spread.inc.php
@@ -0,0 +1,171 @@
+=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+ if($itemid) $condition .= " AND tid=$itemid";
+}
+switch($action) {
+ case 'add':
+ if($submit) {
+ if($do->pass($post)) {
+ $do->add($post);
+ dmsg('添加成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&typeid='.$post['typeid']);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $status = 3;
+ $mid = 5;
+ $fromtime = timetodate($DT_TIME);
+ $menuid = 0;
+ $currency = $MOD['spread_currency'];
+ include tpl('spread_edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($do->get_one());
+ $addtime = timetodate($addtime);
+ $fromtime = $fromtime ? timetodate($fromtime) : '';
+ $totime = $totime ? timetodate($totime) : '';
+ $menuid = $status == 3 ? 1 : 2;
+ include tpl('spread_edit', $module);
+ }
+ break;
+ case 'html':
+ $all = (isset($all) && $all) ? 1 : 0;
+ $one = (isset($one) && $one) ? 1 : 0;
+ if(!isset($num)) {
+ $num = 50;
+ $globs = glob(DT_CACHE.'/htm/*.htm');
+ foreach($globs as $v) {
+ if(substr(basename($v), 0, 1) == 'm') {
+ @unlink($v);
+ }
+ }
+ }
+ if(!isset($fid)) {
+ $r = $db->get_one("SELECT min(itemid) AS fid FROM {$DT_PRE}spread WHERE totime>$DT_TIME");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ }
+ isset($sid) or $sid = $fid;
+ if(!isset($tid)) {
+ $r = $db->get_one("SELECT max(itemid) AS tid FROM {$DT_PRE}spread WHERE totime>$DT_TIME");
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ }
+ if($fid <= $tid) {
+ $result = $db->query("SELECT itemid,mid FROM {$DT_PRE}spread WHERE totime>$DT_TIME AND itemid>=$fid ORDER BY itemid LIMIT 0,$num");
+ if($db->affected_rows($result)) {
+ while($r = $db->fetch_array($result)) {
+ $itemid = $r['itemid'];
+ $MOD = cache_read('module-'.$r['mid'].'.php');
+ tohtml('spread', $module);
+ }
+ $itemid += 1;
+ } else {
+ $itemid = $fid + $num;
+ }
+ } else {
+ if($all) dheader('?moduleid=3&file=ad&action=html&all=1&one='.$one);
+ dmsg('生成成功', "?moduleid=$moduleid&file=$file");
+ }
+ msg('ID从'.$fid.'至'.($itemid-1).'[排名推广]生成成功'.progress($sid, $fid, $tid), "?moduleid=$moduleid&file=$file&action=$action&sid=$sid&fid=$itemid&tid=$tid&num=$num&all=$all&one=$one");
+ break;
+ case 'price':
+ if($submit) {
+ $do->price_update($post);
+ dmsg('保存成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&page='.$page);
+ } else {
+ $sfields = array('按条件', '关键词', '操作人');
+ $dfields = array('word', 'word', 'editor');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $sorder = array('结果排序方式', '起价金额降序', '起价金额升序', '更新时间降序', '更新时间升序');
+ $dorder = array('edittime DESC', 'price DESC', 'price ASC', 'edittime DESC', 'edittime ASC');
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ $minprice = isset($minprice) ? dround($minprice) : '';
+ $minprice or $minprice = '';
+ $maxprice = isset($maxprice) ? dround($maxprice) : '';
+ $maxprice or $maxprice = '';
+ $empty = isset($empty) ? intval($empty) : 0;
+ $order_select = dselect($sorder, 'order', '', $order);
+ $condition = 1;
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($mid) $condition .= " AND mid=$mid";
+ if($minprice) $condition .= " AND price>=$minprice";
+ if($maxprice) $condition .= " AND price<=$maxprice";
+ if($empty) $condition .= " AND word=''";
+ $lists = $do->get_price_list($condition, $dorder[$order]);
+ include tpl('spread_price', $module);
+ }
+ break;
+ case 'delete':
+ $itemid or msg('请选择排名');
+ $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择排名');
+ $level = intval($level);
+ $do->level($itemid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ case 'check':
+ if($itemid) {
+ $status = $status == 3 ? 3 : 2;
+ $do->check($itemid, $status);
+ dmsg($status == 3 ? '审核成功' : '取消成功', $forward);
+ } else {
+ $lists = $do->get_list('status=2'.$condition, $dorder[$order]);
+ $menuid = 2;
+ include tpl('spread', $module);
+ }
+ break;
+ default:
+ $lists = $do->get_list('status=3'.$condition, $dorder[$order]);
+ $menuid = 1;
+ include tpl('spread', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/extend/admin/template/ad.tpl.php b/module/extend/admin/template/ad.tpl.php
new file mode 100644
index 0000000..2bfab35
--- /dev/null
+++ b/module/extend/admin/template/ad.tpl.php
@@ -0,0 +1,95 @@
+
+
+
>全部类型
+$v) {
+ if($k > 0) {
+?>
+
>
+
+
+
+
+
+
+
+
+
+
+
+
+>前台
+>显示
+>隐藏
+
+
+
+
+
+
+
+
+
+
+
+
+
+提示:系统会定期自动更新广告,如果需要立即看到效果,请点更新广告
+
+
+'.$pages.'' : '';?>
+ $DT_TIME) { ?>
+
+
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/ad_edit.tpl.php b/module/extend/admin/template/ad_edit.tpl.php
new file mode 100644
index 0000000..0656ce8
--- /dev/null
+++ b/module/extend/admin/template/ad_edit.tpl.php
@@ -0,0 +1,292 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/ad_edit_place.tpl.php b/module/extend/admin/template/ad_edit_place.tpl.php
new file mode 100644
index 0000000..d2c0383
--- /dev/null
+++ b/module/extend/admin/template/ad_edit_place.tpl.php
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/ad_stats.tpl.php b/module/extend/admin/template/ad_stats.tpl.php
new file mode 100644
index 0000000..85fbd24
--- /dev/null
+++ b/module/extend/admin/template/ad_stats.tpl.php
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/announce.tpl.php b/module/extend/admin/template/announce.tpl.php
new file mode 100644
index 0000000..c4afcab
--- /dev/null
+++ b/module/extend/admin/template/announce.tpl.php
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+取消', 0, 'onchange="this.form.action=\'?moduleid='.$moduleid.'&file='.$file.'&action=level\';this.form.submit();"');?>
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/announce_edit.tpl.php b/module/extend/admin/template/announce_edit.tpl.php
new file mode 100644
index 0000000..90579f4
--- /dev/null
+++ b/module/extend/admin/template/announce_edit.tpl.php
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/comment.tpl.php b/module/extend/admin/template/comment.tpl.php
new file mode 100644
index 0000000..9f0d64c
--- /dev/null
+++ b/module/extend/admin/template/comment.tpl.php
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+取消', 0, 'onchange="this.form.action=\'?moduleid='.$moduleid.'&file='.$file.'&action=level\';this.form.submit();"');?>
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/form_answer.tpl.php b/module/extend/admin/template/form_answer.tpl.php
new file mode 100644
index 0000000..943b288
--- /dev/null
+++ b/module/extend/admin/template/form_answer.tpl.php
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+ 至
+
+
+
+
+
+
+
+IP
+地区
+会员名
+回复时间
+参数
+操作
+
+$v) {?>
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/form_answer_show.tpl.php b/module/extend/admin/template/form_answer_show.tpl.php
new file mode 100644
index 0000000..8ad9266
--- /dev/null
+++ b/module/extend/admin/template/form_answer_show.tpl.php
@@ -0,0 +1,35 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/form_answer_stats.tpl.php b/module/extend/admin/template/form_answer_stats.tpl.php
new file mode 100644
index 0000000..c12570d
--- /dev/null
+++ b/module/extend/admin/template/form_answer_stats.tpl.php
@@ -0,0 +1,55 @@
+
+
+$v) {?>
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/form_edit.tpl.php b/module/extend/admin/template/form_edit.tpl.php
new file mode 100644
index 0000000..f5800e5
--- /dev/null
+++ b/module/extend/admin/template/form_edit.tpl.php
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/form_question.tpl.php b/module/extend/admin/template/form_question.tpl.php
new file mode 100644
index 0000000..2ad2603
--- /dev/null
+++ b/module/extend/admin/template/form_question.tpl.php
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/form_question_edit.tpl.php b/module/extend/admin/template/form_question_edit.tpl.php
new file mode 100644
index 0000000..43e3cc0
--- /dev/null
+++ b/module/extend/admin/template/form_question_edit.tpl.php
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/gift.tpl.php b/module/extend/admin/template/gift.tpl.php
new file mode 100644
index 0000000..5dd41a8
--- /dev/null
+++ b/module/extend/admin/template/gift.tpl.php
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+取消', 0, 'onchange="this.form.action=\'?moduleid='.$moduleid.'&file='.$file.'&action=level\';this.form.submit();"');?>
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/gift_order.tpl.php b/module/extend/admin/template/gift_order.tpl.php
new file mode 100644
index 0000000..2b1f148
--- /dev/null
+++ b/module/extend/admin/template/gift_order.tpl.php
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+>更新时间
+>下单时间
+
+ 至
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/guestbook.tpl.php b/module/extend/admin/template/guestbook.tpl.php
new file mode 100644
index 0000000..4a33cc9
--- /dev/null
+++ b/module/extend/admin/template/guestbook.tpl.php
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/guestbook_edit.tpl.php b/module/extend/admin/template/guestbook_edit.tpl.php
new file mode 100644
index 0000000..4cc9ba9
--- /dev/null
+++ b/module/extend/admin/template/guestbook_edit.tpl.php
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/index.html b/module/extend/admin/template/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/extend/admin/template/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/extend/admin/template/link.tpl.php b/module/extend/admin/template/link.tpl.php
new file mode 100644
index 0000000..3c324b4
--- /dev/null
+++ b/module/extend/admin/template/link.tpl.php
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+>类型
+>文字
+>LOGO
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+取消', 0, 'onchange="this.form.action=\'?moduleid='.$moduleid.'&file='.$file.'&action=level\';this.form.submit();"');?>
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/link_edit.tpl.php b/module/extend/admin/template/link_edit.tpl.php
new file mode 100644
index 0000000..c11d164
--- /dev/null
+++ b/module/extend/admin/template/link_edit.tpl.php
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/poll_edit.tpl.php b/module/extend/admin/template/poll_edit.tpl.php
new file mode 100644
index 0000000..d5332c5
--- /dev/null
+++ b/module/extend/admin/template/poll_edit.tpl.php
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/poll_item.tpl.php b/module/extend/admin/template/poll_item.tpl.php
new file mode 100644
index 0000000..37dff33
--- /dev/null
+++ b/module/extend/admin/template/poll_item.tpl.php
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/poll_item_edit.tpl.php b/module/extend/admin/template/poll_item_edit.tpl.php
new file mode 100644
index 0000000..92c10f9
--- /dev/null
+++ b/module/extend/admin/template/poll_item_edit.tpl.php
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/poll_record.tpl.php b/module/extend/admin/template/poll_record.tpl.php
new file mode 100644
index 0000000..6e506e9
--- /dev/null
+++ b/module/extend/admin/template/poll_record.tpl.php
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+ 至
+
+投票选项
+$v) {
+?>
+>
+
+
+
+
+
+
+
+
+
+IP
+地区
+会员名
+投票时间
+选项
+
+$v) {?>
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/poll_stats.tpl.php b/module/extend/admin/template/poll_stats.tpl.php
new file mode 100644
index 0000000..6c35ec5
--- /dev/null
+++ b/module/extend/admin/template/poll_stats.tpl.php
@@ -0,0 +1,45 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/setting.tpl.php b/module/extend/admin/template/setting.tpl.php
new file mode 100644
index 0000000..31ca54c
--- /dev/null
+++ b/module/extend/admin/template/setting.tpl.php
@@ -0,0 +1,617 @@
+
+
+
+
+
+
+
+
+
通用设置
+
+
+列表页地址规则
+
+
+>例 (动态) list.php?catid=1&page=2
+>例 (伪静态) list-1-2.html
+>例 (伪静态) list/1/
+
+
+
+
+内容页地址规则
+
+
+>例 (动态) show.php?itemid=1&page=2
+>例 (伪静态) show-1-2.html
+>例 (伪静态) show/1/
+
+
+
+
+
+
手机版设置
+
+
+
排名推广
+
+
+
+
广告设置
+
+
+
+
公告设置
+
+
+
+
友情链接
+
+
+
+
评论设置
+
+
+
+
+留言设置
+
+
+
+积分换礼设置
+
+
+
+投票设置
+
+
+
+票选设置
+
+
+
+表单设置
+
+
+
+无图版设置
+
+
+
+RSS设置
+
+
+
+Sitemaps
+
+
+
+
+百度新闻(Baidu News) - 互联网新闻开放协议
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/spread.tpl.php b/module/extend/admin/template/spread.tpl.php
new file mode 100644
index 0000000..5ba58d8
--- /dev/null
+++ b/module/extend/admin/template/spread.tpl.php
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+提示:系统会定期自动生成排名,如果需要立即看到效果,请点生成排名
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/spread_edit.tpl.php b/module/extend/admin/template/spread_edit.tpl.php
new file mode 100644
index 0000000..39bd898
--- /dev/null
+++ b/module/extend/admin/template/spread_edit.tpl.php
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/spread_price.tpl.php b/module/extend/admin/template/spread_price.tpl.php
new file mode 100644
index 0000000..a803379
--- /dev/null
+++ b/module/extend/admin/template/spread_price.tpl.php
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+模块
+ 0 && $v['moduleid'] < 4) || $v['islink']) continue;
+ echo ''.$v['name'].' ';
+}
+?>
+
+起价: ~
+ /> 空关键词
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/vote_edit.tpl.php b/module/extend/admin/template/vote_edit.tpl.php
new file mode 100644
index 0000000..bf21456
--- /dev/null
+++ b/module/extend/admin/template/vote_edit.tpl.php
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/vote_record.tpl.php b/module/extend/admin/template/vote_record.tpl.php
new file mode 100644
index 0000000..263e094
--- /dev/null
+++ b/module/extend/admin/template/vote_record.tpl.php
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+ 至
+
+
+
+
+
+
+
+IP
+地区
+会员名
+投票时间
+选项
+
+$v) {?>
+
+
+
+
+
+
+';
+}
+?>
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/vote_stats.tpl.php b/module/extend/admin/template/vote_stats.tpl.php
new file mode 100644
index 0000000..2e36470
--- /dev/null
+++ b/module/extend/admin/template/vote_stats.tpl.php
@@ -0,0 +1,45 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/extend/admin/template/webpage_group.tpl.php b/module/extend/admin/template/webpage_group.tpl.php
new file mode 100644
index 0000000..452d552
--- /dev/null
+++ b/module/extend/admin/template/webpage_group.tpl.php
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/extend/admin/vote.inc.php b/module/extend/admin/vote.inc.php
new file mode 100644
index 0000000..5fced40
--- /dev/null
+++ b/module/extend/admin/vote.inc.php
@@ -0,0 +1,172 @@
+pass($post)) {
+ $do->add($post);
+ dmsg('添加成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $vote_min = 1;
+ $vote_max = 3;
+ $addtime = timetodate($DT_TIME);
+ $typeid = 0;
+ $menuid = 0;
+ include tpl('vote_edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($do->get_one());
+ $addtime = timetodate($addtime);
+ $fromtime = $fromtime ? timetodate($fromtime) : '';
+ $totime = $totime ? timetodate($totime) : '';
+ $menuid = 1;
+ include tpl('vote_edit', $module);
+ }
+ break;
+ case 'html':
+ $all = (isset($all) && $all) ? 1 : 0;
+ $one = (isset($one) && $one) ? 1 : 0;
+ if(!isset($num)) {
+ $num = 50;
+ }
+ if(!isset($fid)) {
+ $r = $db->get_one("SELECT min(itemid) AS fid FROM {$DT_PRE}vote");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ }
+ isset($sid) or $sid = $fid;
+ if(!isset($tid)) {
+ $r = $db->get_one("SELECT max(itemid) AS tid FROM {$DT_PRE}vote");
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ }
+ if($fid <= $tid) {
+ $result = $db->query("SELECT itemid,linkurl FROM {$DT_PRE}vote WHERE itemid>=$fid ORDER BY itemid LIMIT 0,$num");
+ if($db->affected_rows($result)) {
+ while($r = $db->fetch_array($result)) {
+ $itemid = $r['itemid'];
+ $linkurl = $do->linkurl($itemid);
+ if($linkurl != $r['linkurl']) $db->query("UPDATE {$DT_PRE}vote SET linkurl='$linkurl' WHERE itemid=$itemid");
+ tohtml('vote', $module);
+ }
+ $itemid += 1;
+ } else {
+ $itemid = $fid + $num;
+ }
+ } else {
+ if($all) dheader('?moduleid=3&file=poll&action=html&all=1&one='.$one);
+ dmsg('更新成功', "?moduleid=$moduleid&file=$file");
+ }
+ msg('ID从'.$fid.'至'.($itemid-1).'[投票]更新成功'.progress($sid, $fid, $tid), "?moduleid=$moduleid&file=$file&action=$action&sid=$sid&fid=$itemid&tid=$tid&num=$num&all=$all&one=$one");
+ break;
+ case 'delete':
+ $itemid or msg('请选择投票');
+ $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择投票');
+ $level = intval($level);
+ $do->level($itemid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ case 'record':
+ $itemid or msg();
+ $menus = array (
+ array('投票记录', '?moduleid='.$moduleid.'&file='.$file.'&itemid='.$itemid.'&action=record'),
+ array('统计报表', '?moduleid='.$moduleid.'&file='.$file.'&itemid='.$itemid.'&action=stats'),
+ );
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ extract($item);
+ $votes = array();
+ for($i = 1; $i < 11; $i++) {
+ $s = 's'.$i;
+ if($$s) $votes[$i] = $$s;
+ }
+ $sfields = array('按条件', '会员', 'IP');
+ $dfields = array('username','username','ip');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ $condition = "itemid=$itemid";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND votetime>=$fromtime";
+ if($totime) $condition .= " AND votetime<=$totime";
+ $lists = $do->get_list_record($condition);
+ include tpl('vote_record', $module);
+ break;
+ case 'stats':
+ $itemid or msg();
+ $menus = array (
+ array('投票记录', '?moduleid='.$moduleid.'&file='.$file.'&itemid='.$itemid.'&action=record'),
+ array('统计报表', '?moduleid='.$moduleid.'&file='.$file.'&itemid='.$itemid.'&action=stats'),
+ );
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ extract($item);
+ $xd = $yd = '';
+ for($i = 1; $i < 11; $i++) {
+ $s = 's'.$i;
+ $v = 'v'.$i;
+ if($$s) {
+ if($i > 1) { $xd .= ','; $yd .= ','; }
+ $xd .= "'".$$s."'";
+ $yd .= "{value:".$$v.", name:'".$$s."'}";
+ }
+ }
+ include tpl('vote_stats', $module);
+ break;
+ default:
+ $sfields = array('按条件', '标题', '外链', '内容');
+ $dfields = array('title','title','linkto','content');
+ $sorder = array('结果排序方式', '添加时间降序', '添加时间升序', '投票次数降序', '投票次数升序', '浏览次数降序', '浏览次数升序', '开始时间降序', '开始时间升序', '到期时间降序', '到期时间升序');
+ $dorder = array('itemid DESC', 'addtime DESC', 'addtime ASC', 'votes DESC', 'votes ASC', 'hits DESC', 'hits ASC', 'fromtime DESC', 'fromtime ASC', 'totime DESC', 'totime ASC');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ isset($typeid) or $typeid = 0;
+ $level = isset($level) ? intval($level) : 0;
+ $type_select = type_select('vote', 1, 'typeid', '请选择分类', $typeid);
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+ $level_select = level_select('level', '级别', $level, 'all');
+ $condition = '1';
+ if($_areaids) $condition .= " AND areaid IN (".$_areaids.")";//CITY
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($typeid) $condition .= " AND typeid IN (".type_child($typeid, $TYPE).")";
+ if($level) $condition .= $level > 9 ? " AND level>0" : " AND level=$level";
+ if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ $lists = $do->get_list($condition, $dorder[$order]);
+ include tpl('vote', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/extend/admin/webpage.inc.php b/module/extend/admin/webpage.inc.php
new file mode 100644
index 0000000..4d7678a
--- /dev/null
+++ b/module/extend/admin/webpage.inc.php
@@ -0,0 +1,142 @@
+item = $item;
+$menus = array (
+ array('添加单页', '?moduleid='.$moduleid.'&file='.$file.'&item='.$item.'&action=add'),
+ array('单页列表', '?moduleid='.$moduleid.'&file='.$file.'&item='.$item),
+ array('全部单页', '?moduleid='.$moduleid.'&file='.$file.'&item='.$item.'&itemid=1'),
+ array('创建新组', '?moduleid='.$moduleid.'&file='.$file.'&item='.$item.'&action=group'),
+ array('更新数据', '?moduleid='.$moduleid.'&file='.$file.'&item='.$item.'&action=html'),
+);
+if($_catids || $_areaids) require DT_ROOT.'/admin/admin_check.inc.php';
+$this_forward = '?moduleid='.$moduleid.'&file='.$file.'&item='.$item;
+switch($action) {
+ case 'add':
+ if($submit) {
+ if($do->pass($post)) {
+ $do->add($post);
+ dmsg('添加成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $filepath = 'about/';
+ $filename = '';
+ $menuid = 0;
+ include tpl('webpage_edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($do->get_one());
+ if($islink) {
+ $filepath = $filename = '';
+ } else {
+ $filestr = str_replace(DT_PATH, '', $linkurl);
+ $filepath = strpos($filestr, '/') !== false ? dirname($filestr).'/' : '';
+ $filename = basename($filestr);
+ }
+ $menuid = 1;
+ include tpl('webpage_edit', $module);
+ }
+ break;
+ case 'group':
+ if($submit) {
+ $name or msg('请填写新组名称');
+ preg_match("/^[a-z0-9]{1,}$/", $item) or msg('新组标识应为数字和字母的组合');
+ $name = addslashes($name);
+ $url = '?moduleid=3&file=webpage&item='.$item;
+ $db->query("INSERT INTO {$DT_PRE}admin (userid,title,url,style) VALUES('$_userid','$name','$url','#FF0000')");
+ require_once DT_ROOT.'/admin/admin.class.php';
+ $do = new admin;
+ $do->cache_menu($_userid);
+ msg('添加成功', $url);
+ } else {
+ $name = '新组名称';
+ $item = 'new';
+ include tpl('webpage_group', $module);
+ }
+ break;
+ case 'order':
+ $do->order($listorder);
+ dmsg('排序成功', $forward);
+ break;
+ case 'html':
+ $all = (isset($all) && $all) ? 1 : 0;
+ $one = (isset($one) && $one) ? 1 : 0;
+ if(!isset($num)) {
+ $num = 50;
+ }
+ if(!isset($fid)) {
+ $r = $db->get_one("SELECT min(itemid) AS fid FROM {$DT_PRE}webpage");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ }
+ isset($sid) or $sid = $fid;
+ if(!isset($tid)) {
+ $r = $db->get_one("SELECT max(itemid) AS tid FROM {$DT_PRE}webpage");
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ }
+ if($fid <= $tid) {
+ $result = $db->query("SELECT itemid FROM {$DT_PRE}webpage WHERE itemid>=$fid ORDER BY itemid LIMIT 0,$num");
+ if($db->affected_rows($result)) {
+ while($r = $db->fetch_array($result)) {
+ $itemid = $r['itemid'];
+ tohtml('webpage', $module);
+ }
+ $itemid += 1;
+ } else {
+ $itemid = $fid + $num;
+ }
+ } else {
+ if($all) dheader("?moduleid=3&file=gift&action=html&all=1&item=$item&one=$one");
+ dmsg('生成成功', "?moduleid=$moduleid&file=$file&item=$item");
+ }
+ msg('ID从'.$fid.'至'.($itemid-1).'[单页]生成成功'.progress($sid, $fid, $tid), "?moduleid=$moduleid&file=$file&action=$action&sid=$sid&fid=$itemid&tid=$tid&num=$num&item=$item&all=$all&one=$one");
+ break;
+ case 'delete':
+ $itemid or msg('请选择单页');
+ $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择单页');
+ $level = intval($level);
+ $do->level($itemid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ default:
+ $sfields = array('按条件', '标题', '链接地址', '内容', '绑定域名');
+ $dfields = array('title','title','linkurl','content','domain');
+ $sorder = array('结果排序方式', '更新时间降序', '更新时间升序', '浏览次数降序', '浏览次数升序');
+ $dorder = array('listorder DESC,itemid DESC', 'edittime DESC', 'edittime ASC', 'hits DESC', 'hits ASC');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ $level = isset($level) ? intval($level) : 0;
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+ $level_select = level_select('level', '级别', $level, 'all');
+ $condition = $itemid ? "1" : "item='$item'";
+ if($_areaids) $condition .= " AND areaid IN (".$_areaids.")";//CITY
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($level) $condition .= $level > 9 ? " AND level>0" : " AND level=$level";
+ if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ $lists = $do->get_list($condition, $dorder[$order]);
+ include tpl('webpage', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/extend/announce.class.php b/module/extend/announce.class.php
new file mode 100644
index 0000000..2e0bbd9
--- /dev/null
+++ b/module/extend/announce.class.php
@@ -0,0 +1,159 @@
+table = DT_PRE.'announce';
+ $this->fields = array('typeid','areaid','level','title','style','content','addtime','fromtime','totime','editor','edittime','template','islink','linkurl');
+ }
+
+ function announce() {
+ $this->__construct();
+ }
+
+ function pass($post) {
+ global $L;
+ if(!is_array($post)) return false;
+ if(!$post['typeid']) return $this->_($L['announce_pass_type']);
+ if(!$post['title']) return $this->_($L['announce_pass_title']);
+ if(isset($post['islink'])) {
+ if(!$post['linkurl']) return $this->_($L['announce_pass_url']);
+ } else {
+ if(!$post['content']) return $this->_($L['announce_pass_content']);
+ }
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $_username, $_userid;
+ $post['islink'] = isset($post['islink']) ? 1 : 0;
+ $post['addtime'] = (isset($post['addtime']) && is_time($post['addtime'])) ? datetotime($post['addtime']) : DT_TIME;
+ $post['edittime'] = DT_TIME;
+ $post['editor'] = $_username;
+ $post['content'] = addslashes(save_remote(save_local(stripslashes($post['content']))));
+ if($this->itemid) {
+ $new = $post['content'];
+ $r = $this->get_one();
+ $old = $r['content'];
+ delete_diff($new, $old);
+ }
+ $post['fromtime'] = is_time($post['fromtime']) ? datetotime($post['fromtime']) : 0;
+ $post['totime'] = is_time($post['totime']) ? datetotime($post['totime']) : 0;
+ return array_map("trim", $post);
+ }
+
+ function get_one() {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid='$this->itemid'");
+ }
+
+ function get_list($condition = '1', $order = 'listorder DESC,addtime DESC') {
+ global $MOD, $TYPE, $pages, $page, $pagesize, $offset, $L, $sum, $items;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['fromdate'] = $r['fromtime'] ? timetodate($r['fromtime'], 3) : $L['timeless'];
+ $r['todate'] = $r['totime'] ? timetodate($r['totime'], 3) : $L['timeless'];
+ $r['typename'] = $TYPE[$r['typeid']]['typename'];
+ $r['typeurl'] = $MOD['announce_url'].list_url($r['typeid']);
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $DT, $MOD, $module;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ if(!$post['islink']) {
+ $linkurl = $this->linkurl($this->itemid);
+ DB::query("UPDATE {$this->table} SET linkurl='$linkurl' WHERE itemid=$this->itemid");
+ }
+ clear_upload($post['content'], $this->itemid, $this->table);
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ global $DT, $MOD, $module;
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ if(!$post['islink']) {
+ $linkurl = $this->linkurl($this->itemid);
+ DB::query("UPDATE {$this->table} SET linkurl='$linkurl' WHERE itemid=$this->itemid");
+ }
+ clear_upload($post['content'], $this->itemid, $this->table);
+ return true;
+ }
+
+ function linkurl($itemid) {
+ global $MOD;
+ $linkurl = show_url($itemid);
+ return $MOD['announce_url'].$linkurl;
+ }
+
+ function delete($itemid, $all = true) {
+ global $DT;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->delete($v, $all);
+ }
+ } else {
+ $this->itemid = $itemid;
+ $r = $this->get_one();
+ if($all) {
+ $userid = get_user($r['editor']);
+ if($r['content']) delete_local($r['content'], $userid);
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ $fileurl = DT_ROOT.'/announce/'.$itemid.'.'.$DT['file_ext'];
+ if(is_file($fileurl)) unlink($fileurl);
+ }
+ }
+ }
+
+ function order($listorder) {
+ if(!is_array($listorder)) return false;
+ foreach($listorder as $k=>$v) {
+ $k = intval($k);
+ $v = intval($v);
+ DB::query("UPDATE {$this->table} SET listorder=$v WHERE itemid=$k");
+ }
+ return true;
+ }
+
+ function level($itemid, $level) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET level=$level WHERE itemid IN ($itemids)");
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/extend/announce.inc.php b/module/extend/announce.inc.php
new file mode 100644
index 0000000..5e0e659
--- /dev/null
+++ b/module/extend/announce.inc.php
@@ -0,0 +1,55 @@
+itemid = $itemid;
+ $item = $do->get_one();
+ $item or dheader($DT_PC ? $url : $mob);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $adddate = timetodate($addtime, 3);
+ $fromdate = $fromtime ? timetodate($fromtime, 3) : $L['timeless'];
+ $todate = $totime ? timetodate($totime, 3) : $L['timeless'];
+ $content = DC::format($content, $DT_PC);
+ if(!$DT_BOT) $db->query("UPDATE LOW_PRIORITY {$DT_PRE}{$ext} SET hits=hits+1 WHERE itemid=$itemid", 'UNBUFFERED');
+ $head_title = $title.$DT['seo_delimiter'].$L['announce_title'];
+ $template = $item['template'] ? $item['template'] : $ext;
+} else {
+ $head_title = $L['announce_title'];
+ if($catid) $typeid = $catid;
+ $condition = '1';
+ if($keyword) $condition .= match_kw('title', $keyword);
+ if($typeid) {
+ isset($TYPE[$typeid]) or dheader($DT_PC ? $url : $mob);
+ $condition .= " AND typeid IN (".type_child($typeid, $TYPE).")";
+ $head_title = $TYPE[$typeid]['typename'].$DT['seo_delimiter'].$head_title;
+ }
+ if($cityid) $condition .= ($AREA[$cityid]['child']) ? " AND areaid IN (".$AREA[$cityid]['arrchildid'].")" : " AND areaid=$cityid";
+ $lists = $do->get_list($condition, 'listorder DESC,itemid DESC');
+ $template = $ext;
+}
+if($DT_PC) {
+ $destoon_task = rand_task();
+ if($EXT['mobile_enable']) $head_mobile = str_replace($url, $mob, $DT_URL);
+} else {
+ if($itemid) {
+ $js_item = 1;
+ } else {
+ $pages = mobile_pages($items, $page, $pagesize);
+ }
+ $head_name = $L['announce_title'];
+ if($sns_app) $seo_title = $site_name;
+ $foot = '';
+}
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/extend/baidunews.htm.php b/module/extend/baidunews.htm.php
new file mode 100644
index 0000000..46095e8
--- /dev/null
+++ b/module/extend/baidunews.htm.php
@@ -0,0 +1,51 @@
+ 100) $MOD['baidunews_items'] = 100;
+$news_num = intval($MOD['baidunews_items']/$mods_num);
+if($news_num < 1) return false;
+$data = '';
+$data .= '';
+$data .= ''.DT_PATH.' ';
+$data .= ''.$MOD['baidunews_email'].' ';
+$data .= ''.$MOD['baidunews_update'].' ';
+foreach($news as $v) {
+ $mid = $v['moduleid'];
+ $url = linkurl($v['linkurl']);
+ $result = $db->query("SELECT * FROM {$DT_PRE}article_{$mid} WHERE status=3 ORDER BY addtime DESC LIMIT $news_num");
+ while($r = $db->fetch_array($result)) {
+ $C = get_cat($r['catid']);
+ $itemid = $r['itemid'];
+ $content_table = content_table($mid, $itemid, $v['split'], $DT_PRE.'article_data_'.$mid);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $data .= '- ';
+ $data .= '
';
+ $data .= ' ';
+ $data .= ' ';
+ $data .= ' ';
+ $data .= ' ';
+ $data .= ' ';
+ $data .= ' ';
+ $data .= ' ';
+ $data .= ' ';
+ $data .= ''.timetodate($r['addtime'], 5).' ';
+ $data .= ' ';
+ }
+}
+$data .= ' ';
+$data = str_replace('><', ">\n<", $data);
+file_put(DT_ROOT.'/baidunews.xml', $data);
+return true;
+?>
\ No newline at end of file
diff --git a/module/extend/comment.inc.php b/module/extend/comment.inc.php
new file mode 100644
index 0000000..66f6ecb
--- /dev/null
+++ b/module/extend/comment.inc.php
@@ -0,0 +1,243 @@
+get_one("SELECT company,linkurl,username,groupid,comments FROM ".get_table($mid)." WHERE userid=$itemid");
+ $item or dheader(DT_PATH);
+ $item['groupid'] > 4 or dheader(DT_PATH);
+ $item['title'] = $item['company'];
+ $linkurl = $item['linkurl'];
+} else {
+ $item = $db->get_one("SELECT title,linkurl,username,status,comments FROM ".get_table($mid)." WHERE itemid=$itemid");
+ $item or dheader(DT_PATH);
+ $item['status'] > 2 or dheader(DT_PATH);
+ $linkurl = ($DT_PC ? $MODULE[$mid]['linkurl'] : $MODULE[$mid]['mobile']).$item['linkurl'];
+}
+$ext = 'comment';
+$url = $EXT[$ext.'_url'];
+$mob = $EXT[$ext.'_mob'];
+$template = $message = $forward = '';
+$username = $item['username'];
+$title = $item['title'];
+$could_del = false;
+if($_groupid == 1) {
+ if($MOD['comment_admin_del']) $could_del = true;
+} else if($username && $_username == $username) {
+ if($MOD['comment_user_del'] && in_array($mid, explode(',', $MOD['comment_user_del']))) $could_del = true;
+}
+$iframe = 0;
+switch($action) {
+ case 'count':
+ if($EXT['comment_api'] == 'changyan') {
+ $comments = $dc->get('comments-'.$mid.'-'.$itemid);
+ if(strlen($comments) > 0) {
+ echo $comments;
+ exit;
+ }
+ $rec = dcurl('http://changyan.sohu.com/api/2/topic/load?client_id='.$EXT['comment_api_id'].'&topic_source_id='.$mid.'-'.$itemid.'&topic_url='.urlencode($linkurl));
+ if(strpos($rec, 'cmt_sum') !== false) {
+ $arr = json_decode($rec, true);
+ $comments = intval($arr['cmt_sum']);
+ } else {
+ $comments = 0;
+ }
+ $dc->set('comments-'.$mid.'-'.$itemid, $comments, $CFG['db_expires'] ? $CFG['db_expires'] : 1800);
+ } else {
+ $condition = "item_mid=$mid AND item_id=$itemid AND status=3";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}comment WHERE {$condition}", 'CACHE');
+ $comments = $r['num'];
+ }
+ if($comments != $item['comments']) $db->query("UPDATE ".get_table($mid)." SET comments=$comments WHERE ".($mid == 4 ? 'userid' : 'itemid')."=$itemid", 'UNBUFFERED');
+ echo $comments;
+ exit;
+ break;
+ case 'delete':
+ $could_del or dalert($L['comment_msg_del']);
+ $cid = isset($cid) ? intval($cid) : 0;
+ $cid or dalert($L['comment_msg_cid']);
+ $r = $db->get_one("SELECT * FROM {$DT_PRE}comment WHERE itemid='$cid' LIMIT 1");
+ if($r) {
+ $star = 'star'.$r['star'];
+ $db->query("UPDATE {$DT_PRE}comment_stat SET comment=comment-1,`{$star}`=`{$star}`-1 WHERE itemid=$r[item_id] AND moduleid=$r[item_mid]");
+ $db->query("DELETE FROM {$DT_PRE}comment WHERE itemid=$cid");
+ $forward = rewrite('index.php?mid='.$mid.'&itemid='.$itemid.'&page='.$page.'&rand='.mt_rand(10, 99));
+ dalert($L['comment_msg_del_success'], '', 'parent.window.location="'.$forward.'";');
+ } else {
+ dalert($L['comment_msg_not_comment']);
+ }
+ break;
+ default:
+ if($EXT['comment_api']) {
+ //
+ } else {
+ if(check_group($_groupid, $MOD['comment_group'])) {
+ $user_status = 3;
+ } else {
+ if($_userid) {
+ $user_status = 1;
+ } else {
+ $user_status = 2;
+ }
+ }
+ $need_captcha = $MOD['comment_captcha_add'] == 2 ? $MG['captcha'] : $MOD['comment_captcha_add'];
+ if($MOD['comment_pagesize']) {
+ $pagesize = $MOD['comment_pagesize'];
+ $offset = ($page-1)*$pagesize;
+ }
+ if($submit) {
+ if($user_status != 3) dalert($L['comment_msg_permission']);
+ if($username && $username == $_username) dalert($L['comment_msg_self']);
+ $sql = $_userid ? "username='$_username'" : "ip='$DT_IP'";
+ if($MOD['comment_limit']) {
+ $today = $DT_TODAY - 86400;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}comment WHERE $sql AND addtime>$today");
+ $r['num'] < $MOD['comment_limit'] or dalert(lang($L['comment_msg_limit'], array($MOD['comment_limit'], $r['num'])));
+ }
+ if($MOD['comment_time']) {
+ $r = $db->get_one("SELECT addtime FROM {$DT_PRE}comment WHERE $sql ORDER BY addtime DESC");
+ if($r && $DT_TIME - $r['addtime'] < $MOD['comment_time']) dalert(lang($L['comment_msg_time'], array($MOD['comment_time'])));
+ }
+
+ if($need_captcha) {
+ $msg = captcha($captcha, 1, true);
+ if($msg) dalert($msg);
+ }
+ $content = dhtmlspecialchars(trim($content));
+ $content = preg_replace("/&([a-z]{1,});/", '', $content);
+ $len = word_count($content);
+ if($len < $MOD['comment_min']) dalert(lang($L['comment_msg_min'], array($MOD['comment_min'])));
+ if($len > $MOD['comment_max']) dalert(lang($L['comment_msg_max'], array($MOD['comment_max'])));
+ $BANWORD = cache_read('banword.php');
+ if($BANWORD) $content = banword($BANWORD, $content, false);
+ $star = intval($star);
+ in_array($star, array(1, 2, 3, 4, 5)) or $star = 5;
+ $status = get_status(3, $MOD['comment_check'] == 2 ? $MG['check'] : $MOD['comment_check']);
+ $hidden = isset($hidden) ? 1 : 0;
+ $title = addslashes($title);
+ $content = nl2br($content);
+ $quotation = '';
+ $qid = isset($qid) ? intval($qid) : 0;
+ if($qid) {
+ $r = $db->get_one("SELECT ip,hidden,username,passport,content,quotation,addtime FROM {$DT_PRE}comment WHERE itemid=$qid");
+ if($r) {
+ if($r['username']) {
+ $r['name'] = $r['hidden'] ? $MOD['comment_am'] : $r['passport'];
+ } else {
+ $r['name'] = 'IP:'.hide_info($r['ip'], 'ip');
+ }
+ $r['addtime'] = timetodate($r['addtime'], 6);
+ if($r['quotation']) $r['content'] = $r['quotation'];
+ $floor = substr_count($r['content'],'quote_content') + 1;
+ if($floor == 1) {
+ $quotation = addslashes(''.$floor.' '.$r['name'].' '.$L['comment_quote_at'].' '.$r['addtime'].' '.$L['comment_quote_or'].'
'.$r['content'].'
').$content;
+ } else {
+ $quotation = str_replace('', ''.$floor.' '.$r['name'].' '.$L['comment_quote_at'].' '.$r['addtime'].' '.$L['comment_quote_or'].'
', $r['content']);
+ $quotation = '
'.$quotation.'
';
+ $quotation = addslashes($quotation).$content;
+ }
+ }
+ $db->query("UPDATE {$DT_PRE}comment SET quotes=quotes+1 WHERE itemid=$qid");
+ }
+ $db->query("INSERT INTO {$DT_PRE}comment (item_mid,item_id,item_title,item_username,content,quotation,qid,addtime,username,passport,hidden,star,ip,status) VALUES ('$mid','$itemid','$title','$username','$content','$quotation','$qid','$DT_TIME','$_username','$_passport','$hidden','$star','$DT_IP','$status')");
+ $cid = $db->insert_id();
+ $r = $db->get_one("SELECT sid FROM {$DT_PRE}comment_stat WHERE moduleid=$mid AND itemid=$itemid");
+ $star = 'star'.$star;
+ if($r) {
+ $db->query("UPDATE {$DT_PRE}comment_stat SET comment=comment+1,`{$star}`=`{$star}`+1 WHERE sid=$r[sid]");
+ } else {
+ $db->query("INSERT INTO {$DT_PRE}comment_stat (moduleid,itemid,{$star},comment) VALUES ('$mid','$itemid','1','1')");
+ }
+ if($status == 3) {
+ if($_username && $MOD['credit_add_comment']) {
+ credit_add($_username, $MOD['credit_add_comment']);
+ credit_record($_username, $MOD['credit_add_comment'], 'system', $L['comment_record_add'], 'ID:'.$cid);
+ }
+ $items = isset($items) ? intval($items) + 1 : 1;
+ $page = ceil($items/$pagesize);
+ $forward = rewrite('index.php?mid='.$mid.'&itemid='.$itemid.'&page='.$page.'&rand='.mt_rand(10, 99)).'#last';
+ dalert('', '', 'parent.window.location="'.$forward.'";');
+ } else {
+ dalert($L['comment_check'], '', 'parent.window.location=parent.window.location;');
+ }
+ } else {
+ $proxy = '';
+ $order = $MOD['comment_order'] ? $MOD['comment_order'] : 'itemid ASC';
+ $lists = array();
+ $pages = '';
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}comment WHERE item_mid=$mid AND item_id=$itemid AND status=3");
+ $items = $r['num'];
+ if($items != $item['comments']) $db->query("UPDATE ".get_table($mid)." SET comments=$items WHERE ".($mid == 4 ? 'userid' : 'itemid')."=$itemid", 'UNBUFFERED');
+ $pages = pages($items, $page, $pagesize);
+ $floor = $page == 1 ? 0 : ($page-1)*$pagesize;
+ $top = intval($MOD['comment_top']);
+ if($top > 0) {
+ $result = $db->query("SELECT * FROM {$DT_PRE}comment WHERE item_mid=$mid AND item_id=$itemid AND status=3 AND level>0 ORDER BY $order LIMIT $top");
+ while($r = $db->fetch_array($result)) {
+ $r['floor'] = 0;
+ $r['addtime'] = timetodate($r['addtime'], 5);
+ $r['replytime'] = $r['replytime'] ? timetodate($r['replytime'], 5) : '';
+ if($r['username']) {
+ $r['name'] = $r['hidden'] ? $MOD['comment_am'] : $r['passport'];
+ $r['uname'] = $r['hidden'] ? '' : $r['username'];
+ } else {
+ $r['name'] = $MOD['comment_am'];
+ $r['uname'] = '';
+ }
+ if(strpos($r['content'], ')') !== false) $r['content'] = parse_face($r['content']);
+ if(strpos($r['quotation'], ')') !== false) $r['quotation'] = parse_face($r['quotation']);
+ $lists[] = $r;
+ }
+ }
+ $result = $db->query("SELECT * FROM {$DT_PRE}comment WHERE item_mid=$mid AND item_id=$itemid AND status=3 ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['floor'] = ++$floor;
+ $r['addtime'] = timetodate($r['addtime'], 5);
+ $r['replytime'] = $r['replytime'] ? timetodate($r['replytime'], 5) : '';
+ if($r['username']) {
+ $r['name'] = $r['hidden'] ? $MOD['comment_am'] : $r['passport'];
+ $r['uname'] = $r['hidden'] ? '' : $r['username'];
+ } else {
+ $r['name'] = $MOD['comment_am'];
+ $r['uname'] = '';
+ }
+ if(strpos($r['content'], ')') !== false) $r['content'] = parse_face($r['content']);
+ if(strpos($r['quotation'], ')') !== false) $r['quotation'] = parse_face($r['quotation']);
+ $lists[] = $r;
+ }
+ $stat = $r = $db->get_one("SELECT * FROM {$DT_PRE}comment_stat WHERE moduleid=$mid AND itemid=$itemid");
+ if($stat && $stat['comment']) {
+ $stat['pc1'] = dround($stat['star1']*100/$stat['comment'], 2, true).'%';
+ $stat['pc2'] = dround($stat['star2']*100/$stat['comment'], 2, true).'%';
+ $stat['pc3'] = dround($stat['star3']*100/$stat['comment'], 2, true).'%';
+ $stat['pc4'] = dround($stat['star4']*100/$stat['comment'], 2, true).'%';
+ $stat['pc5'] = dround($stat['star5']*100/$stat['comment'], 2, true).'%';
+ } else {
+ $stat['star1'] = $stat['star2'] = $stat['star3'] = $stat['star4'] = $stat['star5'] = 0;
+ $stat['pc1'] = $stat['pc2'] = $stat['pc3'] = $stat['pc4'] = $stat['pc5'] = '0%';
+ }
+ $faces = get_face();
+ }
+ }
+ $moduleid = $mid;
+ $head_title = $title.$L['comment_title'].$DT['seo_delimiter'].$MODULE[$mid]['name'];
+ break;
+}
+$template = $ext;
+if($DT_PC) {
+ $CSS = array('comment');
+ $destoon_task = rand_task();
+ if($EXT['mobile_enable']) $head_mobile = str_replace($url, $mob, $DT_URL);
+} else {
+ $pages = mobile_pages($items, $page, $pagesize);
+ $head_name = $L['comment_title'];
+ if($sns_app) $seo_title = $site_name;
+ $foot = '';
+}
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/extend/form.class.php b/module/extend/form.class.php
new file mode 100644
index 0000000..f5fce1c
--- /dev/null
+++ b/module/extend/form.class.php
@@ -0,0 +1,161 @@
+table = DT_PRE.'form';
+ $this->fields = array('typeid','areaid', 'title','style','level','content','groupid','maxanswer','verify','display','addtime','fromtime','totime','editor','edittime', 'linkurl','template');
+ }
+
+ function form() {
+ $this->__construct();
+ }
+
+ function pass($post) {
+ global $L;
+ if(!is_array($post)) return false;
+ if(!$post['typeid']) return $this->_($L['form_pass_type']);
+ if(!$post['title']) return $this->_($L['form_pass_title']);
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $_username, $_userid;
+ $post['addtime'] = (isset($post['addtime']) && is_time($post['addtime'])) ? datetotime($post['addtime']) : DT_TIME;
+ $post['edittime'] = DT_TIME;
+ $post['editor'] = $_username;
+ $post['content'] = addslashes(save_remote(save_local(stripslashes($post['content']))));
+ if($this->itemid) {
+ $new = $post['content'];
+ $r = $this->get_one();
+ $old = $r['content'];
+ delete_diff($new, $old);
+ }
+ $post['fromtime'] = is_time($post['fromtime']) ? datetotime($post['fromtime']) : 0;
+ $post['totime'] = is_time($post['totime']) ? datetotime($post['totime']) : 0;
+ $post['groupid'] = implode(',', $post['groupid']);
+ $post['maxanswer'] = intval($post['maxanswer']);
+ $post['verify'] = intval($post['verify']);
+ $post['display'] = intval($post['display']);
+ return array_map("trim", $post);
+ }
+
+ function get_one() {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$this->itemid");
+ }
+
+ function get_list($condition = '1', $order = 'addtime DESC') {
+ global $MOD, $TYPE, $pages, $page, $pagesize, $offset, $L, $sum, $items;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['fromdate'] = $r['fromtime'] ? timetodate($r['fromtime'], 3) : $L['timeless'];
+ $r['todate'] = $r['totime'] ? timetodate($r['totime'], 3) : $L['timeless'];
+ $r['typename'] = $TYPE[$r['typeid']]['typename'];
+ $r['typeurl'] = $MOD['form_url'].list_url($r['typeid']);
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function get_list_record($condition = '1', $order = 'rid DESC') {
+ global $MOD, $TYPE, $pages, $page, $pagesize, $offset, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table_record} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table_record} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['formdate'] = timetodate($r['formtime'], 6);
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $DT, $MOD, $module;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ $linkurl = $this->linkurl($this->itemid);
+ DB::query("UPDATE {$this->table} SET linkurl='$linkurl' WHERE itemid=$this->itemid");
+ clear_upload($post['content'], $this->itemid, $this->table);
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ global $DT, $MOD, $module;
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ $linkurl = $this->linkurl($this->itemid);
+ DB::query("UPDATE {$this->table} SET linkurl='$linkurl' WHERE itemid=$this->itemid");
+ clear_upload($post['content'], $this->itemid, $this->table);
+ return true;
+ }
+
+ function linkurl($itemid) {
+ global $MOD;
+ $linkurl = show_url($itemid);
+ return $MOD['form_url'].$linkurl;
+ }
+
+ function delete($itemid) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->delete($v, $all);
+ }
+ } else {
+ $this->itemid = $itemid;
+ $r = $this->get_one();
+ $userid = get_user($r['editor']);
+ if($r['content']) delete_local($r['content'], $userid);
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ DB::query("DELETE FROM {$this->table}_record WHERE fid=$itemid");
+ DB::query("DELETE FROM {$this->table}_answer WHERE fid=$itemid");
+ DB::query("DELETE FROM {$this->table}_question WHERE fid=$itemid");
+ }
+ }
+
+ function level($itemid, $level) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET level=$level WHERE itemid IN ($itemids)");
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/extend/gift.class.php b/module/extend/gift.class.php
new file mode 100644
index 0000000..e10470f
--- /dev/null
+++ b/module/extend/gift.class.php
@@ -0,0 +1,206 @@
+table = DT_PRE.'gift';
+ $this->table_order = DT_PRE.'gift_order';
+ $this->fields = array('typeid','areaid', 'title','style','thumb','level','credit','amount','groupid','maxorder','content','addtime','fromtime','totime','editor','edittime');
+ }
+
+ function gift() {
+ $this->__construct();
+ }
+
+ function pass($post) {
+ global $L;
+ if(!is_array($post)) return false;
+ if(!$post['typeid']) return $this->_($L['gift_pass_type']);
+ if(!$post['title']) return $this->_($L['gift_pass_title']);
+ if(!$post['thumb']) return $this->_($L['gift_pass_thumb']);
+ if(intval($post['credit']) < 1) return $this->_($L['gift_pass_credit']);
+ if(intval($post['amount']) < 1) return $this->_($L['gift_pass_amount']);
+ if(!$post['groupid']) return $this->_($L['gift_pass_group']);
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $_username, $_userid;
+ $post['addtime'] = (isset($post['addtime']) && is_time($post['addtime'])) ? datetotime($post['addtime']) : DT_TIME;
+ $post['edittime'] = DT_TIME;
+ $post['editor'] = $_username;
+ $post['groupid'] = (isset($post['groupid']) && $post['groupid']) ? ','.implode(',', $post['groupid']).',' : '';
+ $post['credit'] = intval($post['credit']);
+ $post['amount'] = intval($post['amount']);
+ $post['maxorder'] = intval($post['maxorder']);
+ $post['content'] = addslashes(save_remote(save_local(stripslashes($post['content']))));
+ if($this->itemid) {
+ $new = $post['content'];
+ $r = $this->get_one();
+ $old = $r['content'];
+ delete_diff($new, $old);
+ }
+ $post['fromtime'] = is_time($post['fromtime']) ? datetotime($post['fromtime']) : 0;
+ $post['totime'] = is_time($post['totime']) ? datetotime($post['totime']) : 0;
+ return array_map("trim", $post);
+ }
+
+ function get_one() {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid='$this->itemid'");
+ }
+
+ function get_list($condition = '1', $order = 'addtime DESC') {
+ global $MOD, $TYPE, $pages, $page, $pagesize, $offset, $L, $sum, $items;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['alt'] = $r['title'];
+ $r['left'] = $r['amount'] - $r['orders'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['fromdate'] = $r['fromtime'] ? timetodate($r['fromtime'], 3) : $L['timeless'];
+ $r['todate'] = $r['totime'] ? timetodate($r['totime'], 3) : $L['timeless'];
+ $r['typename'] = $TYPE[$r['typeid']]['typename'];
+ $r['typeurl'] = $MOD['gift_url'].list_url($r['typeid']);
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function get_one_order() {
+ return DB::get_one("SELECT g.title,g.linkurl,o.* FROM {$this->table_order} o LEFT JOIN {$this->table} g ON g.itemid=o.itemid WHERE o.oid='$this->itemid'");
+ }
+
+ function get_list_order($condition = '1', $order = 'o.addtime DESC') {
+ global $items, $pages, $page, $pagesize, $offset, $L, $items;
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table_order} o LEFT JOIN {$this->table} g ON g.itemid=o.itemid WHERE $condition");
+ $items = $r['num'];
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT g.title,g.linkurl,o.* FROM {$this->table_order} o LEFT JOIN {$this->table} g ON g.itemid=o.itemid WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function get_my_order($condition = '1', $order = 'oid DESC') {
+ global $MOD, $TYPE, $pages, $page, $pagesize, $offset, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table_order} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = DB::query("SELECT g.title,g.linkurl,o.* FROM {$this->table_order} o LEFT JOIN {$this->table} g ON g.itemid=o.itemid WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function update_order($post) {
+ foreach($post as $k=>$v) {
+ if(isset($v['delete'])) {
+ DB::query("DELETE FROM {$this->table_order} WHERE oid=$k");
+ DB::query("UPDATE {$this->table} SET orders=orders-1 WHERE itemid='$v[itemid]'");
+ } else {
+ $v = dhtmlspecialchars($v);
+ $v = array_map("trim", $v);
+ $sql = "status='$v[status]',express='$v[express]',expressid='$v[expressid]'";
+ if($v['status'] != $v['item_status'] || $v['note'] != $v['item_note'] || $v['express'] != $v['item_express'] || $v['expressid'] != $v['item_expressid']) $sql .= ",edittime=".DT_TIME;
+ $note = strpos($v['note'], $v['status']) === false ? timetodate(DT_TIME).' '.$v['status']."\n".$v['note'] : $v['note'];
+ if($v['express'] != $v['item_express']) $note = timetodate(DT_TIME).' '.$v['express']."\n".$note;
+ if($v['expressid'] != $v['item_expressid']) $note = timetodate(DT_TIME).' '.$v['expressid']."\n".$note;
+ $sql .= ",note='$note'";
+ DB::query("UPDATE {$this->table_order} SET $sql WHERE oid=$k");
+ }
+ }
+ }
+
+ function add($post) {
+ global $DT, $MOD, $module;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ $linkurl = $this->linkurl($this->itemid);
+ DB::query("UPDATE {$this->table} SET linkurl='$linkurl' WHERE itemid=$this->itemid");
+ clear_upload($post['content'].$post['thumb'], $this->itemid, $this->table);
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ global $DT, $MOD, $module;
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ $linkurl = $this->linkurl($this->itemid);
+ DB::query("UPDATE {$this->table} SET linkurl='$linkurl' WHERE itemid=$this->itemid");
+ clear_upload($post['content'].$post['thumb'], $this->itemid, $this->table);
+ return true;
+ }
+
+ function linkurl($itemid) {
+ global $MOD;
+ $linkurl = show_url($itemid);
+ return $MOD['gift_url'].$linkurl;
+ }
+
+ function delete($itemid) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->delete($v, $all);
+ }
+ } else {
+ $this->itemid = $itemid;
+ $r = $this->get_one();
+ $userid = get_user($r['editor']);
+ if($r['content']) delete_local($r['content'], $userid);
+ if($r['thumb']) delete_upload($r['thumb'], $userid);
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ DB::query("DELETE FROM {$this->table_order} WHERE itemid=$itemid");
+ }
+ }
+
+ function level($itemid, $level) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET level=$level WHERE itemid IN ($itemids)");
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/extend/gift.inc.php b/module/extend/gift.inc.php
new file mode 100644
index 0000000..feb9ea6
--- /dev/null
+++ b/module/extend/gift.inc.php
@@ -0,0 +1,110 @@
+get_my_order($condition);
+ $head_title = $L['gift_my_order'].$DT['seo_delimiter'].$L['gift_title'];
+ break;
+ case 'order':
+ login();
+ $itemid or dheader($DT_PC ? $url : $mob);
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ $item or dheader($DT_PC ? $url : $mob);
+ extract($item);
+ $left = $amount - $orders > 0 ? $amount - $orders : 0;
+ $process = $left ? get_process($fromtime, $totime) : 4;
+ $_url = $DT_PC ? $linkurl : str_replace($url, $mob, $linkurl);
+ if($process == 1) dalert($L['gift_error_1'], $_url);
+ if($process == 3) dalert($L['gift_error_3'], $_url);
+ if($process == 4) dalert($L['gift_error_4'], $_url);
+ if($_credit < $credit) dalert($L['gift_error_5'], $_url);
+ if(!check_group($_groupid, $groupid)) dalert($L['gift_error_6'], $_url);
+ if($maxorder) {
+ $num = $db->count($DT_PRE.'gift_order', "itemid=$itemid AND username='$_username'");
+ if($num >= $maxorder) dalert($L['gift_error_7'], 'index.php?action=my');
+ }
+ if($EXT['gift_time']) {
+ $t = $db->get_one("SELECT * FROM {$DT_PRE}gift_order WHERE username='$_username'");
+ if($t && $DT_TIME - $t['addtime'] < $EXT['gift_time']) dalert($L['gift_error_8'], $_url);
+ }
+ credit_add($_username, -$credit);
+ credit_record($_username, -$credit, 'system', $L['gift_credit_reason'], 'ID:'.$itemid);
+ $db->query("INSERT INTO {$DT_PRE}gift_order (itemid,credit,username,ip,addtime,edittime,status) VALUES ('$itemid','$credit','$_username','$DT_IP','$DT_TIME','$DT_TIME','".$L['gift_status']."')");
+ $db->query("UPDATE {$DT_PRE}gift SET orders=orders+1 WHERE itemid=$itemid");
+ dheader('index.php?success=1&itemid='.$itemid);
+ break;
+ default:
+ if($itemid) {
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ $item or dheader($url);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $left = $amount - $orders > 0 ? $amount - $orders : 0;
+ $process = $left ? get_process($fromtime, $totime) : 4;
+ $adddate = timetodate($addtime, 3);
+ $fromdate = $fromtime ? timetodate($fromtime, 3) : $L['timeless'];
+ $todate = $totime ? timetodate($totime, 3) : $L['timeless'];
+ $middle = str_replace('.thumb.', '.middle.', $thumb);
+ $large = str_replace('.thumb.'.file_ext($thumb), '', $thumb);
+ $gname = '';
+ if($groupid) {
+ $GROUP = cache_read('group.php');
+ foreach(explode(',', $groupid) as $gid) {
+ if(isset($GROUP[$gid])) $gname .= $GROUP[$gid]['groupname'].' ';
+ }
+ }
+ $content = DC::format($content, $DT_PC);
+ if(!$DT_BOT) $db->query("UPDATE LOW_PRIORITY {$DT_PRE}{$ext} SET hits=hits+1 WHERE itemid=$itemid", 'UNBUFFERED');
+ $head_title = $title.$DT['seo_delimiter'].$L['gift_title'];
+ } else {
+ $pagesize = 10;
+ $offset = ($page-1)*$pagesize;
+ $head_title = $L['gift_title'];
+ if($catid) $typeid = $catid;
+ $condition = "1";
+ if($typeid) {
+ isset($TYPE[$typeid]) or dheader($url);
+ $condition .= " AND typeid IN (".type_child($typeid, $TYPE).")";
+ $head_title = $TYPE[$typeid]['typename'].$DT['seo_delimiter'].$head_title;
+ }
+ if($keyword) $condition .= match_kw('title', $keyword);
+ if($cityid) $condition .= ($AREA[$cityid]['child']) ? " AND areaid IN (".$AREA[$cityid]['arrchildid'].")" : " AND areaid=$cityid";
+ $lists = $do->get_list($condition, 'addtime DESC');
+ }
+ break;
+}
+$template = $ext;
+if($DT_PC) {
+ $destoon_task = rand_task();
+ if($EXT['mobile_enable']) $head_mobile = str_replace($url, $mob, $DT_URL);
+} else {
+ if($action == 'my') {
+ $pages = mobile_pages($items, $page, $pagesize);
+ } else {
+ if($itemid) {
+ $js_item = 1;
+ } else {
+ $pages = mobile_pages($items, $page, $pagesize);
+ }
+ }
+ $head_name = $L['gift_title'];
+ if($sns_app) $seo_title = $site_name;
+ $foot = '';
+}
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/extend/global.func.php b/module/extend/global.func.php
new file mode 100644
index 0000000..50b2014
--- /dev/null
+++ b/module/extend/global.func.php
@@ -0,0 +1,36 @@
+ 5) {
+ if($ad['key_word']) {
+ return 'ad_t'.$ad['typeid'].'_m'.$ad['key_moduleid'].'_k'.urlencode($ad['key_word']).'_'.$ad['areaid'].'.htm';
+ } else if($ad['key_catid']) {
+ return 'ad_t'.$ad['typeid'].'_m'.$ad['key_moduleid'].'_c'.$ad['key_catid'].'_'.$ad['areaid'].'.htm';
+ } else {
+ return 'ad_t'.$ad['typeid'].'_m'.$ad['key_moduleid'].'_'.$ad['areaid'].'.htm';
+ }
+ } else {
+ return 'ad_'.$ad['pid'].'_'.$ad['areaid'].'.htm';
+ }
+ return '';
+}
+?>
\ No newline at end of file
diff --git a/module/extend/guestbook.class.php b/module/extend/guestbook.class.php
new file mode 100644
index 0000000..56efc3b
--- /dev/null
+++ b/module/extend/guestbook.class.php
@@ -0,0 +1,149 @@
+table = DT_PRE.'guestbook';
+ $this->fields = array( 'title','areaid','mid','tid','rid','content','truename','telephone','email','qq','wx','ali','skype','hidden','status','username','addtime', 'ip', 'reply','editor','edittime');
+ }
+
+ function guestbook() {
+ $this->__construct();
+ }
+
+ function pass($post) {
+ global $L;
+ if(!is_array($post)) return false;
+ if(!$post['content']) return $this->_($L['gbook_pass_content']);
+ return true;
+ }
+
+ function set($post) {
+ global $_username, $_cname, $TYPE;
+ $post['content'] = strip_tags($post['content']);
+ $post['title'] = in_array($post['type'], $TYPE) ? '['.$post['type'].']' : '';
+ $post['title'] .= dsubstr($post['content'], 30);
+ $post['title'] = daddslashes($post['title']);
+ $post['hidden'] = (isset($post['hidden']) && $post['hidden']) ? 1 : 0;
+ $post['mid'] = intval($post['mid']);
+ $post['tid'] = intval($post['tid']);
+ $post['rid'] = intval($post['rid']);
+ if($this->itemid) {
+ $post['status'] = $post['status'] == 2 ? 2 : 3;
+ $post['editor'] = $_cname ? $_cname : $_username;
+ $post['edittime'] = is_time($post['edittime']) ? strtotime($post['edittime']) : DT_TIME;
+ } else {
+ $post['username'] = $_username;
+ $post['addtime'] = DT_TIME;
+ $post['ip'] = DT_IP;
+ $post['edittime'] = 0;
+ $post['reply'] = '';
+ $post['status'] = 2;
+ }
+ $post = dhtmlspecialchars($post);
+ return array_map("trim", $post);
+ }
+
+ function get_one() {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid='$this->itemid'");
+ }
+
+ function get_list($condition = 'status=3', $order = 'itemid DESC') {
+ global $MOD, $pages, $page, $pagesize, $offset, $sum, $items;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['content'] = nl2br($r['content']);
+ $r['editdate'] = '--';
+ if($r['reply']) {
+ $r['reply'] = nl2br($r['reply']);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ }
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->update($post);
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ return true;
+ }
+
+ function delete($itemid) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->delete($v); }
+ } else {
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ }
+ }
+
+ function check($itemid, $status) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->check($v, $status); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=$status WHERE itemid=$itemid");
+ }
+ }
+
+ function update($post) {
+ global $MODULE;
+ $mid = $post['mid'];
+ $tid = $post['tid'];
+ $rid = $post['rid'];
+ if($mid > 2) {
+ if($rid) {
+ if($mid == 3) {
+ $table = DT_PRE.'comment';
+ } else if($MODULE[$mid]['module'] == 'know') {
+ $table = DT_PRE.'know_answer_'.$mid;
+ } else if($MODULE[$mid]['module'] == 'club') {
+ $table = DT_PRE.'club_reply_'.$mid;
+ }
+ $id = $rid;
+ } else {
+ $table = get_table($mid);
+ $id = $tid;
+ }
+ $fd = $mid == 4 ? 'userid' : 'itemid';
+ if($table) DB::query("UPDATE {$table} SET reports=reports+1 WHERE `{$fd}`=$id");
+ }
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/extend/index.html b/module/extend/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/extend/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/extend/link.class.php b/module/extend/link.class.php
new file mode 100644
index 0000000..48b2a7f
--- /dev/null
+++ b/module/extend/link.class.php
@@ -0,0 +1,138 @@
+table = DT_PRE.'link';
+ $this->fields = array('typeid','areaid','level','title','style','thumb','introduce','addtime','editor','edittime','template', 'status', 'linkurl');
+ }
+
+ function dlink() {
+ $this->__construct();
+ }
+
+ function pass($post) {
+ global $L;
+ if(!is_array($post)) return false;
+ if(!$post['typeid']) return $this->_($L['link_pass_type']);
+ if(!$post['title']) return $this->_($L['link_pass_site']);
+ if(!is_url($post['linkurl'])) return $this->_($L['link_pass_url']);
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $_username, $_userid;
+ if(!$this->itemid) $post['addtime'] = DT_TIME;
+ if($post['thumb'] && !is_url($post['thumb'])) $post['thumb'] = '';
+ $post['edittime'] = DT_TIME;
+ $post['editor'] = $_username;
+ $post = dhtmlspecialchars($post);
+ return array_map("trim", $post);
+ }
+
+ function get_one() {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid='$this->itemid'");
+ }
+
+ function get_list($condition = '1', $order = 'listorder DESC, itemid DESC') {
+ global $MOD, $TYPE, $pages, $page, $pagesize, $offset, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['typename'] = $TYPE[$r['typeid']]['typename'];
+ $r['typeurl'] = $MOD['link_url'].list_url($r['typeid']);
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $DT, $MOD, $module;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ clear_upload($post['thumb'], $this->itemid, $this->table);
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ global $DT, $MOD, $module;
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ clear_upload($post['thumb'], $this->itemid, $this->table);
+ return true;
+ }
+
+ function delete($itemid, $all = true) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->delete($v, $all);
+ }
+ } else {
+ $this->itemid = $itemid;
+ $r = $this->get_one();
+ if($all) {
+ $userid = get_user($r['editor']);
+ if($r['thumb']) delete_upload($r['thumb'], $userid);
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ }
+ }
+ }
+
+ function check($itemid) {
+ global $_username;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->check($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=3,editor='$_username',edittime=".DT_TIME." WHERE itemid=$itemid");
+ return true;
+ }
+ }
+
+ function order($listorder) {
+ if(!is_array($listorder)) return false;
+ foreach($listorder as $k=>$v) {
+ $k = intval($k);
+ $v = intval($v);
+ DB::query("UPDATE {$this->table} SET listorder=$v WHERE itemid=$k");
+ }
+ return true;
+ }
+
+ function level($itemid, $level) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET level=$level WHERE itemid IN ($itemids)");
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/extend/rss.inc.php b/module/extend/rss.inc.php
new file mode 100644
index 0000000..e03c786
--- /dev/null
+++ b/module/extend/rss.inc.php
@@ -0,0 +1,59 @@
+ 4 && isset($MODULE[$mid]) && !$MODULE[$mid]['islink']) {
+ $moduleid = $mid;
+ $module = $MODULE[$mid]['module'];
+ $modurl = $MODULE[$mid]['linkurl'];
+ $table = get_table($mid);
+ $rss_title = $MODULE[$mid]['name'];
+ if($MOD['feed_enable']) {
+ $pagesize = $MOD['feed_pagesize'] ? intval($MOD['feed_pagesize']) : 50;
+ $condition = "status=3";
+ if($MOD['feed_enable'] == 2) {
+ if($kw) $rss_title = $rss_title.$DT['seo_delimiter'].$kw;
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($catid) {
+ $condition .= $CAT['child'] ? " and catid IN (".$CAT['arrchildid'].")" : " and catid=$catid";
+ $rss_title = $rss_title.$DT['seo_delimiter'].strip_tags(cat_pos($catid, $DT['seo_delimiter']));
+ }
+ if($areaid) {
+ $condition .= $ARE['child'] ? " and areaid IN (".$ARE['arrchildid'].")" : " and areaid=$areaid";
+ $rss_title = $rss_title.$DT['seo_delimiter'].strip_tags(area_pos($areaid, $DT['seo_delimiter']));
+ }
+ }
+ }
+ $rss_title = $rss_title.$DT['seo_delimiter'].$DT['sitename'];
+ header("content-type:application/xml");
+ echo '';
+ echo '';
+ echo '';
+ echo ''.$rss_title.' ';
+ echo ' '.$modurl.'';
+ echo ''.timetodate($DT_TIME).' ';
+ if($MOD['feed_enable']) {
+ $result = $db->query("SELECT itemid,title,introduce,linkurl,addtime FROM {$table} WHERE {$condition} ORDER BY addtime DESC LIMIT 0,$pagesize", 'CACHE');
+ while($r = $db->fetch_array($result)) {
+ echo '- ';
+ echo '
';
+ echo ' '.$modurl.str_replace('&', '&', $r['linkurl']).'';
+ echo ' ';
+ echo ''.timetodate($r['addtime'], 6).' ';
+ echo ' ';
+ }
+ } else {
+ echo '- ';
+ echo '
';
+ echo ' '.DT_PATH.'';
+ echo ' ';
+ echo ''.timetodate($DT_TIME, 6).' ';
+ echo ' ';
+ }
+ echo ' ';
+ echo ' ';
+} else {
+ dheader('./');
+}
+?>
\ No newline at end of file
diff --git a/module/extend/sitemaps.htm.php b/module/extend/sitemaps.htm.php
new file mode 100644
index 0000000..9162cea
--- /dev/null
+++ b/module/extend/sitemaps.htm.php
@@ -0,0 +1,92 @@
+';
+$data .= '';
+$data .= '';
+$data .= ''.DT_PATH.' ';
+$data .= ''.$today.' ';
+$data .= 'always ';
+$data .= '1.0 ';
+$data .= ' ';
+$item = '';
+foreach($mods as $mid) {
+ if(isset($MODULE[$mid]) && !$MODULE[$mid]['islink'] && !$MODULE[$mid]['domain']) {
+ if($mid == 4 && $CFG['com_domain']) continue;
+ $url = $MODULE[$mid]['linkurl'];
+ $data .= '';
+ $data .= ''.$url.' ';
+ $data .= ''.$today.' ';
+ $data .= 'hourly ';
+ $data .= '0.9 ';
+ $data .= ' ';
+ if($nums) {
+ $fields = $mid == 4 ? 'linkurl' : 'linkurl,edittime';
+ $order = $mid == 4 ? 'userid' : 'addtime';
+ $condition = $mid == 4 ? "catids<>''" : "status>2";
+ $result = $db->query("SELECT $fields FROM ".get_table($mid)." WHERE $condition ORDER BY $order DESC LIMIT $nums");
+ while($r = $db->fetch_array($result)) {
+ $item .= '';
+ $item .= ''.xml_linkurl($r['linkurl'], $url).' ';
+ $item .= ''.($mid == 4 ? $today : timetodate($r['edittime'], 3)).' ';
+ $item .= ''.$MOD['sitemaps_changefreq'].' ';
+ $item .= ''.$MOD['sitemaps_priority'].' ';
+ $item .= ' ';
+ }
+ }
+ }
+}
+$data .= $item;
+$data .= ' ';
+$data = str_replace('><', ">\n<", $data);
+file_put(DT_ROOT.'/sitemaps.xml', $data);
+foreach($mods as $mid) {
+ if(isset($MODULE[$mid]) && !$MODULE[$mid]['islink'] && $MODULE[$mid]['domain']) {
+ if($mid == 4 && $CFG['com_domain']) continue;
+ $url = $MODULE[$mid]['linkurl'];
+ $data = '';
+ $data .= '';
+ $data .= '';
+ $data .= ''.$url.' ';
+ $data .= ''.$today.' ';
+ $data .= 'always ';
+ $data .= '1.0 ';
+ $data .= ' ';
+ foreach(cache_read('category-'.$mid.'.php') as $c) {
+ $data .= '';
+ $data .= ''.$url.$c['linkurl'].' ';
+ $data .= ''.$today.' ';
+ $data .= 'hourly ';
+ $data .= '0.9 ';
+ $data .= ' ';
+ }
+ $item = '';
+ $nums = intval($MOD['sitemaps_items']);
+ if($nums) {
+ $fields = $mid == 4 ? 'linkurl' : 'linkurl,edittime';
+ $order = $mid == 4 ? 'userid' : 'addtime';
+ $condition = $mid == 4 ? "catids<>''" : "status>2";
+ $result = $db->query("SELECT $fields FROM ".get_table($mid)." WHERE $condition ORDER BY $order DESC LIMIT $nums");
+ while($r = $db->fetch_array($result)) {
+ $item .= '';
+ $item .= ''.xml_linkurl($r['linkurl'], $url).' ';
+ $item .= ''.($mid == 4 ? $today : timetodate($r['edittime'], 3)).' ';
+ $item .= ''.$MOD['sitemaps_changefreq'].' ';
+ $item .= ''.$MOD['sitemaps_priority'].' ';
+ $item .= ' ';
+ }
+ }
+ $data .= $item;
+ $data .= ' ';
+ $data = str_replace('><', ">\n<", $data);
+ file_put(DT_ROOT.'/'.$MODULE[$mid]['moduledir'].'/sitemaps.xml', $data);
+ }
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/extend/spread.class.php b/module/extend/spread.class.php
new file mode 100644
index 0000000..92548c5
--- /dev/null
+++ b/module/extend/spread.class.php
@@ -0,0 +1,190 @@
+table = DT_PRE.'spread';
+ $this->table_price = DT_PRE.'spread_price';
+ $this->fields = array('mid','tid', 'word','price','currency','addtime','fromtime','totime','editor','edittime','username','company','status','note');
+ }
+
+ function spread() {
+ $this->__construct();
+ }
+
+ function pass($post) {
+ global $L;
+ if(!is_array($post)) return false;
+ if(!$post['word']) return $this->_($L['spread_pass_word']);
+ if(!$post['price']) return $this->_($L['spread_pass_price']);
+ if(!is_time($post['fromtime']) || !is_time($post['totime'])) return $this->_($L['spread_pass_period']);
+ if(!intval($post['tid'])) return $this->_($L['spread_pass_tid']);
+ if(!$post['username']) return $this->_($L['spread_pass_username']);
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $_username, $_userid;
+ $post['status'] = $post['status'] == 3 ? 3 : 2;
+ $post['addtime'] = DT_TIME;
+ $post['edittime'] = DT_TIME;
+ $post['editor'] = $_username;
+ $post['price'] = dround($post['price']);
+ $post['fromtime'] = datetotime($post['fromtime']);
+ $post['totime'] = datetotime($post['totime']);
+ $m = DB::get_one("SELECT company FROM ".DT_PRE."member WHERE username='$post[username]'");
+ if($m) $post['company'] = $m['company'];
+ return array_map("trim", $post);
+ }
+
+ function get_one() {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid='$this->itemid'");
+ }
+
+ function get_list($condition = '1', $order = 'itemid DESC') {
+ global $pages, $page, $pagesize, $offset, $L, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['fromdate'] = timetodate($r['fromtime'], 3);
+ $r['todate'] = timetodate($r['totime'], 3);
+ if($r['totime'] < DT_TIME) {
+ $r['process'] = $L['status_expired'];
+ } else if($r['fromtime'] > DT_TIME) {
+ $r['process'] = $L['status_not_start'];
+ } else {
+ $r['process'] = $L['status_displaying'];
+ }
+ $r['days'] = $r['totime'] > DT_TIME ? intval(($r['totime'] - DT_TIME)/86400) : 0;
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $module;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ global $module;
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ return true;
+ }
+
+ function delete($itemid) {
+ global $module;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->delete($v, $all);
+ }
+ } else {
+ $this->itemid = $itemid;
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ }
+ }
+
+ function check($itemid, $status) {
+ global $_username;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->check($v, $status); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=$status,editor='$_username',edittime=".DT_TIME." WHERE itemid=$itemid");
+ return true;
+ }
+ }
+
+ function get_price_list($condition = '1', $order = 'itemid DESC') {
+ global $pages, $page, $pagesize, $offset, $pagesize, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table_price} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table_price} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['edittime'] = timetodate($r['edittime'], 6);
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function price_update($post) {
+ $this->_add($post[0]);
+ unset($post[0]);
+ foreach($post as $k=>$v) {
+ if(isset($v['delete'])) {
+ $this->_delete($k);
+ unset($post[$k]);
+ }
+ }
+ $this->_edit($post);
+ return true;
+ }
+
+ function _add($post) {
+ global $_username;
+ $mid = intval($post['mid']);
+ if($mid < 4) return false;
+ $word = trim($post['word']);
+ $price = dround($post['price']);
+ if($price < 0.01) return false;
+ $t = DB::get_one("SELECT * FROM {$this->table_price} WHERE mid=$mid AND word='$word'");
+ if($t) {
+ $itemid = $t['itemid'];
+ DB::query("UPDATE {$this->table_price} SET price='$price',edittime='".DT_TIME."',editor='$_username' WHERE itemid='$itemid'");
+ } else {
+ DB::query("INSERT INTO {$this->table_price} (mid,word,price,editor,edittime) VALUES('$mid','$word','$price','$_username','".DT_TIME."')");
+ }
+ }
+
+ function _edit($post) {
+ foreach($post as $k=>$v) {
+ $price = dround($v['price']);
+ if($price > 0 && $price != dround($v['oldprice'])) DB::query("UPDATE {$this->table_price} SET price='$price',edittime='".DT_TIME."',editor='$_username' WHERE itemid='$k'");
+ }
+ }
+
+ function _delete($itemid) {
+ DB::query("DELETE FROM {$this->table_price} WHERE itemid=$itemid");
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/extend/task.inc.php b/module/extend/task.inc.php
new file mode 100644
index 0000000..e3b0cc6
--- /dev/null
+++ b/module/extend/task.inc.php
@@ -0,0 +1,36 @@
+get_one("SELECT linkurl,islink FROM {$DT_PRE}webpage WHERE itemid=$itemid");
+ $r or exit;
+ $r['islink'] and exit;
+ if(!$DT_BOT) $db->query("UPDATE LOW_PRIORITY {$DT_PRE}webpage SET hits=hits+1 WHERE itemid=$itemid", 'UNBUFFERED');
+ if($DT_TIME - @filemtime(DT_ROOT.'/'.$r['linkurl']) > $task_item) tohtml('webpage', $module);
+} else if($html == 'spread') {
+ $r = $db->get_one("SELECT * FROM {$DT_PRE}spread ORDER BY rand()");
+ $r or exit;
+ $itemid = $r['itemid'];
+ $filename = DT_CACHE.'/htm/m'.$r['mid'].'_k'.urlencode($r['word']).'.htm';
+ if($DT_TIME - @filemtime($filename) > $task_item) {
+ $MOD = cache_read('module-'.$r['mid'].'.php');
+ tohtml('spread', $module);
+ }
+} else if($html == 'ad') {
+ $a = $db->get_one("SELECT * FROM {$DT_PRE}ad ORDER BY rand()");
+ $a or exit;
+ $aid = $a['aid'];
+ if($DT_TIME - @filemtime(DT_CACHE.'/htm/'.ad_name($a)) > $task_item) {
+ if($a['typeid'] == 6) {
+ $MOD['linkurl'] = $MODULE[$a['key_moduleid']]['linkurl'];
+ }
+ tohtml('ad', $module);
+ }
+} else if($html == 'xml') {
+ $MOD = $EXT;
+ if($MOD['sitemaps'] && ($DT_TIME - @filemtime(DT_ROOT.'/sitemaps.xml') > $MOD['sitemaps_update']*60)) tohtml('sitemaps', $module);
+ if($MOD['baidunews'] && ($DT_TIME - @filemtime(DT_ROOT.'/baidunews.xml') > $MOD['baidunews_update']*60)) tohtml('baidunews', $module);
+ if(!$_userid) $dc->expire();
+}
+?>
\ No newline at end of file
diff --git a/module/extend/view.inc.php b/module/extend/view.inc.php
new file mode 100644
index 0000000..00083c1
--- /dev/null
+++ b/module/extend/view.inc.php
@@ -0,0 +1,31 @@
+
\ No newline at end of file
diff --git a/module/extend/vote.class.php b/module/extend/vote.class.php
new file mode 100644
index 0000000..e8482f7
--- /dev/null
+++ b/module/extend/vote.class.php
@@ -0,0 +1,162 @@
+table = DT_PRE.'vote';
+ $this->table_record = DT_PRE.'vote_record';
+ $this->fields = array('typeid','areaid', 'title','style','level','linkto','content','groupid','verify','addtime','fromtime','totime','editor','edittime','template_vote','template', 'vote_min', 'vote_max', 'linkurl', 'choose', 's1', 's2', 's3', 's4', 's5', 's6', 's7', 's8', 's9', 's10');
+ }
+
+ function vote() {
+ $this->__construct();
+ }
+
+ function pass($post) {
+ global $L;
+ if(!is_array($post)) return false;
+ if(!$post['typeid']) return $this->_($L['vote_pass_type']);
+ if(!$post['title']) return $this->_($L['vote_pass_title']);
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $_username, $_userid;
+ $post['addtime'] = (isset($post['addtime']) && is_time($post['addtime'])) ? datetotime($post['addtime']) : DT_TIME;
+ $post['edittime'] = DT_TIME;
+ $post['editor'] = $_username;
+ $post['content'] = addslashes(save_remote(save_local(stripslashes($post['content']))));
+ if($this->itemid) {
+ $new = $post['content'];
+ $r = $this->get_one();
+ $old = $r['content'];
+ delete_diff($new, $old);
+ }
+ $post['fromtime'] = is_time($post['fromtime']) ? datetotime($post['fromtime']) : 0;
+ $post['totime'] = is_time($post['totime']) ? datetotime($post['totime']) : 0;
+ $post['groupid'] = implode(',', $post['groupid']);
+ $post['verify'] = intval($post['verify']);
+ return array_map("trim", $post);
+ }
+
+ function get_one() {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid='$this->itemid'");
+ }
+
+ function get_list($condition = '1', $order = 'addtime DESC') {
+ global $MOD, $TYPE, $pages, $page, $pagesize, $offset, $L, $sum, $items;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['fromdate'] = $r['fromtime'] ? timetodate($r['fromtime'], 3) : $L['timeless'];
+ $r['todate'] = $r['totime'] ? timetodate($r['totime'], 3) : $L['timeless'];
+ $r['typename'] = $TYPE[$r['typeid']]['typename'];
+ $r['typeurl'] = $MOD['vote_url'].list_url($r['typeid']);
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function get_list_record($condition = '1', $order = 'rid DESC') {
+ global $MOD, $TYPE, $pages, $page, $pagesize, $offset, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table_record} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table_record} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['votedate'] = timetodate($r['votetime'], 6);
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $DT, $MOD, $module;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ $linkurl = $this->linkurl($this->itemid);
+ DB::query("UPDATE {$this->table} SET linkurl='$linkurl' WHERE itemid=$this->itemid");
+ clear_upload($post['content'], $this->itemid, $this->table);
+ tohtml('vote', $module, "itemid=$this->itemid");
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ global $DT, $MOD, $module;
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ $linkurl = $this->linkurl($this->itemid);
+ DB::query("UPDATE {$this->table} SET linkurl='$linkurl' WHERE itemid=$this->itemid");
+ clear_upload($post['content'], $this->itemid, $this->table);
+ tohtml('vote', $module, "itemid=$this->itemid");
+ return true;
+ }
+
+ function linkurl($itemid) {
+ global $MOD;
+ $linkurl = show_url($itemid);
+ return $MOD['vote_url'].$linkurl;
+ }
+
+ function delete($itemid) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->delete($v, $all);
+ }
+ } else {
+ $this->itemid = $itemid;
+ $r = $this->get_one();
+ $userid = get_user($r['editor']);
+ if($r['content']) delete_local($r['content'], $userid);
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ DB::query("DELETE FROM {$this->table_record} WHERE itemid=$itemid");
+ unlink(DT_CACHE.'/htm/vote_'.$r['itemid'].'.htm');
+ }
+ }
+
+ function level($itemid, $level) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET level=$level WHERE itemid IN ($itemids)");
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/extend/vote.htm.php b/module/extend/vote.htm.php
new file mode 100644
index 0000000..337e495
--- /dev/null
+++ b/module/extend/vote.htm.php
@@ -0,0 +1,20 @@
+get_one("SELECT * FROM {$DT_PRE}vote WHERE itemid=$itemid");
+if(!$item) return false;
+extract($item);
+$votes = array();
+for($i = 1; $i < 11; $i++) {
+ $s = 's'.$i;
+ if($$s) $votes[$i] = $$s;
+}
+$type = $choose ? 'checkbox' : 'radio';
+$template = $item['template_vote'] ? $item['template_vote'] : 'vote';
+ob_start();
+include template($template, 'chip');
+$data = ob_get_contents();
+ob_clean();
+file_put(DT_CACHE.'/htm/vote_'.$itemid.'.htm', $data);
+return true;
+?>
\ No newline at end of file
diff --git a/module/extend/vote.inc.php b/module/extend/vote.inc.php
new file mode 100644
index 0000000..c99de5b
--- /dev/null
+++ b/module/extend/vote.inc.php
@@ -0,0 +1,110 @@
+itemid = $itemid;
+ $item = $do->get_one();
+ $item or dheader($url);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ if($submit) {
+ if($verify == 1) captcha($captcha, 1);
+ if($verify == 2) question($answer, 1);
+ $could_vote = true;
+ $condition = $_username ? "AND username='$_username'" : "AND ip='$DT_IP'";
+ $r = $db->get_one("SELECT rid FROM {$DT_PRE}vote_record WHERE itemid=$itemid $condition");
+ if($r) $could_vote = false;
+ if($fromtime && $DT_TIME < $fromtime) $could_vote = false;
+ if($totime && $DT_TIME > $totime) $could_vote = false;
+ if(!check_group($_groupid, $groupid)) $could_vote = false;
+ if($could_vote) {
+ if($item['choose']) {
+ $ids = array();
+ $num = 0;
+ foreach($vote as $k=>$v) {
+ $s = 's'.$v;
+ if($$s) {
+ $ids[] = $v;
+ ++$num;
+ }
+ }
+ if($num >= $vote_min && $num <= $vote_max) {
+ foreach($ids as $k=>$v) {
+ $v = 'v'.$v;
+ $db->query("UPDATE {$DT_PRE}vote SET votes=votes+1,`{$v}`=`{$v}`+1 WHERE itemid=$itemid");
+ }
+ $i = implode(',', $ids);
+ $db->query("INSERT INTO {$DT_PRE}vote_record (itemid,username,ip,votetime,votes) VALUES ('$itemid','$_username','$DT_IP','$DT_TIME','$i')");
+ }
+ } else {
+ $i = $vote[0];
+ $s = 's'.$i;
+ $v = 'v'.$i;
+ if($$s) {
+ $db->query("UPDATE {$DT_PRE}vote SET votes=votes+1,`{$v}`=`{$v}`+1 WHERE itemid=$itemid");
+ $db->query("INSERT INTO {$DT_PRE}vote_record (itemid,username,ip,votetime,votes) VALUES ('$itemid','$_username','$DT_IP','$DT_TIME','$i')");
+ }
+ }
+ dheader($DT_PC ? $linkurl : str_replace($url, $mob, $linkurl));
+ } else {
+ dalert($L['vote_failed'], $DT_PC ? $linkurl : str_replace($url, $mob, $linkurl));
+ }
+ }
+ $adddate = timetodate($addtime, 3);
+ $fromdate = $fromtime ? timetodate($fromtime, 3) : $L['timeless'];
+ $todate = $totime ? timetodate($totime, 3) : $L['timeless'];
+ $content = DC::format($content, $DT_PC);
+ $V = array();
+ $j = 0;
+ for($i = 1; $i < 11; $i++) {
+ $s = 's'.$i;
+ if($$s) {
+ $V[$i]['title'] = $$s;
+ $v = 'v'.$i;
+ $V[$i]['votes'] = $$v;
+ $V[$i]['percent'] = $item['votes'] ? dround($$v*100/$item['votes'], 2, true).'%' : '0%';
+ $V[$i]['number'] = ++$j;
+ }
+ }
+ if(!$DT_BOT) $db->query("UPDATE LOW_PRIORITY {$DT_PRE}{$ext} SET hits=hits+1 WHERE itemid=$itemid", 'UNBUFFERED');
+ $head_title = $title.$DT['seo_delimiter'].$L['vote_title'];
+ $template = $item['template'] ? $item['template'] : $ext;
+} else {
+ $head_title = $L['vote_title'];
+ if($catid) $typeid = $catid;
+ $condition = '1';
+ if($keyword) $condition .= match_kw('title', $keyword);
+ if($typeid) {
+ isset($TYPE[$typeid]) or dheader($url);
+ $condition .= " AND typeid IN (".type_child($typeid, $TYPE).")";
+ $head_title = $TYPE[$typeid]['typename'].$DT['seo_delimiter'].$head_title;
+ }
+ if($cityid) $condition .= ($AREA[$cityid]['child']) ? " AND areaid IN (".$AREA[$cityid]['arrchildid'].")" : " AND areaid=$cityid";
+ $lists = $do->get_list($condition, 'addtime DESC');
+ $template = $ext;
+}
+if($DT_PC) {
+ $destoon_task = rand_task();
+ if($EXT['mobile_enable']) $head_mobile = str_replace($url, $mob, $DT_URL);
+} else {
+ if($itemid) {
+ $js_item = 1;
+ } else {
+ $pages = mobile_pages($items, $page, $pagesize);
+ }
+ $head_name = $L['vote_title'];
+ if($sns_app) $seo_title = $site_name;
+ $foot = '';
+}
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/extend/webpage.class.php b/module/extend/webpage.class.php
new file mode 100644
index 0000000..c14d034
--- /dev/null
+++ b/module/extend/webpage.class.php
@@ -0,0 +1,179 @@
+table = DT_PRE.'webpage';
+ $this->fields = array('item','areaid', 'title','level','style','content','seo_title','seo_keywords','seo_description','editor','edittime','template', 'islink', 'linkurl','domain');
+ }
+
+ function webpage() {
+ $this->__construct();
+ }
+
+ function pass($post) {
+ global $L;
+ if(!is_array($post)) return false;
+ if(!$post['title']) return $this->_($L['webpage_pass_title']);
+ if(isset($post['islink'])) {
+ if(!$post['linkurl']) return $this->_($L['webpage_pass_linkurl']);
+ } else {
+ if($post['filepath'] && !preg_match("/^[0-9a-z_\-\/]+\/$/i", $post['filepath'])) return $this->_($L['webpage_pass_path']);
+ if($post['filename'] && !preg_match("/^[0-9a-z_\-]+\.html+$/i", $post['filename'])) return $this->_($L['webpage_pass_name']);
+ if($post['filename']) {
+ if($this->itemid) {
+ $r = $this->get_one();
+ if($r['linkurl'] != $post['filepath'].$post['filename']) {
+ if(is_file(DT_ROOT.'/'.$post['filepath'].$post['filename'])) return $this->_($L['webpage_pass_exist']);
+ }
+ } else {
+ if(is_file(DT_ROOT.'/'.$post['filepath'].$post['filename'])) return $this->_($L['webpage_pass_exist']);
+ }
+ }
+ }
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $_username, $_userid;
+ $post['islink'] = isset($post['islink']) ? 1 : 0;
+ $post['edittime'] = DT_TIME;
+ $post['editor'] = $_username;
+ $post['content'] = addslashes(save_remote(save_local(stripslashes($post['content']))));
+ if($this->itemid) {
+ $new = $post['content'];
+ $r = $this->get_one();
+ $old = $r['content'];
+ delete_diff($new, $old);
+ }
+ return array_map("trim", $post);
+ }
+
+ function get_one() {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$this->itemid");
+ }
+
+ function get_list($condition = 'status=3', $order = 'listorder DESC, itemid DESC') {
+ global $MOD, $pages, $page, $pagesize, $offset, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['linkurl'] = $r['domain'] ? $r['domain'] : linkurl($r['linkurl']);
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $DT, $module;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ if(!$post['islink']) {
+ if($post['filename']) {
+ $linkurl = $post['filepath'].$post['filename'];
+ } else {
+ $linkurl = $post['filepath'].$this->itemid.'.'.$DT['file_ext'];
+ }
+ DB::query("UPDATE {$this->table} SET linkurl='$linkurl',listorder=$this->itemid WHERE itemid=$this->itemid");
+ }
+ clear_upload($post['content'], $this->itemid, $this->table);
+ tohtml('webpage', $module, "itemid=$this->itemid");
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ global $DT, $module;
+ $this->delete($this->itemid, false);
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ if(!$post['islink']) {
+ if($post['filename']) {
+ $linkurl = $post['filepath'].$post['filename'];
+ } else {
+ $linkurl = $post['filepath'].$this->itemid.'.'.$DT['file_ext'];
+ }
+ DB::query("UPDATE {$this->table} SET linkurl='$linkurl' WHERE itemid=$this->itemid");
+ }
+ clear_upload($post['content'], $this->itemid, $this->table);
+ tohtml('webpage', $module, "itemid=$this->itemid");
+ return true;
+ }
+
+ function delete($itemid, $all = true) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->delete($v, $all);
+ }
+ } else {
+ $this->itemid = $itemid;
+ $r = $this->get_one();
+ if(!$r['islink']) {
+ $_file = DT_ROOT.'/'.$r['linkurl'];
+ html_del($_file);
+ }
+ if($all) {
+ $userid = get_user($r['editor']);
+ if($r['content']) delete_local($r['content'], $userid);
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ }
+ }
+ }
+
+ function order($listorder) {
+ if(!is_array($listorder)) return false;
+ foreach($listorder as $k=>$v) {
+ $k = intval($k);
+ $v = intval($v);
+ DB::query("UPDATE {$this->table} SET listorder=$v WHERE itemid=$k");
+ }
+ return true;
+ }
+
+ function html() {
+ global $module;
+ $result = DB::query("SELECT * FROM {$this->table} WHERE islink=0");
+ while($r = DB::fetch_array($result)) {
+ $itemid = $r['itemid'];
+ tohtml('webpage', $module, "itemid=$itemid");
+ }
+ return true;
+ }
+
+ function level($itemid, $level) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET level=$level WHERE itemid IN ($itemids)");
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/extend/webpage.htm.php b/module/extend/webpage.htm.php
new file mode 100644
index 0000000..9bf1706
--- /dev/null
+++ b/module/extend/webpage.htm.php
@@ -0,0 +1,38 @@
+get_one("SELECT * FROM {$DT_PRE}webpage WHERE itemid=$itemid");
+if(!$item || $item['islink']) return false;
+require_once DT_ROOT.'/include/content.class.php';
+$_item = $item['item'];
+$cityid = $item['areaid'];
+unset($item['item']);
+extract($item);
+$_content = $content;
+if($content) $content = DC::format($content, 1);
+$head_title = $seo_title ? $seo_title : $title;
+$head_keywords = $seo_keywords;
+$head_description = $seo_description;
+$destoon_task = "moduleid=$moduleid&html=webpage&itemid=$itemid";
+$template = $item['template'] ? $item['template'] : 'webpage';
+if($EXT['mobile_enable']) $head_mobile = DT_MOB.$linkurl;
+$DT_PC = $GLOBALS['DT_PC'] = 1;
+ob_start();
+include template($template, $module);
+$data = ob_get_contents();
+ob_clean();
+file_put(DT_ROOT.'/'.$linkurl, $data);
+if($EXT['mobile_enable']) {
+ include DT_ROOT.'/include/mobile.htm.php';
+ $head_pc = DT_PATH.$linkurl;
+ if($content) $content = DC::format($_content, 0);
+ $js_item = 1;
+ $foot = '';
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put(DT_ROOT.'/mobile/'.$linkurl, $data);
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/extend/wx.inc.php b/module/extend/wx.inc.php
new file mode 100644
index 0000000..5c05304
--- /dev/null
+++ b/module/extend/wx.inc.php
@@ -0,0 +1,29 @@
+
\ No newline at end of file
diff --git a/module/group/admin/config.inc.php b/module/group/admin/config.inc.php
new file mode 100644
index 0000000..50bc85f
--- /dev/null
+++ b/module/group/admin/config.inc.php
@@ -0,0 +1,27 @@
+
\ No newline at end of file
diff --git a/module/group/admin/html.inc.php b/module/group/admin/html.inc.php
new file mode 100644
index 0000000..e60e6ea
--- /dev/null
+++ b/module/group/admin/html.inc.php
@@ -0,0 +1,119 @@
+get_one("SELECT * FROM {$DT_PRE}category WHERE moduleid=$moduleid AND catid>$catids ORDER BY catid");
+ if($CAT) {
+ $bcatid = $catid = $CAT['catid'];
+ $total = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $num = 50;
+ $bfid = $fid;
+ isset($fpage) or $fpage = 1;
+ if($fpage <= $total) {
+ $fid = $fpage;
+ tohtml('list', $module);
+ $fid = $bfid;
+ msg($MOD['name'].' ['.$CAT['catname'].'] 第'.$fpage.'页至第'.($fpage+$num-1).'页生成成功'.progress(0, $fid, $tid), '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids='.$catids.'&fid='.$fid.'&tid='.$tid.'&all='.$all.'&one='.$one.'&fpage='.($fpage+$num), 0);
+ }
+ $fid++;
+ msg($MOD['name'].' ['.$CAT['catname'].'] 生成成功'.progress(0, $fid, $tid), '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids='.$catid.'&fid='.$fid.'&tid='.$tid.'&all='.$all.'&one='.$one);
+ } else {
+ $all ? msg($MOD['name'].'列表生成成功', '?moduleid='.$moduleid.'&file='.$file.'&action=show&all='.$all.'&one='.$one) : msg($MOD['name'].'列表生成成功', $this_forward);
+ }
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}category WHERE moduleid=$moduleid");
+ $tid = $r['num'];
+ msg('', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids=0&fid=1&&tid='.$tid.'&all='.$all.'&one='.$one);
+ }
+ break;
+ case 'show':
+ $update = (isset($update) && $update) ? 1 : 0;
+ if(!$update && !$MOD['show_html']) {
+ if($one) dheader( '?file=html&action=back&mid='.$moduleid);
+ $all ? msg($MOD['name'].'生成成功', $this_forward) : dmsg($MOD['name'].'生成成功', $this_forward);
+ }
+ $catid = isset($catid) ? intval($catid) : '';
+ $sql = $catid ? " AND catid=$catid" : '';
+ if(!isset($fid)) {
+ $r = $db->get_one("SELECT min(itemid) AS fid FROM {$table} WHERE status>2 {$sql}");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ }
+ isset($sid) or $sid = $fid;
+ if(!isset($tid)) {
+ $r = $db->get_one("SELECT max(itemid) AS tid FROM {$table} WHERE status>2 {$sql}");
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ }
+ if($update) {
+ require DT_ROOT.'/module/'.$module.'/'.$module.'.class.php';
+ $do = new $module($moduleid);
+ }
+ isset($num) or $num = 100;
+ if($fid <= $tid) {
+ $result = $db->query("SELECT itemid FROM {$table} WHERE status>2 AND itemid>=$fid {$sql} ORDER BY itemid LIMIT 0,$num");
+ if($db->affected_rows($result)) {
+ while($r = $db->fetch_array($result)) {
+ $itemid = $r['itemid'];
+ $update ? $do->update($itemid) : tohtml('show', $module);
+ }
+ $itemid += 1;
+ } else {
+ $itemid = $fid + $num;
+ }
+ } else {
+ if($update) {
+ $all ? msg('', '?moduleid='.$moduleid.'&file='.$file.'&action=index&all=1&one='.$one) : dmsg('更新成功', $this_forward);
+ } else {
+ if($one) dheader( '?file=html&action=back&mid='.$moduleid);
+ $all ? msg($MOD['name'].'生成成功', $this_forward) : dmsg($MOD['name'].'生成成功', $this_forward);
+ }
+ }
+ msg('ID从'.$fid.'至'.($itemid-1).$MOD['name'].($update ? '更新' : '生成').'成功'.progress($sid, $fid, $tid), "?moduleid=$moduleid&file=$file&action=$action&sid=$sid&fid=$itemid&tid=$tid&num=$num&update=$update&all=$all&one=$one", 0);
+ break;
+ case 'cate':
+ $catid or msg('请选择分类');
+ isset($num) or $num = 50;
+ isset($fid) or $fid = 1;
+ $total = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ if($fpage && $tpage) {
+ $fid = $fpage;
+ $num = $tpage - $fpage + 1;
+ tohtml('list', $module);
+ dmsg('生成成功', $this_forward);
+ }
+ if($fid <= $total) {
+ tohtml('list', $module);
+ msg('第'.$fid.'页至第'.($fid+$num-1).'页生成成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catid='.$catid.'&fid='.($fid+$num).'&num='.$num.'&fpage='.$fpage.'&tpage='.$tpage, 0);
+ } else {
+ dmsg('生成成功', $this_forward);
+ }
+ break;
+ case 'item':
+ $catid or msg('请选择分类');
+ msg('', '?moduleid='.$moduleid.'&file='.$file.'&action=show&catid='.$catid.'&num='.$num);
+ break;
+ default:
+ $r = $db->get_one("SELECT min(itemid) AS fid,max(itemid) AS tid FROM {$table} WHERE status=3");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ include tpl('html', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/group/admin/index.inc.php b/module/group/admin/index.inc.php
new file mode 100644
index 0000000..4f5dcaa
--- /dev/null
+++ b/module/group/admin/index.inc.php
@@ -0,0 +1,275 @@
+[成团中] ',
+ '[团购中] ',
+ '[已结束] ',
+ );
+
+ isset($datetype) && in_array($datetype, array('edittime', 'addtime', 'totime', 'endtime')) or $datetype = 'addtime';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ $level = isset($level) ? intval($level) : 0;
+ $minprice = isset($minprice) ? dround($minprice) : '';
+ $minprice or $minprice = '';
+ $maxprice = isset($maxprice) ? dround($maxprice) : '';
+ $maxprice or $maxprice = '';
+ $minmarketprice = isset($minmarketprice) ? dround($minmarketprice) : '';
+ $minmarketprice or $minmarketprice = '';
+ $maxmarketprice = isset($maxmarketprice) ? dround($maxmarketprice) : '';
+ $maxmarketprice or $maxmarketprice = '';
+ $minamount = isset($minamount) ? dround($minamount) : '';
+ $minamount or $minamount = '';
+ $maxamount = isset($maxamount) ? dround($maxamount) : '';
+ $maxamount or $maxamount = '';
+ $minminamount = isset($minminamount) ? dround($minminamount) : '';
+ $minminamount or $minminamount = '';
+ $maxminamount = isset($maxminamount) ? dround($maxminamount) : '';
+ $maxminamount or $maxminamount = '';
+ $mindiscount = isset($mindiscount) ? intval($mindiscount) : '';
+ $mindiscount or $mindiscount = '';
+ $maxdiscount = isset($maxdiscount) ? intval($maxdiscount) : '';
+ $maxdiscount or $maxdiscount = '';
+ $minvip = isset($minvip) ? intval($minvip) : '';
+ $minvip or $minvip = '';
+ $maxvip = isset($maxvip) ? intval($maxvip) : '';
+ $maxvip or $maxvip = '';
+ $logistic = isset($logistic) ? intval($logistic) : '-1';
+ $process = isset($process) ? intval($process) : '-1';
+ $itemid or $itemid = '';
+ (isset($ip) && is_ip($ip)) or $ip= '';
+ (isset($username) && check_name($username)) or $username = '';
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $level_select = level_select('level', '级别', $level, 'all');
+ $order_select = dselect($sorder, 'order', '', $order);
+
+ $condition = '';
+ if($_childs) $condition .= " AND catid IN (".$_childs.")";//CATE
+ if($_areaids) $condition .= " AND areaid IN (".$_areaids.")";//CITY
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($catid) $condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($level) $condition .= $level > 9 ? " AND level>0" : " AND level=$level";
+ if($minprice) $condition .= " AND price>=$minprice";
+ if($maxprice) $condition .= " AND price<=$maxprice";
+ if($minmarketprice) $condition .= " AND marketprice>=$minmarketprice";
+ if($maxmarketprice) $condition .= " AND marketprice<=$maxmarketprice";
+ if($minamount) $condition .= " AND amount>=$minamount";
+ if($maxamount) $condition .= " AND amount<=$maxamount";
+ if($minminamount) $condition .= " AND minamount>=$minminamount";
+ if($maxminamount) $condition .= " AND minamount<=$maxminamount";
+ if($mindiscount) $condition .= " AND discount>=$mindiscount";
+ if($maxdiscount) $condition .= " AND discount<=$maxdiscount";
+ if($minvip) $condition .= " AND vip>=$minvip";
+ if($maxvip) $condition .= " AND vip<=$maxvip";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+ if($logistic > -1) $condition .= " AND logistic=$logistic";
+ if($process > -1) $condition .= " AND process=$process";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ if($ip) $condition .= " AND ip='$ip'";
+ if($username) $condition .= " AND username='$username'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+
+ $timetype = strpos($dorder[$order], 'add') !== false ? 'add' : '';
+}
+switch($action) {
+ case 'add':
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ $do->add($post);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ if($MOD['show_html'] && $post['status'] > 2) $do->tohtml($do->itemid);
+ dmsg('添加成功', '?moduleid='.$moduleid.'&action='.$action);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $content = '';
+ $status = 3;
+ $addtime = timetodate($DT_TIME);
+ $totime = '';
+ $username = $_username;
+ $item = array();
+ $menuid = 0;
+ isset($url) or $url = '';
+ if($url) {
+ $tmp = fetch_url($url);
+ if($tmp) extract($tmp);
+ }
+ $history = 0;
+ include tpl('edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ $item = $do->get_one();
+ extract($item);
+ $history = history($moduleid, $itemid);
+ $addtime = timetodate($addtime);
+ $totime = $totime ? timetodate($totime, 3) : '';
+ $menuon = array('5', '4', '2', '1', '3');
+ $menuid = $menuon[$status];
+ include tpl($action, $module);
+ }
+ break;
+ case 'move':
+ if($submit) {
+ $fromids or msg('请填写来源ID');
+ if($tocatid) {
+ $db->query("UPDATE {$table} SET catid=$tocatid WHERE `{$fromtype}` IN ($fromids)");
+ dmsg('移动成功', $forward);
+ } else {
+ msg('请选择目标分类');
+ }
+ } else {
+ $itemid = $itemid ? implode(',', $itemid) : '';
+ $menuid = 6;
+ include tpl($action);
+ }
+ break;
+ case 'update':
+ is_array($itemid) or msg('请选择商品');
+ foreach($itemid as $v) {
+ $do->update($v);
+ }
+ dmsg('更新成功', $forward);
+ break;
+ case 'tohtml':
+ is_array($itemid) or msg('请选择商品');
+ foreach($itemid as $itemid) {
+ tohtml('show', $module);
+ }
+ dmsg('生成成功', $forward);
+ break;
+ case 'delete':
+ $itemid or msg('请选择商品');
+ isset($recycle) ? $do->recycle($itemid) : $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'restore':
+ $itemid or msg('请选择商品');
+ $do->restore($itemid);
+ dmsg('还原成功', $forward);
+ break;
+ case 'refresh':
+ $itemid or msg('请选择商品');
+ $do->refresh($itemid);
+ dmsg('刷新成功', $forward);
+ break;
+ case 'clear':
+ $do->clear();
+ dmsg('清空成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择商品');
+ $level = intval($level);
+ $do->level($itemid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ case 'recycle':
+ $lists = $do->get_list('status=0'.$condition, $dorder[$order]);
+ $menuid = 5;
+ include tpl('index', $module);
+ break;
+ case 'reject':
+ if($itemid && !$psize) {
+ $do->reject($itemid);
+ dmsg('拒绝成功', $forward);
+ } else {
+ $lists = $do->get_list('status=1'.$condition, $dorder[$order]);
+ $menuid = 4;
+ include tpl('index', $module);
+ }
+ break;
+ case 'expire':
+ if(isset($refresh)) {
+ if(isset($extend)) {
+ $days = isset($days) ? intval($days) : 0;
+ $days or msg('请填写天数');
+ $itemid or msg('请选择信息');
+ foreach($itemid as $v) {
+ $db->query("UPDATE {$table} SET totime=totime+$days*86400,status=3,process=1 WHERE itemid='$v' AND totime>0");
+ }
+ $do->expire();
+ dmsg('延时成功', $forward);
+ } else {
+ $do->expire();
+ dmsg('刷新成功', $forward);
+ }
+ } else {
+ $lists = $do->get_list('status=4'.$condition);
+ $menuid = 3;
+ include tpl('index', $module);
+ }
+ break;
+ case 'check':
+ if($itemid && !$psize) {
+ $do->check($itemid);
+ dmsg('审核成功', $forward);
+ } else {
+ $lists = $do->get_list('status=2'.$condition, $dorder[$order]);
+ $menuid = 2;
+ include tpl('index', $module);
+ }
+ break;
+ default:
+ $lists = $do->get_list('status=3'.$condition, $dorder[$order]);
+ $menuid = 1;
+ include tpl('index', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/group/admin/menu.inc.php b/module/group/admin/menu.inc.php
new file mode 100644
index 0000000..b161338
--- /dev/null
+++ b/module/group/admin/menu.inc.php
@@ -0,0 +1,12 @@
+
\ No newline at end of file
diff --git a/module/group/admin/order.inc.php b/module/group/admin/order.inc.php
new file mode 100644
index 0000000..c72ad13
--- /dev/null
+++ b/module/group/admin/order.inc.php
@@ -0,0 +1,253 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ $td or msg('记录不存在');
+ $td['linkurl'] = DT_PATH.'api/redirect.php?mid=17&itemid='.$td['itemid'];
+ $td['money'] = $td['amount'];
+ $td['adddate'] = timetodate($td['addtime'], 6);
+ $td['updatedate'] = timetodate($td['updatetime'], 6);
+ $logs = array();
+ $result = $db->query("SELECT * FROM {$table_log} WHERE oid=$itemid ORDER BY itemid DESC");
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $logs[] = $r;
+ }
+}
+switch($action) {
+ case 'stats':
+ $year = isset($year) ? intval($year) : date('Y', $DT_TIME);
+ $year or $year = date('Y', $DT_TIME);
+ $month = isset($month) ? intval($month) : date('n', $DT_TIME);
+ isset($seller) or $seller = '';
+ $xd = $y0 = $y1 = '';
+ if($month) {
+ $L = date('t', datetotime($year.'-'.$month.'-01'));
+ for($i = 1; $i <= $L; $i++) {
+ if($i > 1) { $xd .= ','; $y0 .= ','; $y1 .= ','; }
+ $xd .= "'".$i."日'";
+ $F = datetotime($year.'-'.$month.'-'.$i.' 00:00:00');
+ $T = datetotime($year.'-'.$month.'-'.$i.' 23:59:59');
+ $condition = "addtime>=$F AND addtime<=$T";
+ if($seller) $condition .= " AND seller='$seller'";
+ $t = $db->get_one("SELECT SUM(`amount`) AS num FROM {$table} WHERE {$condition} AND status=3");
+ $num = $t['num'] ? dround($t['num']) : 0;
+ $y0 .= $num;
+ $t = $db->get_one("SELECT SUM(`amount`) AS num FROM {$table} WHERE {$condition} AND status=4");
+ $num = $t['num'] ? dround($t['num']) : 0;
+ $y1 .= $num;
+ }
+ $title = $year.'年'.$month.'月交易报表(单位:'.$DT['money_unit'].')';
+ if($seller) $title = '['.$seller.'] '.$title;
+ } else {
+ for($i = 1; $i < 13; $i++) {
+ if($i > 1) { $xd .= ','; $y0 .= ','; $y1 .= ','; }
+ $xd .= "'".$i."月'";
+ $F = datetotime($year.'-'.$i.'-01 00:00:00');
+ $T = datetotime($year.'-'.$i.'-'.date('t', $F).' 23:59:59');
+ $condition = "addtime>=$F AND addtime<=$T";
+ if($seller) $condition .= " AND seller='$seller'";
+ $t = $db->get_one("SELECT SUM(`amount`) AS num FROM {$table} WHERE {$condition} AND status=3");
+ $num = $t['num'] ? dround($t['num']) : 0;
+ $y0 .= $num;
+ $t = $db->get_one("SELECT SUM(`amount`) AS num FROM {$table} WHERE {$condition} AND status=4");
+ $num = $t['num'] ? dround($t['num']) : 0;
+ $y1 .= $num;
+ }
+ $title = $year.'年交易报表(单位:'.$DT['money_unit'].')';
+ if($seller) $title = '['.$seller.'] '.$title;
+ }
+ include tpl('order_stats', $module);
+ break;
+ case 'refund':
+ if($td['status'] != 4) msg('此交易无需受理');
+ if($submit) {
+ isset($status) or msg('请指定受理结果');
+ strlen($content) > 5 or msg('请填写操作理由');
+ $content .= '[网站]';
+ clear_upload($content, $itemid, $table);
+ $content = dsafe(addslashes(save_remote(save_local(stripslashes($content)))));
+ if($status == 5) {//已退款,买家胜 退款
+ money_add($td['buyer'], $td['money']);
+ money_record($td['buyer'], $td['money'], '站内', 'system', '订单退款', '团购单号:'.$itemid.'[网站]');
+ $_msg = '受理成功,交易状态已经改变为 已退款给买家';
+ } else if($status == 3) {//已退款,卖家胜 付款
+ money_add($td['seller'], $td['money']);
+ money_record($td['seller'], $td['money'], '站内', 'system', '交易成功', '团购单号:'.$itemid.'[网站]');
+ //网站服务费
+ $G = $db->get_one("SELECT groupid FROM {$DT_PRE}member WHERE username='".$td['seller']."'");
+ $SG = cache_read('group-'.$G['groupid'].'.php');
+ if($SG['commission']) {
+ $fee = dround($money*$SG['commission']/100);
+ if($fee > 0) {
+ money_add($td['seller'], -$fee);
+ money_record($td['seller'], -$fee, $L['in_site'], 'system', $L['trade_fee'], $L['trade_order_id'].$itemid);
+ }
+ }
+ $_msg = '受理成功,交易状态已经改变为 交易成功';
+ } else {
+ msg();
+ }
+ $db->query("UPDATE {$table} SET status=$status,editor='$_username',updatetime=$DT_TIME,refund_reason='$content' WHERE itemid=$itemid");
+ $msg = isset($msg) ? 1 : 0;
+ $eml = isset($eml) ? 1 : 0;
+ $sms = isset($sms) ? 1 : 0;
+ $wec = isset($wec) ? 1 : 0;
+ if($msg == 0) $sms = $wec = 0;
+ if($msg || $eml || $sms || $wec) {
+ $reason = $content;
+ $linkurl = $MODULE[2]['linkurl'].'group.php?action=update&step=detail&itemid='.$itemid;
+
+ $result = ($status == 5 ? '退款成功' : '退款失败');
+ $subject = '您的[团购订单]'.dsubstr($td['title'], 30, '...').'(单号:'.$td['itemid'].')'.$result;
+ $content = '尊敬的会员: 您的[团购订单]'.$td['title'].'(单号:'.$td['itemid'].')'.$result.'! ';
+ if($reason) $content .= '操作原因: '.$reason.' ';
+ $content .= '请点击下面的链接查看订单详情: ';
+ $content .= ''.$linkurl.' ';
+ $content .= '如果您对此操作有异议,请及时与网站联系。 ';
+ $user = userinfo($td['buyer']);
+ if($msg) send_message($user['username'], $subject, $content);
+ if($eml) send_mail($user['email'], $subject, $content);
+ if($sms) send_sms($user['mobile'], $subject.$DT['sms_sign']);
+ if($wec) send_weixin($user['username'], $subject);
+
+ $result = ($status == 5 ? '已经退款给买家' : '未退款给买家,交易成功');
+ $subject = '您的[团购订单]'.dsubstr($td['title'], 30, '...').'(单号:'.$td['itemid'].')'.$result;
+ $content = '尊敬的会员: 您的[团购订单]'.$td['title'].'(单号:'.$td['itemid'].')'.$result.'! ';
+ if($reason) $content .= '操作原因: '.$reason.' ';
+ $content .= '请点击下面的链接查看订单详情: ';
+ $content .= ''.$linkurl.' ';
+ $content .= '如果您对此操作有异议,请及时与网站联系。 ';
+ $user = userinfo($td['seller']);
+ if($msg) send_message($user['username'], $subject, $content);
+ if($eml) send_mail($user['email'], $subject, $content);
+ if($sms) send_sms($user['mobile'], $subject.$DT['sms_sign']);
+ if($wec) send_weixin($user['username'], $subject);
+ }
+ msg($_msg, $forward, 3);
+ } else {
+ include tpl('order_refund', $module);
+ }
+ break;
+ case 'show':
+ include tpl('order_show', $module);
+ break;
+ case 'delete':
+ $itemid or msg('未选择记录');
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ $db->query("DELETE FROM {$table} WHERE itemid IN ($itemids)");
+ dmsg('删除成功', $forward);
+ break;
+ case 'express':
+ $sfields = array('按条件', '商品名称', '卖家', '买家', '订单金额', '密码', '买家名称', '买家地址', '买家邮编', '买家电话', '买家手机', '发货快递', '发货单号', '备注');
+ $dfields = array('title', 'title', 'seller', 'buyer', 'amount', 'password', 'buyer_name', 'buyer_address', 'buyer_postcode', 'buyer_phone', 'buyer_mobile', 'send_type', 'send_no', 'note');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $status = isset($status) && isset($dsend_status[$status]) ? intval($status) : '';
+ $itemid or $itemid = '';
+ $gid = isset($gid) && $gid ? intval($gid) : '';
+ isset($seller) or $seller = '';
+ isset($buyer) or $buyer = '';
+ isset($send_no) or $send_no = '';
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $status_select = dselect($dsend_status, 'status', '状态', $status, '', 1, '', 1);
+ $condition = "send_no<>''";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($status !== '') $condition .= " AND send_status='$status'";
+ if($seller) $condition .= " AND seller='$seller'";
+ if($buyer) $condition .= " AND buyer='$buyer'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ if($gid) $condition .= " AND gid=$gid";
+ if($send_no) $condition .= " AND send_no='$send_no'";
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table} WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['addtime'] = timetodate($r['addtime'], 5);
+ $r['updatetime'] = timetodate($r['updatetime'], 5);
+ $lists[] = $r;
+ }
+ include tpl('order_express', $module);
+ break;
+ default:
+ $sfields = array('按条件', '商品名称', '卖家', '买家', '订单金额', '密码', '买家名称', '买家地址', '买家邮编', '买家电话', '买家手机', '发货快递', '发货单号', '备注');
+ $dfields = array('title', 'title', 'seller', 'buyer', 'amount', 'password', 'buyer_name', 'buyer_address', 'buyer_postcode', 'buyer_phone', 'buyer_mobile', 'send_type', 'send_no', 'note');
+ $sorder = array('排序方式', '下单时间降序', '下单时间升序', '更新时间降序', '更新时间升序', '商品单价降序', '商品单价升序', '购买数量降序', '购买数量升序', '订单金额降序', '订单金额升序', '订单状态降序', '订单状态升序');
+ $dorder = array('itemid DESC', 'addtime DESC', 'addtime ASC', 'updatetime DESC', 'updatetime ASC', 'price DESC', 'price ASC', 'number DESC', 'number ASC', 'amount DESC', 'amount ASC', 'status DESC', 'status ASC');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $status = isset($status) && isset($dstatus[$status]) ? intval($status) : '';
+ $itemid or $itemid = '';
+ $gid = isset($gid) && $gid ? intval($gid) : '';
+ $id = isset($id) ? intval($id) : 0;
+ isset($seller) or $seller = '';
+ isset($buyer) or $buyer = '';
+ isset($amounts) or $amounts = '';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ isset($datetype) && in_array($datetype, array('addtime', 'updatetime')) or $datetype = 'addtime';
+ isset($mtype) && in_array($mtype, array('amount', 'price', 'number')) or $mtype = 'amount';
+ isset($minamount) or $minamount = '';
+ isset($maxamount) or $maxamount = '';
+ $logistic = isset($logistic) ? intval($logistic) : '-1';
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $status_select = dselect($dstatus, 'status', '状态', $status, '', 1, '', 1);
+ $order_select = dselect($sorder, 'order', '', $order);
+ $condition = '1';
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND $datetype>=$fromtime";
+ if($totime) $condition .= " AND $datetype<=$totime";
+ if($status !== '') $condition .= " AND status='$status'";
+ if($seller) $condition .= " AND seller='$seller'";
+ if($buyer) $condition .= " AND buyer='$buyer'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ if($gid) $condition .= " AND gid=$gid";
+ if($id) $condition .= " AND gid=$id";
+ if($minamount != '') $condition .= " AND $mtype>=$minamount";
+ if($maxamount != '') $condition .= " AND $mtype<=$maxamount";
+ if($logistic>-1) $condition .= " AND logistic=$logistic";
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table} WHERE $condition ORDER BY $dorder[$order] LIMIT $offset,$pagesize");
+ $amount = $fee = $money = 0;
+ while($r = $db->fetch_array($result)) {
+ $r['addtime'] = str_replace(' ', ' ', timetodate($r['addtime'], 5));
+ $r['updatetime'] = str_replace(' ', ' ', timetodate($r['updatetime'], 5));
+ $r['linkurl'] = DT_PATH.'api/redirect.php?mid='.$moduleid.'&itemid='.$r['gid'];
+ $r['dstatus'] = $_status[$r['status']];
+ $r['money'] = $r['amount'];
+ $amount += $r['amount'];
+ $lists[] = $r;
+ }
+ $money = $amount + $fee;
+ include tpl('order', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/group/admin/template/html.tpl.php b/module/group/admin/template/html.tpl.php
new file mode 100644
index 0000000..339891c
--- /dev/null
+++ b/module/group/admin/template/html.tpl.php
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/group/admin/template/index.html b/module/group/admin/template/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/group/admin/template/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/group/admin/template/order.tpl.php b/module/group/admin/template/order.tpl.php
new file mode 100644
index 0000000..febdc4c
--- /dev/null
+++ b/module/group/admin/template/order.tpl.php
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/group/admin/template/order_stats.tpl.php b/module/group/admin/template/order_stats.tpl.php
new file mode 100644
index 0000000..790d4ee
--- /dev/null
+++ b/module/group/admin/template/order_stats.tpl.php
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+选择年
+= 2000; $i--) { ?>
+>年
+
+
+
+选择月
+
+>月
+
+
+卖家:
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/group/admin/uninstall.inc.php b/module/group/admin/uninstall.inc.php
new file mode 100644
index 0000000..9cd3fcc
--- /dev/null
+++ b/module/group/admin/uninstall.inc.php
@@ -0,0 +1,6 @@
+query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_data_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_order_".$moduleid."`");
+?>
\ No newline at end of file
diff --git a/module/group/buy.inc.php b/module/group/buy.inc.php
new file mode 100644
index 0000000..d32ea62
--- /dev/null
+++ b/module/group/buy.inc.php
@@ -0,0 +1,76 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+if($item && $item['status'] > 2) {
+ if($item['process'] == 2) message($L['group_expired']);
+ if($item['username'] == $_username) message($L['buy_self']);
+ $item['mobile'] = $MOD['mobile'].$item['linkurl'];
+ $item['linkurl'] = $MOD['linkurl'].$item['linkurl'];
+ $t = $item;
+} else {
+ message(lang('message->item_not_exists'));
+}
+$user = userinfo($_username);
+if($submit) {
+ if($item['logistic']) {
+ $add = array_map('trim', $add);
+ $add_city = area_pos($add['areaid'], '');
+ if($add_city && strpos($add['address'], $add_city) === false) $add['address'] = $add_city.$add['address'];
+ $add = dhtmlspecialchars($add);
+ $buyer_address = $add['address'];
+ if(strlen($buyer_address) < 10) message($L['msg_type_address']);
+ $buyer_postcode = $add['postcode'];
+ if(strlen($buyer_postcode) < 6) message($L['msg_type_postcode']);
+ $buyer_name = $add['truename'];
+ if(strlen($buyer_name) < 2) message($L['msg_type_truename']);
+ } else {
+ $buyer_address = dhtmlspecialchars($user['address']);
+ $buyer_postcode = dhtmlspecialchars($user['postcode']);
+ $buyer_name = dhtmlspecialchars($user['truename']);
+ }
+ $buyer_mobile = dhtmlspecialchars($add['mobile']);
+ is_mobile($buyer_mobile) or message($L['msg_type_mobile']);
+ $number = intval($number);
+ if($number < 1) $number = 1;
+ $amount = $number*$item['price'];
+ $note = dhtmlspecialchars($note);
+ $title = addslashes($item['title']);
+ $db->query("INSERT INTO {$table_order} (gid,buyer,seller,title,thumb,price,number,amount,logistic,addtime,updatetime,note, buyer_postcode,buyer_address,buyer_name,buyer_mobile,status) VALUES ('$itemid','$_username','$item[username]','$title','$item[thumb]','$item[price]','$number','$amount','$item[logistic]','$DT_TIME','$DT_TIME','$note','$buyer_postcode','$buyer_address','$buyer_name','$buyer_mobile', 6)");
+ $oid = $db->insert_id();
+ $db->query("INSERT INTO {$DT_PRE}group_order_log_{$moduleid} (oid,addtime,title,note) VALUES ('$oid','$DT_TIME','$L[log_buy]','')");
+ dheader('?action=show&itemid='.$itemid.'&auth='.encrypt('mid='.$moduleid.'&action=update&step=pay&itemid='.$oid, DT_KEY.'TURL'));
+}
+$CSS = array('cart');
+$head_title = $L['buy_title'];
+if($action == 'show') {
+ $forward = isset($auth) ? decrypt($auth, DT_KEY.'TURL') : '';
+ $forward = ($DT_PC ? $MODULE[2]['linkurl'] : $MODULE[2]['mobile']).'deal.php?'.($forward ? $forward : 'action=order');
+} else {
+ $_MOD = cache_read('module-2.php');
+ $result = $db->query("SELECT * FROM {$DT_PRE}address WHERE username='$_username' ORDER BY listorder ASC,itemid ASC LIMIT 30");
+ $address = array();
+ while($r = $db->fetch_array($result)) {
+ $r['street'] = $r['address'];
+ if($r['areaid']) $r['address'] = area_pos($r['areaid'], '').$r['address'];
+ $address[] = $r;
+ }
+ $send_types = explode('|', trim($_MOD['send_types']));
+}
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+} else {
+ $head_title = $L['buy_title'];
+ $js_pull = 0;
+ $foot = '';
+}
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/group/common.inc.php b/module/group/common.inc.php
new file mode 100644
index 0000000..c5e63c7
--- /dev/null
+++ b/module/group/common.inc.php
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/module/group/global.func.php b/module/group/global.func.php
new file mode 100644
index 0000000..7ca7b97
--- /dev/null
+++ b/module/group/global.func.php
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/module/group/group.class.php b/module/group/group.class.php
new file mode 100644
index 0000000..acd6c0f
--- /dev/null
+++ b/module/group/group.class.php
@@ -0,0 +1,297 @@
+moduleid = $moduleid;
+ $this->table = $table;
+ $this->table_data = $table_data;
+ $this->split = $MOD['split'];
+ $this->fields = array('catid','areaid','level','title','style','fee','introduce','marketprice','price','savemoney','discount','minamount','amount','logistic','thumb','tag','status','hits','orders','username','totime','editor','addtime','edittime','ip','template','linkurl','filepath','note','company','truename','telephone','mobile','address','email','qq','wx','ali','skype');
+ }
+
+ function group($moduleid) {
+ $this->__construct($moduleid);
+ }
+
+ function pass($post) {
+ global $MOD;
+ if(!is_array($post)) return false;
+ if(!$post['catid']) return $this->_(lang('message->pass_cate'));
+ if(strlen($post['title']) < 3) return $this->_(lang('message->pass_title'));
+ if(!is_url($post['thumb'])) return $this->_(lang('message->pass_thumb'));
+ if(dround($post['price']) < 0.01) return $this->_(lang('message->pass_group_price'));
+ if(dround($post['marketprice']) < 0.01) return $this->_(lang('message->pass_group_mprice'));
+ if(dround($post['marketprice']) <= dround($post['price'])) return $this->_(lang('message->pass_group_eprice'));
+ if($post['totime']) {
+ if(!is_time($post['totime'])) return $this->_(lang('message->pass_date'));
+ if(datetotime($post['totime']) < DT_TIME) return $this->_(lang('message->pass_todate'));
+ }
+ if(DT_MAX_LEN && strlen(clear_img($post['content'])) > DT_MAX_LEN) $this->_(lang('message->pass_max'));
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $_username, $_userid, $_cname;
+ $post['filepath'] = (isset($post['filepath']) && is_filepath($post['filepath'])) ? file_vname($post['filepath']) : '';
+ $post['addtime'] = (isset($post['addtime']) && is_time($post['addtime'])) ? datetotime($post['addtime']) : DT_TIME;
+ $post['editor'] = $_cname ? $_cname : $_username;
+ $post['edittime'] = DT_TIME;
+ $post['totime'] = is_time($post['totime']) ? datetotime($post['totime']) : 0;
+ $post['discount'] = dround($post['price']*10/$post['marketprice'], 1);
+ $post['savemoney'] = dround($post['marketprice'] - $post['price']);
+ $post['fee'] = dround($post['fee']);
+ $post['price'] = dround($post['price']);
+ $post['marketprice'] = dround($post['marketprice']);
+ $post['minamount'] = dround($post['minamount']);
+ $post['amount'] = dround($post['amount']);
+ $post['content'] = stripslashes($post['content']);
+ $post['content'] = save_local($post['content']);
+ if($MOD['clear_link']) $post['content'] = clear_link($post['content']);
+ if($MOD['save_remotepic']) $post['content'] = save_remote($post['content']);
+ if($post['content'] && !$post['introduce'] && $post['introduce_length']) $post['introduce'] = addslashes(get_intro($post['content'], $MOD['introduce_length']));
+ if($this->itemid) {
+ $new = $post['content'];
+ if($post['thumb']) $new .= ' ';
+ $r = $this->get_one();
+ $old = $r['content'];
+ if($r['thumb']) $old .= ' ';
+ delete_diff($new, $old);
+ } else {
+ $post['ip'] = DT_IP;
+ }
+ $content = $post['content'];
+ unset($post['content']);
+ $post = dhtmlspecialchars($post);
+ $post['content'] = addslashes(dsafe($content));
+ return array_map("trim", $post);
+ }
+
+ function get_one() {
+ $r = DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$this->itemid");
+ if($r) {
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ $t = DB::get_one("SELECT content FROM {$content_table} WHERE itemid=$this->itemid");
+ $r['content'] = $t ? $t['content'] : '';
+ return $r;
+ } else {
+ return array();
+ }
+ }
+
+ function get_list($condition = 'status=3', $order = 'edittime DESC', $cache = '') {
+ global $MOD, $pages, $page, $pagesize, $offset, $items, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition", $cache);
+ $items = $r['num'];
+ }
+ $pages = defined('CATID') ? listpages(1, CATID, $items, $page, $pagesize, 10, $MOD['linkurl']) : pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = $catids = $CATS = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize", $cache);
+ while($r = DB::fetch_array($result)) {
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['userurl'] = userurl($r['username']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $catids[$r['catid']] = $r['catid'];
+ $lists[] = $r;
+ }
+ if($catids) {
+ $result = DB::query("SELECT catid,catname,linkurl FROM ".DT_PRE."category WHERE catid IN (".implode(',', $catids).")");
+ while($r = DB::fetch_array($result)) {
+ $CATS[$r['catid']] = $r;
+ }
+ if($CATS) {
+ foreach($lists as $k=>$v) {
+ $lists[$k]['catname'] = $v['catid'] ? $CATS[$v['catid']]['catname'] : '';
+ $lists[$k]['caturl'] = $v['catid'] ? $MOD['linkurl'].$CATS[$v['catid']]['linkurl'] : '';
+ }
+ }
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $MOD;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ DB::query("REPLACE INTO {$content_table} (itemid,content) VALUES ('$this->itemid', '$post[content]')");
+ $this->update($this->itemid);
+ if($post['status'] == 3 && $post['username'] && $MOD['credit_add']) {
+ credit_add($post['username'], $MOD['credit_add']);
+ credit_record($post['username'], $MOD['credit_add'], 'system', lang('my->credit_record_add', array($MOD['name'])), 'ID:'.$this->itemid);
+ }
+ clear_upload($post['content'].$post['thumb'], $this->itemid, $this->table);
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $this->delete($this->itemid, false);
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ DB::query("REPLACE INTO {$content_table} (itemid,content) VALUES ('$this->itemid', '$post[content]')");
+ $this->update($this->itemid);
+ clear_upload($post['content'].$post['thumb'], $this->itemid, $this->table);
+ if($post['status'] > 2) {
+ history($this->moduleid, $this->itemid, 'del');
+ $this->tohtml($this->itemid, $post['catid']);
+ }
+ return true;
+ }
+
+ function tohtml($itemid = 0, $catid = 0) {
+ global $module, $MOD;
+ if($MOD['show_html'] && $itemid) tohtml('show', $module, "itemid=$itemid");
+ }
+
+ function update($itemid) {
+ $item = DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$itemid");
+ $update = '';
+ $keyword = $item['title'].','.$item['company'].','.strip_tags(cat_pos(get_cat($item['catid']), ','));
+ if($keyword != $item['keyword']) {
+ $keyword = str_replace("//", '', addslashes($keyword));
+ $update .= ",keyword='$keyword'";
+ }
+ $item['itemid'] = $itemid;
+ $linkurl = itemurl($item);
+ if($linkurl != $item['linkurl']) $update .= ",linkurl='$linkurl'";
+ $member = $item['username'] ? userinfo($item['username']) : array();
+ if($member) $update .= update_user($member, $item);
+ if($update) DB::query("UPDATE {$this->table} SET ".(substr($update, 1))." WHERE itemid=$itemid");
+ }
+
+ function recycle($itemid) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->recycle($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=0 WHERE itemid=$itemid");
+ $this->delete($itemid, false);
+ return true;
+ }
+ }
+
+ function restore($itemid) {
+ global $module, $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->restore($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=3 WHERE itemid=$itemid");
+ if($MOD['show_html']) tohtml('show', $module, "itemid=$itemid");
+ return true;
+ }
+ }
+
+ function delete($itemid, $all = true) {
+ global $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->delete($v, $all);
+ }
+ } else {
+ $this->itemid = $itemid;
+ $r = $this->get_one();
+ if($MOD['show_html']) {
+ $_file = DT_ROOT.'/'.$MOD['moduledir'].'/'.$r['linkurl'];
+ html_del($_file);
+ }
+ if($all) {
+ $userid = get_user($r['username']);
+ if($r['thumb']) delete_upload($r['thumb'], $userid);
+ if($r['content']) delete_local($r['content'], $userid);
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ DB::query("DELETE FROM {$content_table} WHERE itemid=$itemid");
+ if($MOD['cat_property']) DB::query("DELETE FROM ".DT_PRE."category_value WHERE moduleid=$this->moduleid AND itemid=$itemid");
+ if($r['username'] && $MOD['credit_del']) {
+ credit_add($r['username'], -$MOD['credit_del']);
+ credit_record($r['username'], -$MOD['credit_del'], 'system', lang('my->credit_record_del', array($MOD['name'])), 'ID:'.$this->itemid);
+ }
+ history($this->moduleid, $itemid, 'del');
+ }
+ }
+ }
+
+ function check($itemid) {
+ global $_username, $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->check($v); }
+ } else {
+ $this->itemid = $itemid;
+ $item = $this->get_one();
+ if($MOD['credit_add'] && $item['username'] && $item['hits'] < 1) {
+ credit_add($item['username'], $MOD['credit_add']);
+ credit_record($item['username'], $MOD['credit_add'], 'system', lang('my->credit_record_add', array($MOD['name'])), 'ID:'.$this->itemid);
+ }
+ DB::query("UPDATE {$this->table} SET status=3,editor='$_username',edittime=".DT_TIME." WHERE itemid=$itemid");
+ history($this->moduleid, $itemid, 'del');
+ $this->tohtml($itemid);
+ return true;
+ }
+ }
+
+ function reject($itemid) {
+ global $_username;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->reject($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=1,editor='$_username' WHERE itemid=$itemid");
+ return true;
+ }
+ }
+
+ function expire($condition = '') {
+ DB::query("UPDATE {$this->table} SET status=4 WHERE status=3 AND totime>0 AND totime<".DT_TIME." $condition");
+ }
+
+ function clear($condition = 'status=0') {
+ $result = DB::query("SELECT itemid FROM {$this->table} WHERE $condition");
+ while($r = DB::fetch_array($result)) {
+ $this->delete($r['itemid']);
+ }
+ }
+
+ function level($itemid, $level) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET level=$level WHERE itemid IN ($itemids)");
+ }
+
+ function type($itemid, $typeid) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET typeid=$typeid WHERE itemid IN ($itemids)");
+ }
+
+ function refresh($itemid) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET edittime='".DT_TIME."' WHERE itemid IN ($itemids)");
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/group/index.htm.php b/module/group/index.htm.php
new file mode 100644
index 0000000..a11adf3
--- /dev/null
+++ b/module/group/index.htm.php
@@ -0,0 +1,53 @@
+get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].'index.php?page={destoon_page}');
+ $tags = array();
+ if($items) {
+ $order = $MOD['order'];
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put(str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename), $data);
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/group/index.html b/module/group/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/group/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/group/index.inc.php b/module/group/index.inc.php
new file mode 100644
index 0000000..7fd7a5e
--- /dev/null
+++ b/module/group/index.inc.php
@@ -0,0 +1,35 @@
+ 1 ? 'index.php?page='.$page : '');
+} else {
+ $condition = "status=3";
+ if($cityid) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize);
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+}
+$seo_file = 'index';
+include DT_ROOT.'/include/seo.inc.php';
+include template($MOD['template_index'] ? $MOD['template_index'] : 'index', $module);
+?>
\ No newline at end of file
diff --git a/module/group/list.inc.php b/module/group/list.inc.php
new file mode 100644
index 0000000..8e74522
--- /dev/null
+++ b/module/group/list.inc.php
@@ -0,0 +1,90 @@
+count($table, $condition, $CFG['db_expires']);
+ } else {
+ if($page == 1) {
+ $items = $db->count($table, $condition, $CFG['db_expires']);
+ if($items != $CAT['item']) {
+ $CAT['item'] = $items;
+ $db->query("UPDATE {$DT_PRE}category SET item=$items WHERE catid=$catid");
+ }
+ } else {
+ $items = $CAT['item'];
+ }
+ }
+ $pagesize = $MOD['pagesize'];
+ $offset = ($page-1)*$pagesize;
+ $pages = listpages($CAT, $items, $page, $pagesize);
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ $showpage = 1;
+ $datetype = 5;
+ $width = 285;
+ $height = 210;
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].listurl($CAT, $page > 1 ? $page : 0);
+} else {
+ if(!$CAT || $CAT['moduleid'] != $moduleid) message($L['msg_not_cate']);
+ if(!check_group($_groupid, $MOD['group_list']) || !check_group($_groupid, $CAT['group_list'])) message($L['msg_no_right']);
+ $condition = "status=3";
+ $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($cityid) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($CAT, '{destoon_page}'));
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid;
+ }
+ if($CAT['parentid']) $PCAT = get_cat($CAT['parentid']);
+ $head_title = $head_name = $CAT['catname'];
+}
+$seo_file = 'list';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $CAT['template'] ? $CAT['template'] : ($MOD['template_list'] ? $MOD['template_list'] : 'list');
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/group/my.inc.php b/module/group/my.inc.php
new file mode 100644
index 0000000..4b9f239
--- /dev/null
+++ b/module/group/my.inc.php
@@ -0,0 +1,277 @@
+get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND status>1");
+ $limit_used = $r['num'];
+ $limit_free = $mod_limit > $limit_used ? $mod_limit - $limit_used : 0;
+}
+if(check_group($_groupid, $MOD['group_refresh'])) $MOD['credit_refresh'] = 0;
+switch($action) {
+ case 'add':
+ if($mod_limit && $limit_used >= $mod_limit) dalert(lang($L['info_limit'], array($mod_limit, $limit_used)), $_userid ? '?mid='.$mid : '?action=index');
+ if($MG['hour_limit']) {
+ $today = $DT_TIME - 3600;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND addtime>$today");
+ if($r && $r['num'] >= $MG['hour_limit']) dalert(lang($L['hour_limit'], array($MG['hour_limit'])), $_userid ? '?mid='.$mid : '?action=index');
+ }
+ if($MG['day_limit']) {
+ $today = $DT_TODAY - 86400;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND addtime>$today");
+ if($r && $r['num'] >= $MG['day_limit']) dalert(lang($L['day_limit'], array($MG['day_limit'])), $_userid ? '?mid='.$mid : '?action=index');
+ }
+
+ if($mod_free_limit >= 0) {
+ $fee_add = ($MOD['fee_add'] && (!$MOD['fee_mode'] || !$MG['fee_mode']) && $limit_used >= $mod_free_limit && $_userid) ? dround($MOD['fee_add']) : 0;
+ } else {
+ $fee_add = 0;
+ }
+ $fee_currency = $MOD['fee_currency'];
+ $fee_unit = $fee_currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $need_password = $fee_add && $fee_currency == 'money' && $fee_add > $DT['quick_pay'];
+ $need_captcha = $MOD['captcha_add'] == 2 ? $MG['captcha'] : $MOD['captcha_add'];
+ $need_question = $MOD['question_add'] == 2 ? $MG['question'] : $MOD['question_add'];
+ $could_color = check_group($_groupid, $MOD['group_color']) && $MOD['credit_color'] && $_userid;
+
+ if($submit) {
+ if($fee_add && $fee_add > ($fee_currency == 'money' ? $_money : $_credit)) dalert($L['balance_lack']);
+ if($need_password && !is_payword($_username, $password)) dalert($L['error_payword']);
+
+ if(!$_userid) {
+ if(strlen($post['company']) < 4) dalert($L['type_company']);
+ if($AREA) {
+ if(!isset($AREA[$post['areaid']])) dalert($L['type_area']);
+ } else {
+ if(!$post['areaid']) dalert($L['type_area']);
+ }
+ if(strlen($post['truename']) < 4) dalert($L['type_truename']);
+ if(strlen($post['mobile']) < 7) dalert($L['type_mobile']);
+ }
+
+ if($MG['add_limit']) {
+ $last = $db->get_one("SELECT addtime FROM {$table} WHERE $sql ORDER BY itemid DESC");
+ if($last && $DT_TIME - $last['addtime'] < $MG['add_limit']) dalert(lang($L['add_limit'], array($MG['add_limit'])));
+ }
+ $msg = captcha($captcha, $need_captcha, true);
+ if($msg) dalert($msg);
+ $msg = question($answer, $need_question, true);
+ if($msg) dalert($msg);
+
+ if($do->pass($post)) {
+ $CAT = get_cat($post['catid']);
+ if(!$CAT || !check_group($_groupid, $CAT['group_add'])) dalert(lang($L['group_add'], array($CAT['catname'])));
+ if($MOD['upload_thumb'] && $_userid && strlen($post['thumb']) < 5) dalert($L['group_upload_image']);
+ $post['addtime'] = $post['level'] = $post['fee'] = 0;
+ $post['style'] = $post['template'] = $post['note'] = $post['filepath'] = '';
+ $need_check = $MOD['check_add'] == 2 ? $MG['check'] : $MOD['check_add'];
+ $post['status'] = get_status(3, $need_check);
+ $post['hits'] = 0;
+ $post['orders'] = 0;
+ $post['username'] = $_username;
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($could_color && $color && $_credit > $MOD['credit_color']) {
+ $post['style'] = $color;
+ credit_add($_username, -$MOD['credit_color']);
+ credit_record($_username, -$MOD['credit_color'], 'system', $L['title_color'], '['.$MOD['name'].']'.$post['title']);
+ }
+ $do->add($post);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ if($MOD['show_html'] && $post['status'] > 2) $do->tohtml($do->itemid);
+ if($fee_add) {
+ if($fee_currency == 'money') {
+ money_add($_username, -$fee_add);
+ money_record($_username, -$fee_add, $L['in_site'], 'system', lang($L['credit_record_add'], array($MOD['name'])), 'ID:'.$do->itemid);
+ } else {
+ credit_add($_username, -$fee_add);
+ credit_record($_username, -$fee_add, 'system', lang($L['credit_record_add'], array($MOD['name'])), 'ID:'.$do->itemid);
+ }
+ }
+
+ $msg = $post['status'] == 2 ? $L['success_check'] : $L['success_add'];
+ $js = '';
+ if(isset($post['sync_sina']) && $post['sync_sina']) $js .= sync_weibo('sina', $moduleid, $do->itemid);
+ if($_userid) {
+ set_cookie('dmsg', $msg);
+ $forward = '?mid='.$mid.'&status='.$post['status'];
+ $msg = '';
+ } else {
+ $forward = '?mid='.$mid.'&action=add';
+ }
+ $js .= 'window.onload=function(){parent.window.location="'.$forward.'";}';
+ dalert($msg, '', $js);
+ } else {
+ dalert($do->errmsg, '', ($need_captcha ? reload_captcha() : '').($need_question ? reload_question() : ''));
+ }
+ } else {
+ if($itemid) {
+ $MG['copy'] && $_userid or dheader(($DT_PC ? $MODULE[2]['linkurl'] : $MODULE[2]['mobile']).'account.php?action=group&itemid=1');
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['username'] != $_username) message();
+ extract($item);
+ $thumb = $thumb1 = $thumb2 = '';
+ $totime = $totime > $DT_TIME ? timetodate($totime, 6) : '';
+ } else {
+ $_catid = $catid;
+ foreach($do->fields as $v) {
+ $$v = '';
+ }
+ $content = '';
+ $catid = $_catid;
+ $totime = '';
+ }
+ $item = array();
+ }
+ break;
+ case 'edit':
+ $itemid or message();
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['username'] != $_username) message();
+
+ if($MG['edit_limit'] < 0) message($L['edit_refuse']);
+ if($MG['edit_limit'] && $DT_TIME - $item['addtime'] > $MG['edit_limit']*86400) message(lang($L['edit_limit'], array($MG['edit_limit'])));
+
+ if($submit) {
+ if($do->pass($post)) {
+ $CAT = get_cat($post['catid']);
+ if(!$CAT || !check_group($_groupid, $CAT['group_add'])) dalert(lang($L['group_add'], array($CAT['catname'])));
+ $post['addtime'] = timetodate($item['addtime']);
+ $post['level'] = $item['level'];
+ $post['fee'] = $item['fee'];
+ $post['style'] = addslashes($item['style']);
+ $post['template'] = addslashes($item['template']);
+ $post['filepath'] = addslashes($item['filepath']);
+ $post['note'] = addslashes($item['note']);
+ $need_check = $MOD['check_add'] == 2 ? $MG['check'] : $MOD['check_add'];
+ $post['status'] = get_status($item['status'], $need_check);
+ $post['hits'] = $item['hits'];
+ $post['orders'] = $item['orders'];
+ $post['username'] = $_username;
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ $do->edit($post);
+ if($post['status'] < 3 && $item['status'] > 2) history($moduleid, $itemid, 'set', $item);
+ set_cookie('dmsg', $post['status'] == 2 ? $L['success_edit_check'] : $L['success_edit']);
+ dalert('', '', 'parent.window.location="'.($post['status'] == 2 ? '?mid='.$moduleid.'&status=2' : $forward).'"');
+ } else {
+ dalert($do->errmsg);
+ }
+ } else {
+ extract($item);
+ $totime = $totime ? timetodate($totime, 6) : '';
+ }
+ break;
+ case 'delete':
+ $MG['delete'] or message();
+ $itemid or message();
+ $itemids = is_array($itemid) ? $itemid : array($itemid);
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $db->get_one("SELECT username FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['username'] != $_username) message();
+ $do->recycle($itemid);
+ }
+ dmsg($L['success_delete'], $forward);
+ break;
+ case 'refresh':
+ $MG['refresh_limit'] > -1 or dheader(($DT_PC ? $MODULE[2]['linkurl'] : $MODULE[2]['mobile']).'account.php?action=group&itemid=1');
+ $itemid or message($L['select_info']);
+ if($MOD['credit_refresh'] && $_credit < $MOD['credit_refresh']) message($L['credit_lack']);
+ $itemids = $itemid;
+ $s = $f = 0;
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $db->get_one("SELECT username,edittime FROM {$table} WHERE itemid=$itemid");
+ $could_refresh = $item && $item['username'] == $_username;
+ if($could_refresh && $MG['refresh_limit'] && $DT_TIME - $item['edittime'] < $MG['refresh_limit']) $could_refresh = false;
+ if($could_refresh && $MOD['credit_refresh'] && ($MOD['credit_refresh'] > $_credit || $_credit < 0)) $could_refresh = false;
+ if($could_refresh) {
+ $do->refresh($itemid);
+ $s++;
+ if($MOD['credit_refresh']) $_credit = $_credit - $MOD['credit_refresh'];
+ } else {
+ $f++;
+ }
+ }
+ if($MOD['credit_refresh'] && $s) {
+ $credit = $s*$MOD['credit_refresh'];
+ credit_add($_username, -$credit);
+ credit_record($_username, -$credit, 'system', lang($L['credit_record_refresh'], array($MOD['name'])), lang($L['refresh_total'], array($s)));
+ }
+ $msg = lang($L['refresh_success'], array($s));
+ if($f) $msg = $msg.' '.lang($L['refresh_fail'], array($f));
+ dmsg($msg, $forward);
+ break;
+ default:
+ $_process = $L['group_process'];
+ $sorder = $L['group_orderby'];
+ $dorder = array($MOD['order'], 'orders DESC', 'orders ASC', 'sales DESC', 'sales ASC', 'price DESC', 'price ASC', 'marketprice DESC', 'marketprice ASC', 'savemoney DESC', 'savemoney ASC', 'discount DESC', 'discount ASC', 'amount DESC', 'amount ASC', 'minamount DESC', 'minamount ASC', 'hits DESC', 'hits ASC');
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ $status = isset($status) ? intval($status) : 3;
+ in_array($status, array(1, 2, 3, 4)) or $status = 3;
+ $process = isset($process) ? intval($process) : '-1';
+ $order_select = dselect($sorder, 'order', '', $order);
+
+ $condition = "username='$_username' AND status=$status";
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($catid) $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($process > -1) $condition .= " AND process=$process";
+ $timetype = strpos($MOD['order'], 'add') !== false ? 'add' : '';
+ $lists = $do->get_list($condition, $dorder[$order]);
+ break;
+}
+if($_userid) {
+ $nums = array();
+ for($i = 1; $i < 5; $i++) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE username='$_username' AND status=$i");
+ $nums[$i] = $r['num'];
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_order} WHERE seller='$_username'");
+ $nums[9] = $r['num'];
+}
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MODULE[2]['linkurl'], $MODULE[2]['mobile'], $DT_URL);
+} else {
+ $foot = '';
+ if($action == 'add' || $action == 'edit') {
+ //
+ } else {
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ foreach($lists as $k=>$v) {
+ $lists[$k]['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $v['linkurl']);
+ $lists[$k]['date'] = timetodate($v[$time], 5);
+ }
+ $pages = mobile_pages($items, $page, $pagesize);
+ $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : 'my.php');
+ }
+}
+$head_title = lang($L['module_manage'], array($MOD['name']));
+include template($MOD['template_my'] ? $MOD['template_my'] : 'my_'.$module, 'member');
+?>
\ No newline at end of file
diff --git a/module/group/search.inc.php b/module/group/search.inc.php
new file mode 100644
index 0000000..d07f827
--- /dev/null
+++ b/module/group/search.inc.php
@@ -0,0 +1,179 @@
+ $DT['max_kw']) message(lang($L['word_limit'], array($DT['min_kw'], $DT['max_kw'])), $MOD['linkurl'].'search.php');
+ if($DT['search_limit'] && $page == 1) {
+ if(($DT_TIME - $DT['search_limit']) < get_cookie('last_search')) message(lang($L['time_limit'], array($DT['search_limit'])), $MOD['linkurl'].'search.php');
+ set_cookie('last_search', $DT_TIME);
+ }
+ }
+
+ $pptsql = '';
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $PPT = property_condition($catid);
+ foreach($PPT as $k=>$v) {
+ $PPT[$k]['select'] = '';
+ $oid = $v['oid'];
+ $tmp = 'ppt_'.$oid;
+ if(isset($$tmp)) {
+ $PPT[$k]['select'] = $tmp = strip_kw($$tmp);
+ if($tmp && in_array($tmp, $v['options'])) {
+ $tmp = 'O'.$oid.':'.$tmp.';';
+ $pptsql .= match_kw('pptword', $tmp);
+ }
+ }
+ }
+ }
+ $fds = $MOD['fields'];
+ $condition = '';
+ if($catid) $condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($thumb) $condition .= " AND thumb<>''";
+ if($vip) $condition .= " AND vip>0";
+ if($typeid != 99) $condition .= " AND typeid=$typeid";
+ if($fromtime) $condition .= " AND edittime>=$fromtime";
+ if($totime) $condition .= " AND edittime<=$totime";
+ if($minprice) $condition .= " AND price>=$minprice";
+ if($maxprice) $condition .= " AND price<=$maxprice";
+ if($dfields[$fields] == 'content') {
+ if($keyword && $MOD['fulltext'] == 1) $condition .= match_kw($dfields[$fields], $keyword);
+ $condition = str_replace('AND ', 'AND i.', $condition);
+ $condition = str_replace('i.content', 'd.content', $condition);
+ $condition = "i.status=3 AND i.itemid=d.itemid".$condition;
+ if($keyword && $MOD['fulltext'] == 2) $condition .= " AND MATCH(`content`) AGAINST('$kw'".(preg_match("/[+-<>()~*]/", $kw) ? ' IN BOOLEAN MODE' : '').")";
+ $table = $table.' i,'.$table_data.' d';
+ $fds = 'i.'.str_replace(',', ',i.', $fds);
+ } else {
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($pptsql) $condition .= $pptsql;//PPT
+ $condition = "status=3".$condition;
+ }
+ $pagesize = $MOD['pagesize'];
+ $offset = ($page-1)*$pagesize;
+ $items = $db->count($table, $condition, $DT['cache_search']);
+ $pages = pages($items, $page, $pagesize);
+ if($items) {
+ $order = $dorder[$order] ? " ORDER BY $dorder[$order]" : '';
+ $result = $db->query("SELECT {$fds} FROM {$table} WHERE {$condition}{$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ if($kw) {
+ $replacef = explode(' ', $kw);
+ $replacet = array_map('highlight', $replacef);
+ }
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ if($kw) $r['title'] = str_replace($replacef, $replacet, $r['title']);
+ if($kw) $r['introduce'] = str_replace($replacef, $replacet, $r['introduce']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ }
+ if($page == 1 && $kw && $DT['search_kw']) keyword($DT['search_kw'], $_username, $kw, $items, $moduleid);
+ $showpage = 1;
+ $datetype = 5;
+ $width = 285;
+ $height = 210;
+ $target = '_blank';
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+} else {
+ if($kw) {
+ check_group($_groupid, $MOD['group_search']) or message($L['msg_no_search']);
+ } else if($catid) {
+ $CAT or message($L['msg_not_cate']);
+ if(!check_group($_groupid, $MOD['group_list']) || !check_group($_groupid, $CAT['group_list'])) message($L['msg_no_right']);
+ } else {
+ check_group($_groupid, $MOD['group_index']) or message($L['msg_no_right']);
+ }
+ $head_title = $MOD['name'].$DT['seo_delimiter'].$head_title;
+ if($kw) $head_title = $kw.$DT['seo_delimiter'].$head_title;
+ if(!$areaid && $cityid && strpos($DT_URL, 'areaid') === false) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ }
+ $minprice = isset($minprice) ? dround($minprice) : '';
+ $minprice or $minprice = '';
+ $maxprice = isset($maxprice) ? dround($maxprice) : '';
+ $maxprice or $maxprice = '';
+ $elite = isset($elite) ? intval($elite) : 0;
+ (isset($orderby) && in_array($orderby, array('dcomments', 'dorders', 'dprice', 'aprice'))) or $orderby = '';
+ $tags = array();
+ if($DT_QST) {
+ $condition = "status=3";
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($catid) $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($areaid) $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($elite) $condition .= " AND level>0";
+ if($minprice) $condition .= " AND price>=$minprice";
+ if($maxprice) $condition .= " AND price<=$maxprice";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize);
+ if($items) {
+ $order = $MOD['order'];
+ if($orderby) $order = substr($orderby, 0, 1) == 'd' ? substr($orderby, 1).' DESC' : substr($orderby, 1).' ASC';
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY {$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ while($r = $db->fetch_array($result)) {
+ if($kw) $r['title'] = str_replace($kw, ''.$kw.' ', $r['title']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = preg_replace("/(.*)([&?]page=[0-9]*)(.*)/i", "\\1\\3", rewrite($DT_URL, 1)).'&job=ajax';
+ }
+ if($page == 1 && $kw && $DT['search_kw']) keyword($DT['search_kw'], $_username, $kw, $items, $moduleid);
+ }
+ if($job == 'ajax') {
+ if($tags) include template('list-'.$module, 'tag');
+ exit;
+ }
+ $head_title = $MOD['name'].$L['search'];
+}
+$seo_file = 'search';
+include DT_ROOT.'/include/seo.inc.php';
+include template($MOD['template_search'] ? $MOD['template_search'] : 'search', $module);
+?>
\ No newline at end of file
diff --git a/module/group/task.inc.php b/module/group/task.inc.php
new file mode 100644
index 0000000..d9c0afc
--- /dev/null
+++ b/module/group/task.inc.php
@@ -0,0 +1,89 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3) exit;
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ $currency = $MOD['fee_currency'];
+ $fee_unit = $currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $fee_name = $currency == 'money' ? $DT['money_name'] : $DT['credit_name'];
+ $expired = $totime && $totime < $DT_TIME ? true : false;
+ $member = array();
+ if(check_group($_groupid, $MOD['group_contact'])) {
+ if($fee) {
+ if($MG['fee_mode'] && $MOD['fee_mode']) {
+ $user_status = 3;
+ } else {
+ $mid = $moduleid;
+ if($_userid) {
+ $user_status = check_pay($mid, $itemid) ? 3 : 2;
+ } else {
+ $user_status = 0;
+ }
+ }
+ } else {
+ $user_status = 3;
+ }
+ } else {
+ $user_status = $_userid ? 1 : 0;
+ }
+ if($_username && $_username == $item['username']) $user_status = 3;
+ if($user_status == 3 && $item['username']) $member = userinfo($item['username']);
+ $contact = strip_nr(ob_template('contact', 'chip'), true);
+ echo 'Inner("contact", \''.$contact.'\');';
+ if($MOD['hits']) echo 'Inner("hits", \''.$item['hits'].'\');';
+ $update = '';
+ if($expired) {
+ if($process < 2) {
+ $update .= ",process=2,endtime=$DT_TIME";
+ $item['process'] = $process = 2;
+ $item['endtime'] = $endtime = $DT_TIME;
+ }
+ } else {
+ if($process == 0) {
+ if(($minamount > 0 && $orders >= $minamount) || ($minamount == 0 && $orders >= 1)) {
+ $update .= ",process=1";
+ $item['process'] = $process = 1;
+ }
+ } else if($process == 1) {
+ if($amount && $amount <= $orders) {
+ $update .= ",process=2,endtime=$DT_TIME";
+ $item['process'] = $process = 2;
+ $item['endtime'] = $endtime = $DT_TIME;
+ }
+ }
+ }
+ if($item['totime'] && $item['totime'] < $DT_TIME && $item['status'] == 3) $update .= ",status=4";
+ if($member) {
+ $update_user = update_user($member, $item);
+ if($update_user) $db->query("UPDATE LOW_PRIORITY {$table} SET ".substr($update_user, 1)." WHERE username='$username'", 'UNBUFFERED');
+ }
+ if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+ if($MOD['show_html'] && $task_item && $DT_TIME - @filemtime(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl']) > $task_item) tohtml('show', $module);
+} else if($html == 'list') {
+ $catid or exit;
+ if($MOD['list_html'] && $task_list && $CAT) {
+ $num = 1;
+ $totalpage = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $demo = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, '{DEMO}');
+ $fid = $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $page + 1;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $totalpage + 1 - $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ }
+} else if($html == 'index') {
+ if($DT['cache_hits'] && $MOD['hits']) {
+ $file = DT_CACHE.'/hits-'.$moduleid;
+ if($DT_TIME - @filemtime($file.'.dat') > $DT['cache_hits'] || @filesize($file.'.php') > 102400) update_hits($moduleid, $table);
+ }
+ if($MOD['index_html']) {
+ $file = DT_ROOT.'/'.$MOD['moduledir'].'/'.$DT['index'].'.'.$DT['file_ext'];
+ if($DT_TIME - @filemtime($file) > $task_index) tohtml('index', $module);
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/index.html b/module/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/info/admin/config.inc.php b/module/info/admin/config.inc.php
new file mode 100644
index 0000000..c6f66b6
--- /dev/null
+++ b/module/info/admin/config.inc.php
@@ -0,0 +1,25 @@
+
\ No newline at end of file
diff --git a/module/info/admin/html.inc.php b/module/info/admin/html.inc.php
new file mode 100644
index 0000000..cc21052
--- /dev/null
+++ b/module/info/admin/html.inc.php
@@ -0,0 +1,119 @@
+get_one("SELECT * FROM {$DT_PRE}category WHERE moduleid=$moduleid AND catid>$catids ORDER BY catid");
+ if($CAT) {
+ $bcatid = $catid = $CAT['catid'];
+ $total = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $num = 50;
+ $bfid = $fid;
+ isset($fpage) or $fpage = 1;
+ if($fpage <= $total) {
+ $fid = $fpage;
+ tohtml('list', $module);
+ $fid = $bfid;
+ msg($MOD['name'].' ['.$CAT['catname'].'] 第'.$fpage.'页至第'.($fpage+$num-1).'页生成成功'.progress(0, $fid, $tid), '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids='.$catids.'&fid='.$fid.'&tid='.$tid.'&all='.$all.'&one='.$one.'&fpage='.($fpage+$num), 0);
+ }
+ $fid++;
+ msg($MOD['name'].' ['.$CAT['catname'].'] 生成成功'.progress(0, $fid, $tid), '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids='.$catid.'&fid='.$fid.'&tid='.$tid.'&all='.$all.'&one='.$one);
+ } else {
+ $all ? msg($MOD['name'].'列表生成成功', '?moduleid='.$moduleid.'&file='.$file.'&action=show&all='.$all.'&one='.$one) : msg($MOD['name'].'列表生成成功', $this_forward);
+ }
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}category WHERE moduleid=$moduleid");
+ $tid = $r['num'];
+ msg('', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids=0&fid=1&&tid='.$tid.'&all='.$all.'&one='.$one);
+ }
+ break;
+ case 'show':
+ $update = (isset($update) && $update) ? 1 : 0;
+ if(!$update && !$MOD['show_html']) {
+ if($one) dheader( '?file=html&action=back&mid='.$moduleid);
+ $all ? msg($MOD['name'].'生成成功', $this_forward) : dmsg($MOD['name'].'生成成功', $this_forward);
+ }
+ $catid = isset($catid) ? intval($catid) : '';
+ $sql = $catid ? " AND catid=$catid" : '';
+ if(!isset($fid)) {
+ $r = $db->get_one("SELECT min(itemid) AS fid FROM {$table} WHERE status>2 AND islink=0 {$sql}");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ }
+ isset($sid) or $sid = $fid;
+ if(!isset($tid)) {
+ $r = $db->get_one("SELECT max(itemid) AS tid FROM {$table} WHERE status>2 AND islink=0 {$sql}");
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ }
+ if($update) {
+ require DT_ROOT.'/module/'.$module.'/'.$module.'.class.php';
+ $do = new $module($moduleid);
+ }
+ isset($num) or $num = 100;
+ if($fid <= $tid) {
+ $result = $db->query("SELECT itemid FROM {$table} WHERE status>2 AND islink=0 AND itemid>=$fid {$sql} ORDER BY itemid LIMIT 0,$num");
+ if($db->affected_rows($result)) {
+ while($r = $db->fetch_array($result)) {
+ $itemid = $r['itemid'];
+ $update ? $do->update($itemid) : tohtml('show', $module);
+ }
+ $itemid += 1;
+ } else {
+ $itemid = $fid + $num;
+ }
+ } else {
+ if($update) {
+ $all ? msg('', '?moduleid='.$moduleid.'&file='.$file.'&action=index&all=1&one='.$one) : dmsg('更新成功', $this_forward);
+ } else {
+ if($one) dheader( '?file=html&action=back&mid='.$moduleid);
+ $all ? msg($MOD['name'].'生成成功', $this_forward) : dmsg($MOD['name'].'生成成功', $this_forward);
+ }
+ }
+ msg('ID从'.$fid.'至'.($itemid-1).$MOD['name'].($update ? '更新' : '生成').'成功'.progress($sid, $fid, $tid), "?moduleid=$moduleid&file=$file&action=$action&sid=$sid&fid=$itemid&tid=$tid&num=$num&update=$update&all=$all&one=$one", 0);
+ break;
+ case 'cate':
+ $catid or msg('请选择分类');
+ isset($num) or $num = 50;
+ isset($fid) or $fid = 1;
+ $total = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ if($fpage && $tpage) {
+ $fid = $fpage;
+ $num = $tpage - $fpage + 1;
+ tohtml('list', $module);
+ dmsg('生成成功', $this_forward);
+ }
+ if($fid <= $total) {
+ tohtml('list', $module);
+ msg('第'.$fid.'页至第'.($fid+$num-1).'页生成成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catid='.$catid.'&fid='.($fid+$num).'&num='.$num.'&fpage='.$fpage.'&tpage='.$tpage, 0);
+ } else {
+ dmsg('生成成功', $this_forward);
+ }
+ break;
+ case 'item':
+ $catid or msg('请选择分类');
+ msg('', '?moduleid='.$moduleid.'&file='.$file.'&action=show&catid='.$catid.'&num='.$num);
+ break;
+ default:
+ $r = $db->get_one("SELECT min(itemid) AS fid,max(itemid) AS tid FROM {$table} WHERE status=3");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ include tpl('html', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/info/admin/index.html b/module/info/admin/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/info/admin/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/info/admin/menu.inc.php b/module/info/admin/menu.inc.php
new file mode 100644
index 0000000..c50d2ab
--- /dev/null
+++ b/module/info/admin/menu.inc.php
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/module/info/admin/remkdir.inc.php b/module/info/admin/remkdir.inc.php
new file mode 100644
index 0000000..092b1c7
--- /dev/null
+++ b/module/info/admin/remkdir.inc.php
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/module/info/admin/setting.inc.php b/module/info/admin/setting.inc.php
new file mode 100644
index 0000000..c0d7609
--- /dev/null
+++ b/module/info/admin/setting.inc.php
@@ -0,0 +1,50 @@
+$v) {
+ if(strpos($k, 'seo_') === false) continue;
+ seo_check($v) or msg('SEO信息包含非法字符');
+ }
+ update_setting($moduleid, $setting);
+ cache_module($moduleid);
+ if($setting['php_list_urlid'] != $MOD['php_list_urlid'] || $setting['htm_list_urlid'] != $MOD['htm_list_urlid'] || $setting['htm_list_prefix'] != $MOD['htm_list_prefix'] || $setting['list_html'] != $MOD['list_html']) {
+ $_MOD = $MOD;
+ $MOD = $setting;
+ $result = $db->query("SELECT * FROM {$DT_PRE}category WHERE moduleid=$moduleid");
+ while($r = $db->fetch_array($result)) {
+ update_category($r);
+ }
+ cache_category($moduleid);
+ $MOD = $_MOD;
+ }
+ if($setting['php_item_urlid'] != $MOD['php_item_urlid'] || $setting['htm_item_urlid'] != $MOD['htm_item_urlid'] || $setting['htm_item_prefix'] != $MOD['htm_item_prefix'] || $setting['show_html'] != $MOD['show_html']) {
+ msg('设置保存成功,开始更新地址', '?moduleid='.$moduleid.'&file=html&action=show&update=1&num=1000');
+ }
+ dmsg('设置保存成功', '?moduleid='.$moduleid.'&file='.$file.'&tab='.$tab);
+} else {
+ $GROUP = cache_read('group.php');
+ $r = $db->get_one("SELECT MAX(itemid) AS maxid FROM {$table}");
+ $maxid = $r['maxid'];
+ extract(dhtmlspecialchars($MOD));
+ if($kw) {
+ $all = 1;
+ ob_start();
+ }
+ include tpl('setting', $module);
+ if($kw) {
+ $data = $content = ob_get_contents();
+ ob_clean();
+ $data = preg_replace('\'(?!((<.*?)|(]*?)>)|([^>]*?)|([^>]*?))\'si', ''.$kw.' ', $data);
+ $data = preg_replace('//', '', $data, 1);
+ echo $data ? $data : $content;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/info/admin/template/edit.tpl.php b/module/info/admin/template/edit.tpl.php
new file mode 100644
index 0000000..a864ef5
--- /dev/null
+++ b/module/info/admin/template/edit.tpl.php
@@ -0,0 +1,422 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+单页采编
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/info/admin/template/html.tpl.php b/module/info/admin/template/html.tpl.php
new file mode 100644
index 0000000..339891c
--- /dev/null
+++ b/module/info/admin/template/html.tpl.php
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/info/admin/template/index.html b/module/info/admin/template/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/info/admin/template/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/info/admin/template/index.tpl.php b/module/info/admin/template/index.tpl.php
new file mode 100644
index 0000000..02795d5
--- /dev/null
+++ b/module/info/admin/template/index.tpl.php
@@ -0,0 +1,163 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+批量延长过期时间
+天
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+取消', 0, 'onchange="this.form.action=\'?moduleid='.$moduleid.'&file='.$file.'&action=level\';this.form.submit();"');?>
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/info/admin/template/setting.tpl.php b/module/info/admin/template/setting.tpl.php
new file mode 100644
index 0000000..1bdbe36
--- /dev/null
+++ b/module/info/admin/template/setting.tpl.php
@@ -0,0 +1,545 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/info/global.func.php b/module/info/global.func.php
new file mode 100644
index 0000000..7ca7b97
--- /dev/null
+++ b/module/info/global.func.php
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/module/info/index.htm.php b/module/info/index.htm.php
new file mode 100644
index 0000000..688ca90
--- /dev/null
+++ b/module/info/index.htm.php
@@ -0,0 +1,47 @@
+get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].'index.php?page={destoon_page}');
+ $tags = array();
+ if($items) {
+ $order = $MOD['order'];
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ if(!$r['islink']) $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 3);
+ $r['thumb'] = str_replace('.thumb.', '.middle.', $r['thumb']);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put(str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename), $data);
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/info/index.html b/module/info/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/info/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/info/list.inc.php b/module/info/list.inc.php
new file mode 100644
index 0000000..6743599
--- /dev/null
+++ b/module/info/list.inc.php
@@ -0,0 +1,90 @@
+count($table, $condition, $CFG['db_expires']);
+ } else {
+ if($page == 1) {
+ $items = $db->count($table, $condition, $CFG['db_expires']);
+ if($items != $CAT['item']) {
+ $CAT['item'] = $items;
+ $db->query("UPDATE {$DT_PRE}category SET item=$items WHERE catid=$catid");
+ }
+ } else {
+ $items = $CAT['item'];
+ }
+ }
+ $pagesize = $MOD['pagesize'];
+ $offset = ($page-1)*$pagesize;
+ $pages = listpages($CAT, $items, $page, $pagesize);
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ if(!$r['islink']) $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ $showpage = 1;
+ $datetype = 5;
+ $introduce = 150;
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].listurl($CAT, $page > 1 ? $page : 0);
+} else {
+ if(!$CAT || $CAT['moduleid'] != $moduleid) message($L['msg_not_cate']);
+ if(!check_group($_groupid, $MOD['group_list']) || !check_group($_groupid, $CAT['group_list'])) message($L['msg_no_right']);
+ $condition = "status=3";
+ $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($cityid) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($CAT, '{destoon_page}'));
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ if(!$r['islink']) $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['thumb'] = str_replace('.thumb.', '.middle.', $r['thumb']);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid;
+ }
+ if($CAT['parentid']) $PCAT = get_cat($CAT['parentid']);
+ $head_title = $head_name = $CAT['catname'];
+}
+$seo_file = 'list';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $CAT['template'] ? $CAT['template'] : ($MOD['template_list'] ? $MOD['template_list'] : 'list');
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/info/message.inc.php b/module/info/message.inc.php
new file mode 100644
index 0000000..e6189fb
--- /dev/null
+++ b/module/info/message.inc.php
@@ -0,0 +1,114 @@
+ -1 or message(lang('message->without_permission'));
+require DT_ROOT.'/module/'.$module.'/common.inc.php';
+include load('misc.lang');
+$item = $db->get_one("SELECT title,islink,linkurl,totime,username,company,vip,status FROM {$table} WHERE itemid=$itemid");
+$item or message($L['not_exists']);
+if($item['islink']) dheader($item['linkurl']);
+if($item['totime'] && $DT_TIME > $item['totime']) message($L['has_expired']);
+$item['status'] == 3 or message($L['not_exists']);
+$item['username'] or message($L['com_not_member']);
+$_username != $item['username'] or message($L['send_self']);
+
+$limit_used = $limit_free = 0;
+if($MG['message_limit']) {
+ $today = $DT_TODAY - 86400;
+ $sql = $_userid ? "fromuser='$_username'" : "ip='$DT_IP'";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}message WHERE $sql AND addtime>$today AND status=3");
+ $limit_used = $r['num'];
+ $limit_used < $MG['message_limit'] or message(lang($L['message_limit'], array($MG['message_limit'], $limit_used)));
+ $limit_free = $MG['message_limit'] > $limit_used ? $MG['message_limit'] - $limit_used : 0;
+}
+
+$linkurl = $MOD['linkurl'].$item['linkurl'];
+$need_captcha = $MOD['captcha_message'] == 2 ? $MG['captcha'] : $MOD['captcha_message'];
+$need_question = $MOD['question_message'] == 2 ? $MG['question'] : $MOD['question_message'];
+require DT_ROOT.'/include/post.func.php';
+if($_userid) {
+ $user = userinfo($_username);
+ $company = $user['company'];
+ $truename = $user['truename'];
+ $telephone = $user['telephone'] ? $user['telephone'] : $user['mobile'];
+ $email = $user['mail'] ? $user['mail'] : $user['email'];
+ $qq = $user['qq'];
+ $wx = $user['wx'];
+ $ali = $user['ali'];
+ $skype = $user['skype'];
+}
+if($submit) {
+ captcha($captcha, $need_captcha);
+ question($answer, $need_question);
+ $title = dhtmlspecialchars(trim($title));
+ if(!$title) message($L['msg_type_title']);
+ $content = dhtmlspecialchars(trim($content));
+ if(!$content) message($L['msg_type_content']);
+ if(!$_userid) {
+ $truename = dhtmlspecialchars(trim($truename));
+ if(!$truename) message($L['msg_type_truename']);
+ $telephone = dhtmlspecialchars(trim($telephone));
+ if(!$telephone) message($L['msg_type_telephone']);
+ $email = dhtmlspecialchars(trim($email));
+ $company = dhtmlspecialchars(trim($company));
+ if($DT['im_qq']) $qq = dhtmlspecialchars(trim($qq));
+ if($DT['im_wx']) $wx = dhtmlspecialchars(trim($wx));
+ if($DT['im_ali'])$ali = dhtmlspecialchars(trim($ali));
+ if($DT['im_skype']) $skype = dhtmlspecialchars(trim($skype));
+ }
+ $content = nl2br($content);
+ if($company) $content .= ' '.$L['content_company'].''.$company.' ';
+ if($truename) $content .= ' '.$L['content_truename'].''.$truename.' ';
+ if($telephone) $content .= ' '.$L['content_telephone'].''.$telephone.' ';
+ if(is_email($email)) $content .= ' '.$L['content_email'].''.$email.' ';
+ if($DT['im_qq'] && is_qq($qq)) $content .= ' '.$L['content_qq'].' '.im_qq($qq).' '.$qq.' ';
+ if($DT['im_wx'] && is_wx($wx)) $content .= ' '.$L['content_wx'].' '.im_wx($wx, $_username).' '.$wx.' ';
+ if($DT['im_ali'] && $ali) $content .= ' '.$L['content_ali'].' '.im_ali($ali).' '.$ali.' ';
+ if($DT['im_skype'] && $skype) $content .= ' '.$L['content_skype'].' '.im_skype($skype).' '.$skype.' ';
+ if(is_date($date)) $content .= ' '.lang($L['content_date'], array($date));
+ $message = $L['content_info'].''.$item['title'].' '.$content;
+ //send sms
+ if($DT['sms'] && $_sms && $item['username'] && isset($sendsms)) {
+ $touser = userinfo($item['username']);
+ if($touser['mobile']) {
+ $message = lang('sms->sms_message', array($item['title'], $itemid, $truename, $telephone));
+ $message = strip_sms($message);
+ $word = word_count($message);
+ $sms_num = ceil($word/$DT['sms_len']);
+ if($sms_num <= $_sms) {
+ $sms_code = send_sms($touser['mobile'], $message, $word);
+ if(strpos($sms_code, $DT['sms_ok']) !== false) {
+ $tmp = explode('/', $sms_code);
+ if(is_numeric($tmp[1])) $sms_num = $tmp[1];
+ if($sms_num) sms_add($_username, -$sms_num);
+ if($sms_num) sms_record($_username, -$sms_num, $_username, $MOD['name'].$L['sms_message'], 'ID:'.$itemid);
+ }
+ }
+ }
+ }
+ //send sms
+ $forward = $DT_PC ? $linkurl : str_replace($MOD['linkurl'], $MOD['mobile'], $linkurl);
+ if(send_message($item['username'], $title, $message, 3, $_username, $moduleid, $itemid)) {
+ $db->query("UPDATE {$table} SET messages=messages+1 WHERE itemid=$itemid");
+ message($L['msg_message_success'], $forward);
+ } else {
+ message($_userid ? $L['msg_member_failed'] : $L['msg_guest_failed']);
+ }
+}
+$iask = explode('|', trim($MOD['message_ask']));
+isset($content) or $content = '';
+$date = timetodate($DT_TIME + 5*86400, 3);
+$title = lang($L['info_message_title'], array($item['title']));
+$head_title = $L['info_head_title'].$DT['seo_delimiter'].$item['title'].$DT['seo_delimiter'].$MOD['name'];
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+} else {
+ $forward = $MOD['mobile'].$item['linkurl'];
+ $head_name = $L['info_head_title'];
+ if($sns_app) $seo_title = $MOD['name'];
+ $js_pull = 0;
+ $foot = '';
+}
+include template($MOD['template_message'] ? $MOD['template_message'] : 'message', $module);
+?>
\ No newline at end of file
diff --git a/module/info/search.inc.php b/module/info/search.inc.php
new file mode 100644
index 0000000..66d70a3
--- /dev/null
+++ b/module/info/search.inc.php
@@ -0,0 +1,158 @@
+ $DT['max_kw']) message(lang($L['word_limit'], array($DT['min_kw'], $DT['max_kw'])), $MOD['linkurl'].'search.php');
+ if($DT['search_limit'] && $page == 1) {
+ if(($DT_TIME - $DT['search_limit']) < get_cookie('last_search')) message(lang($L['time_limit'], array($DT['search_limit'])), $MOD['linkurl'].'search.php');
+ set_cookie('last_search', $DT_TIME);
+ }
+ }
+
+ $pptsql = '';
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $PPT = property_condition($catid);
+ foreach($PPT as $k=>$v) {
+ $PPT[$k]['select'] = '';
+ $oid = $v['oid'];
+ $tmp = 'ppt_'.$oid;
+ if(isset($$tmp)) {
+ $PPT[$k]['select'] = $tmp = strip_kw($$tmp);
+ if($tmp && in_array($tmp, $v['options'])) {
+ $tmp = 'O'.$oid.':'.$tmp.';';
+ $pptsql .= match_kw('pptword', $tmp);
+ }
+ }
+ }
+ }
+ $fds = $MOD['fields'];
+ $condition = '';
+ if($catid) $condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($fromtime) $condition .= " AND edittime>=$fromtime";
+ if($totime) $condition .= " AND edittime<=$totime";
+ if($dfields[$fields] == 'content') {
+ if($keyword && $MOD['fulltext'] == 1) $condition .= match_kw($dfields[$fields], $keyword);
+ $condition = str_replace('AND ', 'AND i.', $condition);
+ $condition = str_replace('i.content', 'd.content', $condition);
+ $condition = "i.status=3 AND i.itemid=d.itemid".$condition;
+ if($keyword && $MOD['fulltext'] == 2) $condition .= " AND MATCH(`content`) AGAINST('$kw'".(preg_match("/[+-<>()~*]/", $kw) ? ' IN BOOLEAN MODE' : '').")";
+ $table = $table.' i,'.$table_data.' d';
+ $fds = 'i.'.str_replace(',', ',i.', $fds);
+ } else {
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($pptsql) $condition .= $pptsql;//PPT
+ $condition = "status=3".$condition;
+ }
+ $pagesize = $MOD['pagesize'];
+ $offset = ($page-1)*$pagesize;
+ $items = $db->count($table, $condition, $DT['cache_search']);
+ $pages = pages($items, $page, $pagesize);
+ if($items) {
+ $order = $dorder[$order] ? " ORDER BY $dorder[$order]" : '';
+ $result = $db->query("SELECT {$fds} FROM {$table} WHERE {$condition}{$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ if($kw) {
+ $replacef = explode(' ', $kw);
+ $replacet = array_map('highlight', $replacef);
+ }
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ if($kw) $r['title'] = str_replace($replacef, $replacet, $r['title']);
+ if(!$r['islink']) $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ }
+ if($page == 1 && $kw && $DT['search_kw']) keyword($DT['search_kw'], $_username, $kw, $items, $moduleid);
+ $showpage = 1;
+ $datetype = 5;
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+} else {
+ if($kw) {
+ check_group($_groupid, $MOD['group_search']) or message($L['msg_no_search']);
+ } else if($catid) {
+ $CAT or message($L['msg_not_cate']);
+ if(!check_group($_groupid, $MOD['group_list']) || !check_group($_groupid, $CAT['group_list'])) message($L['msg_no_right']);
+ } else {
+ check_group($_groupid, $MOD['group_index']) or message($L['msg_no_right']);
+ }
+ $head_title = $MOD['name'].$DT['seo_delimiter'].$head_title;
+ if($kw) $head_title = $kw.$DT['seo_delimiter'].$head_title;
+ if(!$areaid && $cityid && strpos($DT_URL, 'areaid') === false) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ }
+ $elite = isset($elite) ? intval($elite) : 0;
+ (isset($orderby) && in_array($orderby, array('dmessages', 'dhits', 'dcomments'))) or $orderby = '';
+ $tags = array();
+ if($DT_QST) {
+ $condition = "status=3";
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($catid) $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($areaid) $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($elite) $condition .= " AND level>0";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize);
+ if($items) {
+ $order = $MOD['order'];
+ if($orderby) $order = substr($orderby, 0, 1) == 'd' ? substr($orderby, 1).' DESC' : substr($orderby, 1).' ASC';
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY {$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ while($r = $db->fetch_array($result)) {
+ if($kw) $r['title'] = str_replace($kw, ''.$kw.' ', $r['title']);
+ if(!$r['islink']) $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 3);
+ $r['thumb'] = str_replace('.thumb.', '.middle.', $r['thumb']);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = preg_replace("/(.*)([&?]page=[0-9]*)(.*)/i", "\\1\\3", rewrite($DT_URL, 1)).'&job=ajax';
+ }
+ if($page == 1 && $kw && $DT['search_kw']) keyword($DT['search_kw'], $_username, $kw, $items, $moduleid);
+ }
+ if($job == 'ajax') {
+ if($tags) include template('list-'.$module, 'tag');
+ exit;
+ }
+ $head_title = $MOD['name'].$L['search'];
+}
+$seo_file = 'search';
+include DT_ROOT.'/include/seo.inc.php';
+include template($MOD['template_search'] ? $MOD['template_search'] : 'search', $module);
+?>
\ No newline at end of file
diff --git a/module/info/task.inc.php b/module/info/task.inc.php
new file mode 100644
index 0000000..0ba1709
--- /dev/null
+++ b/module/info/task.inc.php
@@ -0,0 +1,69 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3) exit;
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ $currency = $MOD['fee_currency'];
+ $fee_unit = $currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $fee_name = $currency == 'money' ? $DT['money_name'] : $DT['credit_name'];
+ $member = array();
+ if(check_group($_groupid, $MOD['group_contact'])) {
+ if($fee) {
+ if($MG['fee_mode'] && $MOD['fee_mode']) {
+ $user_status = 3;
+ } else {
+ $mid = $moduleid;
+ if($_userid) {
+ $user_status = check_pay($mid, $itemid) ? 3 : 2;
+ } else {
+ $user_status = 0;
+ }
+ }
+ } else {
+ $user_status = 3;
+ }
+ } else {
+ $user_status = $_userid ? 1 : 0;
+ }
+ if($_username && $_username == $item['username']) $user_status = 3;
+ if($user_status == 3 && $item['username']) $member = userinfo($item['username']);
+ $contact = strip_nr(ob_template('contact', 'chip'), true);
+ echo 'Inner("contact", \''.$contact.'\');';
+ if($MOD['hits']) echo 'Inner("hits", \''.$item['hits'].'\');';
+ $update = '';
+ if($item['totime'] && $item['totime'] < $DT_TIME && $item['status'] == 3) $update .= ",status=4";
+ if($member) {
+ unset($item['areaid']);
+ $update_user = update_user($member, $item);
+ if($update_user) $db->query("UPDATE LOW_PRIORITY {$table} SET ".substr($update_user, 1)." WHERE username='$username'", 'UNBUFFERED');
+ }
+ if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+ if($MOD['show_html'] && $task_item && $DT_TIME - @filemtime(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl']) > $task_item) tohtml('show', $module);
+} else if($html == 'list') {
+ $catid or exit;
+ if($MOD['list_html'] && $task_list && $CAT) {
+ $num = 1;
+ $totalpage = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $demo = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, '{DEMO}');
+ $fid = $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $page + 1;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $totalpage + 1 - $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ }
+} else if($html == 'index') {
+ if($DT['cache_hits'] && $MOD['hits']) {
+ $file = DT_CACHE.'/hits-'.$moduleid;
+ if($DT_TIME - @filemtime($file.'.dat') > $DT['cache_hits'] || @filesize($file.'.php') > 102400) update_hits($moduleid, $table);
+ }
+ if($MOD['index_html']) {
+ $file = DT_ROOT.'/'.$MOD['moduledir'].'/'.$DT['index'].'.'.$DT['file_ext'];
+ if($DT_TIME - @filemtime($file) > $task_index) tohtml('index', $module);
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/job/admin/index.html b/module/job/admin/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/job/admin/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/job/admin/index.inc.php b/module/job/admin/index.inc.php
new file mode 100644
index 0000000..4634f7d
--- /dev/null
+++ b/module/job/admin/index.inc.php
@@ -0,0 +1,254 @@
+ 9 ? " AND level>0" : " AND level=$level";
+ if($gender) $condition .= " AND gender=$gender";
+ if($type) $condition .= " AND type=$type";
+ if($marriage) $condition .= " AND marriage=$marriage";
+ if($education) $condition .= " AND education>=$education";
+ if($experience) $condition .= " AND experience>=$experience";
+ if($minsalary) $condition .= " AND minsalary>=$minsalary";
+ if($maxsalary) $condition .= " AND maxsalary<=$maxsalary";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+ if($minvip) $condition .= " AND vip>=$minvip";
+ if($maxvip) $condition .= " AND vip<=$maxvip";
+ if($ip) $condition .= " AND ip='$ip'";
+ if($username) $condition .= " AND username='$username'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+
+ $timetype = strpos($dorder[$order], 'add') !== false ? 'add' : '';
+}
+switch($action) {
+ case 'add':
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ $do->add($post);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ if($MOD['show_html'] && $post['status'] > 2) $do->tohtml($do->itemid);
+ dmsg('添加成功', '?moduleid='.$moduleid.'&action='.$action);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $content = '';
+ $status = 3;
+ $sex = 1;
+ $addtime = timetodate($DT_TIME);
+ $username = $_username;
+ $item = array();
+ $menuid = 0;
+ isset($url) or $url = '';
+ if($url) {
+ $tmp = fetch_url($url);
+ if($tmp) extract($tmp);
+ }
+ $history = 0;
+ include tpl('edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ $item = $do->get_one();
+ extract($item);
+ $history = history($moduleid, $itemid);
+ $addtime = timetodate($addtime);
+ $totime = $totime ? timetodate($totime, 6) : '';
+ $menuon = array('5', '4', '2', '1', '3');
+ $menuid = $menuon[$status];
+ include tpl($action, $module);
+ }
+ break;
+ case 'move':
+ if($submit) {
+ $fromids or msg('请填写来源ID');
+ if($tocatid) {
+ $db->query("UPDATE {$table} SET catid=$tocatid WHERE `{$fromtype}` IN ($fromids)");
+ dmsg('移动成功', $forward);
+ } else {
+ msg('请选择目标分类');
+ }
+ } else {
+ $itemid = $itemid ? implode(',', $itemid) : '';
+ $menuid = 6;
+ include tpl($action);
+ }
+ break;
+ case 'update':
+ is_array($itemid) or msg('请选择'.$MOD['name']);
+ foreach($itemid as $v) {
+ $do->update($v);
+ }
+ dmsg('更新成功', $forward);
+ break;
+ case 'tohtml':
+ is_array($itemid) or msg('请选择'.$MOD['name']);
+ foreach($itemid as $itemid) {
+ tohtml('show', $module);
+ }
+ dmsg('生成成功', $forward);
+ break;
+ case 'delete':
+ $itemid or msg('请选择'.$MOD['name']);
+ isset($recycle) ? $do->recycle($itemid) : $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'restore':
+ $itemid or msg('请选择'.$MOD['name']);
+ $do->restore($itemid);
+ dmsg('还原成功', $forward);
+ break;
+ case 'refresh':
+ $itemid or msg('请选择'.$MOD['name']);
+ $do->refresh($itemid);
+ dmsg('刷新成功', $forward);
+ break;
+ case 'clear':
+ $do->clear();
+ dmsg('清空成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择'.$MOD['name']);
+ $level = intval($level);
+ $do->level($itemid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ case 'recycle':
+ $lists = $do->get_list('status=0'.$condition, $dorder[$order]);
+ $menuid = 5;
+ include tpl('index', $module);
+ break;
+ case 'reject':
+ if($itemid && !$psize) {
+ $do->reject($itemid);
+ dmsg('拒绝成功', $forward);
+ } else {
+ $lists = $do->get_list('status=1'.$condition, $dorder[$order]);
+ $menuid = 4;
+ include tpl('index', $module);
+ }
+ break;
+ case 'expire':
+ if(isset($refresh)) {
+ if(isset($extend)) {
+ $days = isset($days) ? intval($days) : 0;
+ $days or msg('请填写天数');
+ $itemid or msg('请选择信息');
+ foreach($itemid as $v) {
+ $db->query("UPDATE {$table} SET totime=totime+$days*86400,status=3 WHERE itemid='$v' AND totime>0");
+ }
+ $do->expire();
+ dmsg('延时成功', $forward);
+ } else {
+ $do->expire();
+ dmsg('刷新成功', $forward);
+ }
+ } else {
+ $lists = $do->get_list('status=4'.$condition, $dorder[$order]);
+ $menuid = 3;
+ include tpl('index', $module);
+ }
+ break;
+ case 'check':
+ if($itemid && !$psize) {
+ $do->check($itemid);
+ dmsg('审核成功', $forward);
+ } else {
+ $lists = $do->get_list('status=2'.$condition, $dorder[$order]);
+ $menuid = 2;
+ include tpl('index', $module);
+ }
+ break;
+ default:
+ $lists = $do->get_list('status=3'.$condition, $dorder[$order]);
+ $menuid = 1;
+ include tpl('index', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/job/admin/install.inc.php b/module/job/admin/install.inc.php
new file mode 100644
index 0000000..c566ce3
--- /dev/null
+++ b/module/job/admin/install.inc.php
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/module/job/admin/menu.inc.php b/module/job/admin/menu.inc.php
new file mode 100644
index 0000000..c4154c8
--- /dev/null
+++ b/module/job/admin/menu.inc.php
@@ -0,0 +1,14 @@
+
\ No newline at end of file
diff --git a/module/job/admin/remkdir.inc.php b/module/job/admin/remkdir.inc.php
new file mode 100644
index 0000000..c2a317f
--- /dev/null
+++ b/module/job/admin/remkdir.inc.php
@@ -0,0 +1,12 @@
+
\ No newline at end of file
diff --git a/module/job/admin/resume.inc.php b/module/job/admin/resume.inc.php
new file mode 100644
index 0000000..df632d6
--- /dev/null
+++ b/module/job/admin/resume.inc.php
@@ -0,0 +1,217 @@
+=$experience";
+ if($minsalary) $condition .= " AND minsalary>=$minsalary";
+ if($maxsalary) $condition .= " AND maxsalary<=$maxsalary";
+ if($open) $condition .= " AND open=$open";
+ if($thumb) $condition .= " AND thumb<>''";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+ if($ip) $condition .= " AND ip='$ip'";
+ if($username) $condition .= " AND username='$username'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+
+ $timetype = strpos($dorder[$order], 'add') !== false ? 'add' : '';
+}
+
+switch($action) {
+ case 'add':
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ $do->add($post);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ dmsg('添加成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $content = '';
+ $status = 3;
+ $addtime = timetodate($DT_TIME);
+ $gender = 1;
+ $byear = 19;
+ $bmonth = $bday = $experience = $marriage = $type = 1;
+ $education = 3;
+ $minsalary = 1000;
+ $maxsalary = 0;
+ $open = 3;
+ $item = array();
+ $history = 0;
+ $menuid = 0;
+ isset($url) or $url = '';
+ if($url) {
+ $tmp = fetch_url($url);
+ if($tmp) extract($tmp);
+ }
+ include tpl('resume_edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ $item = $do->get_one();
+ extract($item);
+ $history = history($moduleid, $file.'-'.$itemid);
+ $addtime = timetodate($addtime);
+ list($byear, $bmonth, $bday) = explode('-', $birthday);
+ $menuon = array('4', '3', '2', '1');
+ $menuid = $menuon[$status];
+ include tpl('resume_'.$action, $module);
+ }
+ break;
+ case 'move':
+ if($submit) {
+ $fromids or msg('请填写来源ID');
+ if($tocatid) {
+ $db->query("UPDATE {$table} SET catid=$tocatid WHERE `{$fromtype}` IN ($fromids)");
+ dmsg('移动成功', $forward);
+ } else {
+ msg('请选择目标分类');
+ }
+ } else {
+ $itemid = $itemid ? implode(',', $itemid) : '';
+ $menuid = 5;
+ include tpl($action);
+ }
+ break;
+ case 'update':
+ is_array($itemid) or msg('请选择简历');
+ foreach($itemid as $v) {
+ $do->update($v);
+ }
+ dmsg('更新成功', $forward);
+ break;
+ case 'delete':
+ $itemid or msg('请选择简历');
+ isset($recycle) ? $do->recycle($itemid) : $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'restore':
+ $itemid or msg('请选择简历');
+ $do->restore($itemid);
+ dmsg('还原成功', $forward);
+ break;
+ case 'refresh':
+ $itemid or msg('请选择简历');
+ $do->refresh($itemid);
+ dmsg('刷新成功', $forward);
+ break;
+ case 'clear':
+ $do->clear();
+ dmsg('清空成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择简历');
+ $level = intval($level);
+ $do->level($itemid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ case 'recycle':
+ $lists = $do->get_list('status=0'.$condition);
+ $menuid = 4;
+ include tpl('resume', $module);
+ break;
+ case 'reject':
+ if($itemid && !$psize) {
+ $do->reject($itemid);
+ dmsg('拒绝成功', $forward);
+ } else {
+ $lists = $do->get_list('status=1'.$condition);
+ $menuid = 3;
+ include tpl('resume', $module);
+ }
+ break;
+ case 'check':
+ if($itemid && !$psize) {
+ $do->check($itemid);
+ dmsg('审核成功', $forward);
+ } else {
+ $lists = $do->get_list('status=2'.$condition);
+ $menuid = 2;
+ include tpl('resume', $module);
+ }
+ break;
+ default:
+ $lists = $do->get_list('status=3'.$condition);
+ $menuid = 1;
+ include tpl('resume', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/job/admin/setting.inc.php b/module/job/admin/setting.inc.php
new file mode 100644
index 0000000..c0d7609
--- /dev/null
+++ b/module/job/admin/setting.inc.php
@@ -0,0 +1,50 @@
+$v) {
+ if(strpos($k, 'seo_') === false) continue;
+ seo_check($v) or msg('SEO信息包含非法字符');
+ }
+ update_setting($moduleid, $setting);
+ cache_module($moduleid);
+ if($setting['php_list_urlid'] != $MOD['php_list_urlid'] || $setting['htm_list_urlid'] != $MOD['htm_list_urlid'] || $setting['htm_list_prefix'] != $MOD['htm_list_prefix'] || $setting['list_html'] != $MOD['list_html']) {
+ $_MOD = $MOD;
+ $MOD = $setting;
+ $result = $db->query("SELECT * FROM {$DT_PRE}category WHERE moduleid=$moduleid");
+ while($r = $db->fetch_array($result)) {
+ update_category($r);
+ }
+ cache_category($moduleid);
+ $MOD = $_MOD;
+ }
+ if($setting['php_item_urlid'] != $MOD['php_item_urlid'] || $setting['htm_item_urlid'] != $MOD['htm_item_urlid'] || $setting['htm_item_prefix'] != $MOD['htm_item_prefix'] || $setting['show_html'] != $MOD['show_html']) {
+ msg('设置保存成功,开始更新地址', '?moduleid='.$moduleid.'&file=html&action=show&update=1&num=1000');
+ }
+ dmsg('设置保存成功', '?moduleid='.$moduleid.'&file='.$file.'&tab='.$tab);
+} else {
+ $GROUP = cache_read('group.php');
+ $r = $db->get_one("SELECT MAX(itemid) AS maxid FROM {$table}");
+ $maxid = $r['maxid'];
+ extract(dhtmlspecialchars($MOD));
+ if($kw) {
+ $all = 1;
+ ob_start();
+ }
+ include tpl('setting', $module);
+ if($kw) {
+ $data = $content = ob_get_contents();
+ ob_clean();
+ $data = preg_replace('\'(?!((<.*?)|(]*?)>)|([^>]*?)|([^>]*?))\'si', ''.$kw.' ', $data);
+ $data = preg_replace('//', '', $data, 1);
+ echo $data ? $data : $content;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/job/admin/template/edit.tpl.php b/module/job/admin/template/edit.tpl.php
new file mode 100644
index 0000000..e19c2e9
--- /dev/null
+++ b/module/job/admin/template/edit.tpl.php
@@ -0,0 +1,326 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+单页采编
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/job/admin/template/resume.tpl.php b/module/job/admin/template/resume.tpl.php
new file mode 100644
index 0000000..7d99d87
--- /dev/null
+++ b/module/job/admin/template/resume.tpl.php
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+取消', 0, 'onchange="this.form.action=\'?moduleid='.$moduleid.'&file='.$file.'&action=level\';this.form.submit();"');?>
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/job/admin/template/resume_edit.tpl.php b/module/job/admin/template/resume_edit.tpl.php
new file mode 100644
index 0000000..8e2d238
--- /dev/null
+++ b/module/job/admin/template/resume_edit.tpl.php
@@ -0,0 +1,331 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+单页采编
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/job/admin/template/setting.tpl.php b/module/job/admin/template/setting.tpl.php
new file mode 100644
index 0000000..1c00185
--- /dev/null
+++ b/module/job/admin/template/setting.tpl.php
@@ -0,0 +1,556 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/job/apply.inc.php b/module/job/apply.inc.php
new file mode 100644
index 0000000..0acfa51
--- /dev/null
+++ b/module/job/apply.inc.php
@@ -0,0 +1,50 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+$item or message($L['not_exists']);
+if($item['totime'] && $DT_TIME > $item['totime']) message($L['has_expired']);
+$item['status'] == 3 or message($L['not_exists']);
+$item['username'] or message($L['com_not_member']);
+$_username != $item['username'] or message($L['send_self']);
+
+$app = $db->get_one("SELECT * FROM {$table_apply} WHERE jobid=$itemid AND apply_username='$_username'");
+if($app) message($L['apply_again']);
+
+$linkurl = ($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).$item['linkurl'];
+if($submit) {
+ $resumeid = intval($resumeid);
+ $resumeid or dheader($linkurl);
+ $resume = $db->get_one("SELECT * FROM {$table_resume} WHERE itemid=$resumeid AND status=3 AND open=3 AND username='$_username'");
+ $resume or message($L['not_resume'], $linkurl);
+ $db->query("INSERT INTO {$table_apply} (jobid,resumeid,job_username,apply_username,applytime,status) VALUES ('$itemid','$resumeid','$item[username]','$_username','$DT_TIME','1')");
+ $db->query("UPDATE {$table} SET apply=apply+1 WHERE itemid=$itemid");
+ $resumeurl = $MOD['linkurl'].$resume['linkurl'];
+ send_message($item['username'], lang($L['apply_msg_title'], array(dsubstr($item['title'], 20, '...'))), lang($L['apply_msg_content'], array($resumeurl)));
+ message($L['apply_success'], $linkurl);
+} else {
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table_resume} WHERE username='$_username' AND status=3 AND open=3 ORDER BY edittime DESC");
+ while($r = $db->fetch_array($result)) {
+ $r['mobile'] = $MOD['mobile'].$r['linkurl'];
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $lists[] = $r;
+ }
+ if($lists) {
+ $head_title = $L['apply_title'].$DT['seo_delimiter'].$item['title'].$DT['seo_delimiter'].$MOD['name'];
+ } else {
+ message($L['make_resume'], ($DT_PC ? $MODULE[2]['linkurl'] : $MODULE[2]['mobile']).$DT['file_my'].'?action=add&job=resume&mid='.$moduleid);
+ }
+}
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+} else {
+ $js_pull = 0;
+}
+include template($MOD['template_apply'] ? $MOD['template_apply'] : 'apply', $module);
+?>
\ No newline at end of file
diff --git a/module/job/common.inc.php b/module/job/common.inc.php
new file mode 100644
index 0000000..2d22488
--- /dev/null
+++ b/module/job/common.inc.php
@@ -0,0 +1,18 @@
+
\ No newline at end of file
diff --git a/module/job/global.func.php b/module/job/global.func.php
new file mode 100644
index 0000000..7ca7b97
--- /dev/null
+++ b/module/job/global.func.php
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/module/job/index.html b/module/job/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/job/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/job/index.inc.php b/module/job/index.inc.php
new file mode 100644
index 0000000..daf044c
--- /dev/null
+++ b/module/job/index.inc.php
@@ -0,0 +1,42 @@
+ 1 ? 'index.php?page='.$page : '');
+} else {
+ $condition = "status=3";
+ if($cityid) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize);
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['parentid'] = $CATEGORY[$r['catid']]['parentid'] ? $CATEGORY[$r['catid']]['parentid'] : $r['catid'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+}
+$seo_file = 'index';
+include DT_ROOT.'/include/seo.inc.php';
+include template($MOD['template_index'] ? $MOD['template_index'] : 'index', $module);
+?>
\ No newline at end of file
diff --git a/module/job/list.htm.php b/module/job/list.htm.php
new file mode 100644
index 0000000..054ac97
--- /dev/null
+++ b/module/job/list.htm.php
@@ -0,0 +1,92 @@
+count($table, $condition);
+ if($items != $CAT['item']) {
+ $CAT['item'] = $items;
+ $db->query("UPDATE {$DT_PRE}category SET item=$items WHERE catid=$catid");
+ }
+} else {
+ $items = $CAT['item'];
+}
+$pagesize = $MOD['pagesize'];
+$showpage = 1;
+$datetype = 3;
+$template = $CAT['template'] ? $CAT['template'] : ($MOD['template_list'] ? $MOD['template_list'] : 'list');
+$total = max(ceil($items/$MOD['pagesize']), 1);
+if(isset($fid) && isset($num)) {
+ $page = $fid;
+ $topage = $fid + $num - 1;
+ $total = $topage < $total ? $topage : $total;
+}
+for(; $page <= $total; $page++) {
+ $offset = ($page-1)*$pagesize;
+ $pages = listpages($CAT, $items, $page, $pagesize);
+ $tags = array();
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}");
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $seo_file = 'list';
+ include DT_ROOT.'/include/seo.inc.php';
+ $destoon_task = "moduleid=$moduleid&html=list&catid=$catid&page=$page";
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].($page > 1 ?listurl($CAT, $page) : $CAT['linkurl']);
+ $filename = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, $page);
+ $_tags = $tags;
+ $DT_PC = $GLOBALS['DT_PC'] = 1;
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ if($DT['pcharset']) $filename = convert($filename, DT_CHARSET, $DT['pcharset']);
+ file_put($filename, $data);
+ if($page == 1) {
+ $indexname = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, 0);
+ if($DT['pcharset']) $indexname = convert($indexname, DT_CHARSET, $DT['pcharset']);
+ file_copy($filename, $indexname);
+ }
+ if($EXT['mobile_enable']) {
+ include DT_ROOT.'/include/mobile.htm.php';
+ $head_pc = str_replace($MOD['mobile'], $MOD['linkurl'], $head_mobile);
+ if($CAT['parentid']) $PCAT = get_cat($CAT['parentid']);
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($CAT, '{destoon_page}'));
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $tags = array();
+ foreach($_tags as $r) {
+ $r['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $r['linkurl']);
+ $r['date'] = timetodate($r[$time], 3);
+ $r['parentid'] = $CATEGORY[$r['catid']]['parentid'] ? $CATEGORY[$r['catid']]['parentid'] : $r['catid'];
+ $tags[] = $r;
+ }
+ if($items) $js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid;
+ $head_title = $head_name = $CAT['catname'];
+ $filename = str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename);
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put($filename, $data);
+ if($page == 1) file_copy($filename, str_replace(DT_ROOT, DT_ROOT.'/mobile', $indexname));
+ }
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/job/my.inc.php b/module/job/my.inc.php
new file mode 100644
index 0000000..2994abf
--- /dev/null
+++ b/module/job/my.inc.php
@@ -0,0 +1,411 @@
+get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql");
+ $limit_used = $r['num'];
+ $limit_free = $mod_limit > $limit_used ? $mod_limit - $limit_used : 0;
+}
+if(check_group($_groupid, $MOD['group_refresh'])) $MOD['credit_refresh'] = 0;
+switch($action) {
+ case 'add':
+ if($mod_limit && $limit_used >= $mod_limit) dalert(lang($L['info_limit'], array($mod_limit, $limit_used)), $_userid ? '?mid='.$mid : '?action=index');
+ if($MG['hour_limit']) {
+ $today = $DT_TIME - 3600;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND addtime>$today");
+ if($r && $r['num'] >= $MG['hour_limit']) dalert(lang($L['hour_limit'], array($MG['hour_limit'])), $_userid ? '?mid='.$mid : '?action=index');
+ }
+ if($MG['day_limit']) {
+ $today = $DT_TODAY - 86400;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND addtime>$today");
+ if($r && $r['num'] >= $MG['day_limit']) dalert(lang($L['day_limit'], array($MG['day_limit'])), $_userid ? '?mid='.$mid : '?action=index');
+ }
+
+ if($mod_free_limit >= 0) {
+ $fee_add = ($MOD['fee_add'] && (!$MOD['fee_mode'] || !$MG['fee_mode']) && $limit_used >= $mod_free_limit && $_userid) ? dround($MOD['fee_add']) : 0;
+ } else {
+ $fee_add = 0;
+ }
+ $fee_currency = $MOD['fee_currency'];
+ $fee_unit = $fee_currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $need_password = $fee_add && $fee_currency == 'money' && $fee_add > $DT['quick_pay'];
+ $need_captcha = $MOD['captcha_add'] == 2 ? $MG['captcha'] : $MOD['captcha_add'];
+ $need_question = $MOD['question_add'] == 2 ? $MG['question'] : $MOD['question_add'];
+ $could_color = check_group($_groupid, $MOD['group_color']) && $MOD['credit_color'] && $_userid;
+
+ if($submit) {
+ if($fee_add && $fee_add > ($fee_currency == 'money' ? $_money : $_credit)) dalert($L['balance_lack']);
+ if($need_password && !is_payword($_username, $password)) dalert($L['error_payword']);
+
+ if(!$_userid) {
+ if(strlen($post['company']) < 4) dalert($L['type_company']);
+ }
+
+ if($MG['add_limit']) {
+ $last = $db->get_one("SELECT addtime FROM {$table} WHERE $sql ORDER BY itemid DESC");
+ if($last && $DT_TIME - $last['addtime'] < $MG['add_limit']) dalert(lang($L['add_limit'], array($MG['add_limit'])));
+ }
+ $msg = captcha($captcha, $need_captcha, true);
+ if($msg) dalert($msg);
+ $msg = question($answer, $need_question, true);
+ if($msg) dalert($msg);
+
+ if($do->pass($post)) {
+ $CAT = get_cat($post['catid']);
+ if(!$CAT || !check_group($_groupid, $CAT['group_add'])) dalert(lang($L['group_add'], array($CAT['catname'])));
+ $post['addtime'] = $post['level'] = $post['fee'] = 0;
+ $post['style'] = $post['template'] = $post['note'] = '';
+ $need_check = $MOD['check_add'] == 2 ? $MG['check'] : $MOD['check_add'];
+ $post['status'] = get_status(3, $need_check);
+ $post['hits'] = 0;
+ $post['username'] = $_username;
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($could_color && $color && $_credit > $MOD['credit_color']) {
+ $post['style'] = $color;
+ credit_add($_username, -$MOD['credit_color']);
+ credit_record($_username, -$MOD['credit_color'], 'system', $L['title_color'], '['.$MOD['name'].']'.$post['title']);
+ }
+ $do->add($post);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ if($MOD['show_html'] && $post['status'] > 2) $do->tohtml($do->itemid);
+ if($fee_add) {
+ if($fee_currency == 'money') {
+ money_add($_username, -$fee_add);
+ money_record($_username, -$fee_add, $L['in_site'], 'system', lang($L['credit_record_add'], array($MOD['name'])), 'ID:'.$do->itemid);
+ } else {
+ credit_add($_username, -$fee_add);
+ credit_record($_username, -$fee_add, 'system', lang($L['credit_record_add'], array($MOD['name'])), 'ID:'.$do->itemid);
+ }
+ }
+
+ $msg = $post['status'] == 2 ? $L['success_check'] : $L['success_add'];
+ $js = '';
+ if(isset($post['sync_sina']) && $post['sync_sina']) $js .= sync_weibo('sina', $moduleid, $do->itemid);
+ if($_userid) {
+ set_cookie('dmsg', $msg);
+ $forward = '?mid='.$mid.'&status='.$post['status'];
+ $msg = '';
+ } else {
+ $forward = '?mid='.$mid.'&action=add';
+ }
+ $js .= 'window.onload=function(){parent.window.location="'.$forward.'";}';
+ dalert($msg, '', $js);
+ } else {
+ dalert($do->errmsg, '', ($need_captcha ? reload_captcha() : '').($need_question ? reload_question() : ''));
+ }
+ } else {
+ if($itemid) {
+ $MG['copy'] or dheader(($DT_PC ? $MODULE[2]['linkurl'] : $MODULE[2]['mobile']).'account.php?action=group&itemid=1');
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['username'] != $_username) message();
+ extract($item);
+ $thumb = '';
+ $totime = $totime ? timetodate($totime, 6) : '';
+ } else {
+ $_catid = $catid;
+ foreach($do->fields as $v) {
+ $$v = '';
+ }
+ $content = '';
+ $catid = $_catid;
+ $sex = 1;
+ if($_userid) {
+ $user = userinfo($_username);
+ $company = $user['company'];
+ $truename = $user['truename'];
+ $email = $user['email'];
+ $mobile = $user['mobile'];
+ $areaid = $user['areaid'];
+ $telephone = $user['telephone'];
+ $address = $user['address'];
+ $qq = $user['qq'];
+ $wx = $user['wx'];
+ $ali = $user['ali'];
+ $skype = $user['skype'];
+ $gender = $user['gender'];
+ }
+ $total = 1;
+ $minage = 18;
+ $maxage = 0;
+ }
+ $item = array();
+ }
+ break;
+ case 'edit':
+ $itemid or message();
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['username'] != $_username) message();
+ if($submit) {
+ if($do->pass($post)) {
+ $CAT = get_cat($post['catid']);
+ if(!$CAT || !check_group($_groupid, $CAT['group_add'])) dalert(lang($L['group_add'], array($CAT['catname'])));
+ $post['addtime'] = timetodate($item['addtime']);
+ $post['level'] = $item['level'];
+ $post['fee'] = $item['fee'];
+ $post['style'] = addslashes($item['style']);
+ $post['template'] = addslashes($item['template']);
+ $need_check = $MOD['check_add'] == 2 ? $MG['check'] : $MOD['check_add'];
+ $post['status'] = get_status($item['status'], $need_check);
+ $post['hits'] = $item['hits'];
+ $post['username'] = $_username;
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ $do->edit($post);
+ if($post['status'] < 3 && $item['status'] > 2) history($moduleid, $itemid, 'set', $item);
+ set_cookie('dmsg', $post['status'] == 2 ? $L['success_edit_check'] : $L['success_edit']);
+ dalert('', '', 'parent.window.location="'.($post['status'] == 2 ? '?mid='.$moduleid.'&status=2' : $forward).'"');
+ } else {
+ dalert($do->errmsg);
+ }
+ } else {
+ extract($item);
+ $totime = $totime ? timetodate($totime, 6) : '';
+ }
+ break;
+ case 'update':
+ $do->_update($_username);
+ dmsg($L['success_update'], $forward);
+ break;
+ case 'resume_show':
+ $itemid or message();
+ $resumeid or message();
+ $db->query("UPDATE {$table_apply} SET status=2 WHERE applyid='$itemid' AND job_username='$_username' AND status=1");
+ dheader(($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).rewrite('resume.php?itemid='.$resumeid));
+ break;
+ case 'resume_delete':
+ $itemid or message();
+ $apply = $db->get_one("SELECT * FROM {$table_apply} WHERE applyid='$itemid' AND job_username='$_username' AND status>0");
+ if($apply) {
+ $db->query("UPDATE {$table_apply} SET status=0 WHERE applyid='$itemid'");
+ $db->query("UPDATE {$table} SET apply=apply-1 WHERE itemid='$apply[jobid]'");
+ }
+ dmsg($L['success_delete'], $forward);
+ break;
+ case 'resume_invite':
+ $itemid or message();
+ $apply = $db->get_one("SELECT * FROM {$table_apply} WHERE applyid='$itemid' AND job_username='$_username'");
+ $apply or message($L['msg_not_apply']);
+ $resume = $db->get_one("SELECT * FROM {$table_resume} WHERE itemid='$apply[resumeid]'");
+ $resume or message($L['msg_not_resume']);
+ if(!$resume['username']) message($L['msg_not_member']);
+ if($resume['status'] != 3) message($L['msg_resume_close']);
+ $job = $db->get_one("SELECT * FROM {$table} WHERE itemid='$apply[jobid]' AND status=3");
+ $job or message($L['msg_not_job']);
+ if($job['totime'] && $job['totime'] < $DT_TIME) message($L['msg_job_expired']);
+ $title = lang($L['msg_invite_title'], array($job['company']));
+ $joburl = $MOD['linkurl'].$job['linkurl'];
+ $db->query("UPDATE {$table_apply} SET status=3 WHERE applyid='$itemid' AND job_username='$_username' AND status>0");
+ break;
+ case 'resume_search':
+ include load('search.lang');
+ $thumb = isset($thumb) ? intval($thumb) : 0;
+ $level = isset($level) ? intval($level) : 0;
+ $vip = isset($vip) ? intval($vip) : 0;
+ $gender = isset($gender) ? intval($gender) : 0;
+ $type = isset($type) ? intval($type) : 0;
+ $marriage = isset($marriage) ? intval($marriage) : 0;
+ $education = isset($education) ? intval($education) : 0;
+ $experience = isset($experience) ? intval($experience) : 0;
+ if(!$areaid && $cityid && strpos($DT_URL, 'areaid') === false) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ }
+ $minsalary = isset($minsalary) ? intval($minsalary) : 0;
+ $maxsalary = isset($maxsalary) ? intval($maxsalary) : 0;
+ $areaid = isset($areaid) ? intval($areaid) : 0;
+ $fromdate = isset($fromdate) && is_date($fromdate) ? $fromdate : '';
+ $fromtime = $fromdate ? datetotime($fromdate.' 0:0:0') : 0;
+ $todate = isset($todate) && is_date($todate) ? $todate : '';
+ $totime = $todate ? datetotime($todate.' 23:59:59') : 0;
+ $category_select = ajax_category_select('catid', $L['all_jobtype'], $catid, $moduleid);
+ $area_select = ajax_area_select('areaid', $L['all_area'], $areaid);
+ $condition = 'status=3 AND open=3';
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($catid) $condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($thumb) $condition .= " AND thumb<>''";
+ if($vip) $condition .= " AND vip>0";
+ if($minsalary) $condition .= " AND minsalary>$minsalary";
+ if($maxsalary) $condition .= " AND maxsalary<$maxsalary";
+ if($fromtime) $condition .= " AND edittime>=$fromtime";
+ if($totime) $condition .= " AND edittime<=$totime";
+ if($level) $condition .= " AND level=$level";
+ if($gender) $condition .= " AND gender=$gender";
+ if($type) $condition .= " AND type=$type";
+ if($marriage) $condition .= " AND marriage=$marriage";
+ if($education) $condition .= " AND education>=$education";
+ if($experience) $condition .= " AND experience>=$experience";
+ if($minsalary) $condition .= " AND minsalary>=$minsalary";
+ if($maxsalary) $condition .= " AND maxsalary<=$maxsalary";
+ $GENDER[0] = $L['all_gender'];
+ $TYPE[0] = $L['all_work'];
+ $MARRIAGE[0] = $L['all_marriage'];
+ $EDUCATION[0] = $L['all_education'];
+ $pagesize = $MOD['pagesize'];
+ $offset = ($page-1)*$pagesize;
+ $items = $db->count($table_resume, $condition);
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ if($items) {
+ $result = $db->query("SELECT * FROM {$table_resume} WHERE {$condition} ORDER BY edittime DESC LIMIT {$offset},{$pagesize}");
+ if($kw) {
+ $replacef = explode(' ', $kw);
+ $replacet = array_map('highlight', $replacef);
+ }
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ if($kw) $r['title'] = str_replace($replacef, $replacet, $r['title']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $r['parentid'] = $CATEGORY[$r['catid']]['parentid'] ? $CATEGORY[$r['catid']]['parentid'] : $r['catid'];
+ $lists[] = $r;
+ }
+ }
+ break;
+ case 'resume':
+ $condition = '';
+ if($keyword) $condition .= " AND r.keyword LIKE '%$keyword%'";
+ if($itemid) $condition .= " AND j.itemid=$itemid";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_apply} a LEFT JOIN {$table_resume} r ON a.resumeid=r.itemid LEFT JOIN {$table} j ON a.jobid=j.itemid WHERE a.job_username='$_username' AND a.status>0 $condition");
+ $pages = pages($r['num'], $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT a.*,r.truename,r.catid,r.gender,r.education,r.school,r.areaid,r.age,r.experience,j.title,j.linkurl FROM {$table_apply} a LEFT JOIN {$table_resume} r ON a.resumeid=r.itemid LEFT JOIN {$table} j ON a.jobid=j.itemid WHERE a.job_username='$_username' AND a.status>0 $condition ORDER BY a.applyid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $lists[] = $r;
+ }
+ break;
+ case 'talent_delete':
+ $itemid or message();
+ $db->query("DELETE FROM {$table_talent} WHERE username='$_username' AND talentid=$itemid");
+ dmsg($L['success_delete'], $forward);
+ break;
+ case 'talent':
+ $condition = '';
+ if($keyword) $condition .= " AND r.keyword LIKE '%$keyword%'";
+ if($catid) $condition .= ($CAT['child']) ? " AND r.catid IN (".$CAT['arrchildid'].")" : " AND r.catid=$catid";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_talent} t LEFT JOIN {$table_resume} r ON t.resumeid=r.itemid WHERE t.username='$_username' $condition");
+ $pages = pages($r['num'], $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table_talent} t LEFT JOIN {$table_resume} r ON t.resumeid=r.itemid WHERE t.username='$_username' $condition ORDER BY t.talentid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['parentid'] = $CATEGORY[$r['catid']]['parentid'] ? $CATEGORY[$r['catid']]['parentid'] : $r['catid'];
+ $r['linkurl'] = ($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).$r['linkurl'];
+ $lists[] = $r;
+ }
+ break;
+ case 'delete':
+ $MG['delete'] or message();
+ $itemid or message();
+ $itemids = is_array($itemid) ? $itemid : array($itemid);
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $db->get_one("SELECT username FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['username'] != $_username) message();
+ $do->recycle($itemid);
+ }
+ dmsg($L['success_delete'], $forward);
+ break;
+ case 'refresh':
+ $MG['refresh_limit'] > -1 or dheader(($DT_PC ? $MODULE[2]['linkurl'] : $MODULE[2]['mobile']).'account.php?action=group&itemid=1');
+ $itemid or message($L['select_info']);
+ if($MOD['credit_refresh'] && $_credit < $MOD['credit_refresh']) message($L['credit_lack']);
+ $itemids = $itemid;
+ $s = $f = 0;
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $db->get_one("SELECT username,edittime FROM {$table} WHERE itemid=$itemid");
+ $could_refresh = $item && $item['username'] == $_username;
+ if($could_refresh && $MG['refresh_limit'] && $DT_TIME - $item['edittime'] < $MG['refresh_limit']) $could_refresh = false;
+ if($could_refresh && $MOD['credit_refresh'] && ($MOD['credit_refresh'] > $_credit || $_credit < 0)) $could_refresh = false;
+ if($could_refresh) {
+ $do->refresh($itemid);
+ $s++;
+ if($MOD['credit_refresh']) $_credit = $_credit - $MOD['credit_refresh'];
+ } else {
+ $f++;
+ }
+ }
+ if($MOD['credit_refresh'] && $s) {
+ $credit = $s*$MOD['credit_refresh'];
+ credit_add($_username, -$credit);
+ credit_record($_username, -$credit, 'system', lang($L['credit_record_refresh'], array($MOD['name'])), lang($L['refresh_total'], array($s)));
+ }
+ $msg = lang($L['refresh_success'], array($s));
+ if($f) $msg = $msg.' '.lang($L['refresh_fail'], array($f));
+ dmsg($msg, $forward);
+ break;
+ default:
+ $status = isset($status) ? intval($status) : 3;
+ in_array($status, array(1, 2, 3, 4)) or $status = 3;
+ $condition = "username='$_username'";
+ $condition .= " AND status=$status";
+ $typeid = isset($typeid) ? ($typeid === '' ? -1 : intval($typeid)) : -1;
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($catid) $condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($typeid >=0 ) $condition .= " AND typeid=$typeid";
+ $timetype = strpos($MOD['order'], 'add') !== false ? 'add' : '';
+ $lists = $do->get_list($condition, $MOD['order']);
+ break;
+}
+if($_userid) {
+ $nums = array();
+ for($i = 1; $i < 5; $i++) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE username='$_username' AND status=$i");
+ $nums[$i] = $r['num'];
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_talent} WHERE username='$_username'");
+ $nums['talent'] = $r['num'];
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_apply} WHERE job_username ='$_username' AND status>0");
+ $nums['resume'] = $r['num'];
+}
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MODULE[2]['linkurl'], $MODULE[2]['mobile'], $DT_URL);
+} else {
+ $foot = '';
+ if($action == 'add' || $action == 'edit') {
+ //
+ } else {
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ foreach($lists as $k=>$v) {
+ $lists[$k]['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $v['linkurl']);
+ $lists[$k]['date'] = timetodate($v[$time], 5);
+ }
+ $pages = mobile_pages($items, $page, $pagesize);
+ $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : 'my.php');
+ }
+}
+$head_title = lang($L['module_manage'], array($MOD['name']));
+include template($MOD['template_my'] ? $MOD['template_my'] : 'my_'.$module, 'member');
+?>
\ No newline at end of file
diff --git a/module/job/my_resume.inc.php b/module/job/my_resume.inc.php
new file mode 100644
index 0000000..79f9ee0
--- /dev/null
+++ b/module/job/my_resume.inc.php
@@ -0,0 +1,237 @@
+ -1 or dheader(($DT_PC ? $MODULE[2]['linkurl'] : $MODULE[2]['mobile']).'account.php?action=group&itemid=1');
+require DT_ROOT.'/module/'.$module.'/resume.class.php';
+$do = new resume($moduleid);
+$table = $table_resume;
+if(in_array($action, array('add', 'edit'))) {
+ $FD = cache_read('fields-'.substr($table, strlen($DT_PRE)).'.php');
+ if($FD) require DT_ROOT.'/include/fields.func.php';
+ isset($post_fields) or $post_fields = array();
+}
+$sql = $_userid ? "username='$_username'" : "ip='$DT_IP'";
+$limit_used = $limit_free = $need_password = $need_captcha = $need_question = $fee_add = 0;
+if(in_array($action, array('', 'add'))) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND status>1");
+ $limit_used = $r['num'];
+ $limit_free = $resume_limit > $limit_used ? $resume_limit - $limit_used : 0;
+}
+switch($action) {
+ case 'add':
+ if($resume_limit && $limit_used >= $resume_limit) dalert(lang($L['info_limit'], array($resume_limit, $limit_used)), $_userid ? '?mid='.$mid : '?action=index');
+ if($MG['hour_limit']) {
+ $today = $DT_TIME - 3600;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND addtime>$today");
+ if($r && $r['num'] >= $MG['hour_limit']) dalert(lang($L['hour_limit'], array($MG['hour_limit'])), $_userid ? '?mid='.$mid : '?action=index');
+ }
+ if($MG['day_limit']) {
+ $today = $DT_TODAY - 86400;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND addtime>$today");
+ if($r && $r['num'] >= $MG['day_limit']) dalert(lang($L['day_limit'], array($MG['day_limit'])), $_userid ? '?mid='.$mid : '?action=index');
+ }
+
+ if($resume_free_limit >= 0) {
+ $fee_add = ($MOD['fee_add_resume'] && (!$MOD['fee_mode'] || !$MG['fee_mode']) && $limit_used >= $resume_free_limit && $_userid) ? dround($MOD['fee_add_resume']) : 0;
+ } else {
+ $fee_add = 0;
+ }
+ $fee_currency = $MOD['fee_currency'];
+ $fee_unit = $fee_currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $need_password = $fee_add && $fee_currency == 'money' && $fee_add > $DT['quick_pay'];
+ $need_captcha = $MOD['captcha_add_resume'] == 2 ? $MG['captcha'] : $MOD['captcha_add_resume'];
+ $need_question = $MOD['question_add_resume'] == 2 ? $MG['question'] : $MOD['question_add_resume'];
+
+ if($submit) {
+ if($fee_add && $fee_add > ($fee_currency == 'money' ? $_money : $_credit)) dalert($L['balance_lack']);
+ if($need_password && !is_payword($_username, $password)) dalert($L['error_payword']);
+ if($MG['add_limit']) {
+ $last = $db->get_one("SELECT addtime FROM {$table} WHERE $sql ORDER BY itemid DESC");
+ if($last && $DT_TIME - $last['addtime'] < $MG['add_limit']) dalert(lang($L['add_limit'], array($MG['add_limit'])));
+ }
+ $msg = captcha($captcha, $need_captcha, true);
+ if($msg) dalert($msg);
+ $msg = question($answer, $need_question, true);
+ if($msg) dalert($msg);
+ if($do->pass($post)) {
+ $CAT = get_cat($post['catid']);
+ if(!$CAT || !check_group($_groupid, $CAT['group_add'])) dalert(lang($L['group_add'], array($CAT['catname'])));
+ $post['addtime'] = $post['level'] = $post['fee'] = 0;
+ $post['style'] = $post['template'] = $post['note'] = $post['filepath'] = '';
+ $need_check = $MOD['check_add_resume'] == 2 ? $MG['check'] : $MOD['check_add_resume'];
+ $post['status'] = get_status(3, $need_check);
+ $post['hits'] = 0;
+ $post['username'] = $_username;
+ if($FD) fields_check($post_fields);
+ $do->add($post);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+
+ if($fee_add) {
+ if($fee_currency == 'money') {
+ money_add($_username, -$fee_add);
+ money_record($_username, -$fee_add, $L['in_site'], 'system', lang($L['credit_record_add'], array($MOD['name'])), 'ID:'.$do->itemid);
+ } else {
+ credit_add($_username, -$fee_add);
+ credit_record($_username, -$fee_add, 'system', lang($L['credit_record_add'], array($MOD['name'])), 'ID:'.$do->itemid);
+ }
+ }
+ $msg = $post['status'] == 2 ? $L['success_check'] : $L['success_add'];
+ if($_userid) {
+ set_cookie('dmsg', $msg);
+ $forward = '?mid='.$mid.'&job=resume&status='.$post['status'];
+ dalert('', '', 'parent.window.location="'.$forward.'";');
+ } else {
+ dalert($msg, '', 'parent.window.location=parent.window.location;');
+ }
+ } else {
+ dalert($do->errmsg, '', ($need_captcha ? reload_captcha() : '').($need_question ? reload_question() : ''));
+ }
+ } else {
+ if($itemid) {
+ $MG['copy'] && $_userid or dheader(($DT_PC ? $MODULE[2]['linkurl'] : $MODULE[2]['mobile']).'account.php?action=group&itemid=1');
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['username'] != $_username) message();
+ extract($item);
+ $thumb = '';
+ list($byear, $bmonth, $bday) = explode('-', $birthday);
+ } else {
+ $_catid = $catid;
+ foreach($do->fields as $v) {
+ $$v = '';
+ }
+ $content = '';
+ $catid = $_catid;
+ $gender = 1;
+ $byear = 19;
+ $bmonth = $bday = $experience = $marriage = $type = 1;
+ $education = 3;
+ $minsalary = 1000;
+ $maxsalary = 0;
+ $open = 3;
+ if($_userid) {
+ $r = $db->get_one("SELECT * FROM {$table_resume} a,{$table_resume_data} c WHERE a.itemid=c.itemid AND a.username='$_username' ORDER BY a.edittime DESC");
+ if($r) {
+ extract($r);
+ list($byear, $bmonth, $bday) = explode('-', $birthday);
+ } else {
+ $user = userinfo($_username);
+ $truename = $user['truename'];
+ $email = $user['email'];
+ $mobile = $user['mobile'];
+ $gender = $user['gender'];
+ $areaid = $user['areaid'];
+ $telephone = $user['telephone'];
+ $address = $user['address'];
+ $qq = $user['qq'];
+ $wx = $user['wx'];
+ $ali = $user['ali'];
+ $skype = $user['skype'];
+ }
+ }
+ }
+ $item = array();
+ }
+ break;
+ case 'edit':
+ $itemid or message();
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['username'] != $_username) message();
+ if($submit) {
+ if($do->pass($post)) {
+ $post['addtime'] = timetodate($item['addtime']);
+ $post['level'] = $item['level'];
+ $post['fee'] = $item['fee'];
+ $post['style'] = addslashes($item['style']);
+ $post['template'] = addslashes($item['template']);
+ $post['filepath'] = addslashes($item['filepath']);
+ $post['note'] = addslashes($item['note']);
+ $need_check = $MOD['check_add_resume'] == 2 ? $MG['check'] : $MOD['check_add_resume'];
+ $post['status'] = get_status($item['status'], $need_check);
+ $post['hits'] = $item['hits'];
+ $post['username'] = $_username;
+ if($FD) fields_check($post_fields);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ $do->edit($post);
+ if($post['status'] < 3 && $item['status'] > 2) history($moduleid, 'resume-'.$itemid, 'set', $item);
+ set_cookie('dmsg', $post['status'] == 2 ? $L['success_edit_check'] : $L['success_edit']);
+ dalert('', '', 'parent.window.location="'.($post['status'] == 2 ? '?mid='.$moduleid.'&job='.$job.'&status=2' : $forward).'"');
+ } else {
+ dalert($do->errmsg);
+ }
+ } else {
+ extract($item);
+ list($byear, $bmonth, $bday) = explode('-', $birthday);
+ }
+ break;
+ case 'delete':
+ $MG['delete'] or message();
+ $itemid or message();
+ $itemids = is_array($itemid) ? $itemid : array($itemid);
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $db->get_one("SELECT username FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['username'] != $_username) message();
+ $do->recycle($itemid);
+ }
+ dmsg($L['success_delete'], $forward);
+ break;
+ case 'update':
+ $do->_update($_username);
+ dmsg($L['success_update'], $forward);
+ break;
+ case 'apply_delete':
+ $itemid or message();
+ $apply = $db->get_one("SELECT * FROM {$table_apply} WHERE applyid='$itemid' AND apply_username='$_username'");
+ if($apply) {
+ if($apply['status']>0) $db->query("UPDATE {$table} SET apply=apply-1 WHERE itemid='$apply[jobid]'");
+ $db->query("DELETE FROM {$table_apply} WHERE applyid='$itemid'");
+ }
+ dmsg($L['success_delete'], $forward);
+ break;
+ case 'apply':
+ $condition = '';
+ if($keyword) $condition .= " AND j.keyword LIKE '%$keyword%'";if($catid) $condition .= ($CAT['child']) ? " AND j.catid IN (".$CAT['arrchildid'].")" : " AND j.catid=$catid";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_apply} a LEFT JOIN {$table_resume} r ON a.resumeid=r.itemid LEFT JOIN {$table} j ON a.jobid=j.itemid WHERE a.apply_username='$_username' $condition");
+ $pages = pages($r['num'], $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT a.*,r.title AS resumetitle,j.title,j.linkurl FROM {$table_apply} a LEFT JOIN {$table_resume} r ON a.resumeid=r.itemid LEFT JOIN {$table} j ON a.jobid=j.itemid WHERE a.apply_username='$_username' $condition ORDER BY a.applyid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $lists[] = $r;
+ }
+ break;
+ case 'refresh':
+ $MG['refresh_limit'] > -1 or dheader(($DT_PC ? $MODULE[2]['linkurl'] : $MODULE[2]['mobile']).'account.php?action=group&itemid=1');
+ $itemid or message();
+ $do->itemid = $itemid;
+ $item = $db->get_one("SELECT username,edittime FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['username'] != $_username) message();
+ if($MG['refresh_limit'] && $DT_TIME - $item['edittime'] < $MG['refresh_limit']) dalert(lang($L['refresh_limit'], array($MG['refresh_limit'])), $forward);
+ $do->refresh($itemid);
+ dmsg($L['success_update'], $forward);
+ break;
+ default:
+ $status = isset($status) ? intval($status) : 3;
+ in_array($status, array(1, 2, 3, 4)) or $status = 3;
+ $condition = "username='$_username'";
+ $condition .= " AND status=$status";
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($catid) $condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ $lists = $do->get_list($condition);
+ break;
+}
+if($_userid) {
+ $nums = array();
+ for($i = 1; $i < 4; $i++) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_resume} WHERE username='$_username' AND status=$i");
+ $nums[$i] = $r['num'];
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_apply} WHERE apply_username ='$_username'");
+ $nums['apply'] = $r['num'];
+}
+$head_title = $L['resume_manage'];
+include template($MOD['template_my_resume'] ? $MOD['template_my_resume'] : 'my_job_resume', 'member');
+?>
\ No newline at end of file
diff --git a/module/job/resume.class.php b/module/job/resume.class.php
new file mode 100644
index 0000000..3755de7
--- /dev/null
+++ b/module/job/resume.class.php
@@ -0,0 +1,262 @@
+moduleid = $moduleid;
+ $this->table = $table_resume;
+ $this->table_data = $table_resume_data;
+ $this->fields = array('catid','areaid','level','title','style','fee','introduce','truename','gender','birthday','age','marriage','height', 'weight','education','school','major','skill','language','minsalary','maxsalary','situation','type','experience','mobile','telephone','address','email','qq','wx','ali','skype','thumb','username','addtime','editor','edittime','ip','template','status','hits','open','note');
+ }
+
+ function resume($moduleid) {
+ $this->__construct($moduleid);
+ }
+
+ function pass($post) {
+ global $MOD;
+ if(!is_array($post)) return false;
+ if(!$post['title']) return $this->_(lang('message->pass_resume_title'));
+ if(!$post['catid']) return $this->_(lang('message->pass_resume_catid'));
+ if(strlen($post['truename']) < 3) return $this->_(lang('message->pass_resume_truename'));
+ if(!$post['areaid']) return $this->_(lang('message->pass_resume_areaid'));
+ if(intval($post['byear']) > 9999 || intval($post['byear']) < 1900 || date('Y', DT_TIME) - intval($post['byear']) > 100) return $this->_(lang('message->pass_resume_byear'));
+ if(!$post['school']) return $this->_(lang('message->pass_resume_school'));
+ if(strlen($post['mobile']) < 7) return $this->_(lang('message->pass_resume_mobile'));
+ if(!is_email(trim($post['email']))) return $this->_(lang('message->pass_email'));
+ if(!$post['content']) return $this->_(lang('message->pass_resume_content'));
+ if(DT_MAX_LEN && strlen(clear_img($post['content'])) > DT_MAX_LEN) $this->_(lang('message->pass_max'));
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $TYPE, $GENDER, $MARRIAGE, $EDUCATION, $_username, $_userid, $_cname;
+ is_url($post['thumb']) or $post['thumb'] = '';
+ $post['addtime'] = (isset($post['addtime']) && is_time($post['addtime'])) ? datetotime($post['addtime']) : DT_TIME;
+ $post['editor'] = $_cname ? $_cname : $_username;
+ $post['edittime'] = DT_TIME;
+ $post['fee'] = dround($post['fee']);
+ $post['birthday'] = intval($post['byear']).'-'.intval($post['bmonth']).'-'.intval($post['bday']);
+ $post['age'] = date('Y', DT_TIME) - intval($post['byear']);
+ $post['minsalary'] = intval($post['minsalary']);
+ $post['maxsalary'] = intval($post['maxsalary']);
+ $post['type'] = intval($post['type']);
+ $post['marriage'] = intval($post['marriage']);
+ $post['height'] = intval($post['height']);
+ $post['height'] = intval($post['height']);
+ $post['gender'] = intval($post['gender']);
+ $post['education'] = intval($post['education']);
+ $post['experience'] = intval($post['experience']);
+ $post['situation'] = intval($post['situation']);
+ $post['status'] = intval($post['status']);
+ $post['open'] = intval($post['open']);
+ $post['content'] = stripslashes($post['content']);
+ $post['content'] = save_local($post['content']);
+ if($MOD['clear_link']) $post['content'] = clear_link($post['content']);
+ if($MOD['save_remotepic']) $post['content'] = save_remote($post['content']);
+ if($MOD['introduce_length']) $post['introduce'] = addslashes(get_intro($post['content'], $MOD['introduce_length']));
+ if($this->itemid) {
+ $new = $post['content'];
+ if($post['thumb']) $new .= ' ';
+ $r = $this->get_one();
+ $old = $r['content'];
+ if($r['thumb']) $old .= ' ';
+ delete_diff($new, $old);
+ } else {
+ $post['ip'] = DT_IP;
+ }
+ $content = $post['content'];
+ unset($post['content']);
+ $post = dhtmlspecialchars($post);
+ $post['content'] = addslashes(dsafe($content));
+ return array_map("trim", $post);
+ }
+
+ function get_one() {
+ $r = DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$this->itemid");
+ if($r) {
+ $t = DB::get_one("SELECT content FROM {$this->table_data} WHERE itemid=$this->itemid");
+ $r['content'] = $t ? $t['content'] : '';
+ return $r;
+ } else {
+ return array();
+ }
+ }
+
+ function get_list($condition = 'status=3', $order = 'edittime DESC', $cache = '') {
+ global $MOD, $pages, $page, $pagesize, $offset, $CATEGORY, $items, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition", $cache);
+ $items = $r['num'];
+ }
+ $pages = defined('CATID') ? listpages(1, CATID, $items, $page, $pagesize, 10, $MOD['linkurl']) : pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize", $cache);
+ while($r = DB::fetch_array($result)) {
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $r['parentid'] = $CATEGORY[$r['catid']]['parentid'] ? $CATEGORY[$r['catid']]['parentid'] : $r['catid'];
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $MOD;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ DB::query("INSERT INTO {$this->table_data} (itemid,content) VALUES ('$this->itemid', '$post[content]')");
+ $this->update($this->itemid);
+ if($post['status'] == 3 && $post['username'] && $MOD['credit_add_resume']) {
+ credit_add($post['username'], $MOD['credit_add_resume']);
+ credit_record($post['username'], $MOD['credit_add_resume'], 'system', lang('my->credit_record_resume_add'), 'ID:'.$this->itemid);
+ }
+ clear_upload($post['content'].$post['thumb'], $this->itemid, $this->table);
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $this->delete($this->itemid, false);
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ DB::query("UPDATE {$this->table_data} SET content='$post[content]' WHERE itemid=$this->itemid");
+ $this->update($this->itemid);
+ clear_upload($post['content'].$post['thumb'], $this->itemid, $this->table);
+ if($post['status'] > 2) history($this->moduleid, 'resume-'.$this->itemid, 'del');
+ return true;
+ }
+
+ function update($itemid) {
+ global $GENDER, $MARRIAGE, $EDUCATION;
+ $item = DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$itemid");
+ $update = '';
+ $keyword = $item['title'].','.$item['truename'].','.$item['major'].','.strip_tags(cat_pos(get_cat($item['catid']), ',')).strip_tags(area_pos($item['areaid'], ',')).','.$item['skill'].','.$item['language'].','.$item['school'].','.$GENDER[$item['gender']].','.$MARRIAGE[$item['marriage']].','.$EDUCATION[$item['education']];
+ if($keyword != $item['keyword']) {
+ $keyword = str_replace("//", '', addslashes($keyword));
+ $update .= ",keyword='$keyword'";
+ }
+ $linkurl = rewrite('resume.php?itemid='.$itemid);
+ if($linkurl != $item['linkurl']) $update .= ",linkurl='$linkurl'";
+ if($update) DB::query("UPDATE {$this->table} SET ".(substr($update, 1))." WHERE itemid=$itemid");
+ }
+
+ function recycle($itemid) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->recycle($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=0 WHERE itemid=$itemid");
+ $this->delete($itemid, false);
+ return true;
+ }
+ }
+
+ function restore($itemid) {
+ global $module, $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->restore($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=3 WHERE itemid=$itemid");
+ return true;
+ }
+ }
+
+ function delete($itemid, $all = true) {
+ global $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->delete($v, $all);
+ }
+ } else {
+ $this->itemid = $itemid;
+ $r = $this->get_one();
+ if($all) {
+ $userid = get_user($r['username']);
+ if($r['thumb']) delete_upload($r['thumb'], $userid);
+ if($r['content']) delete_local($r['content'], $userid);
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ DB::query("DELETE FROM {$this->table_data} WHERE itemid=$itemid");
+ if($r['username'] && $MOD['credit_del_resume']) {
+ credit_add($r['username'], -$MOD['credit_del_resume']);
+ credit_record($r['username'], -$MOD['credit_del_resume'], 'system', lang('my->credit_record_resume_del'), 'ID:'.$this->itemid);
+ }
+ history($this->moduleid, 'resume-'.$this->itemid, 'del');
+ }
+ }
+ }
+
+ function check($itemid) {
+ global $_username, $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->check($v); }
+ } else {
+ $this->itemid = $itemid;
+ $item = $this->get_one();
+ if($MOD['credit_add'] && $item['username'] && $item['hits'] < 1) {
+ credit_add($item['username'], $MOD['credit_add']);
+ credit_record($item['username'], $MOD['credit_add'], 'system', lang('my->credit_record_resume_add'), 'ID:'.$this->itemid);
+ }
+ DB::query("UPDATE {$this->table} SET status=3,editor='$_username',edittime=".DT_TIME." WHERE itemid=$itemid");
+ history($this->moduleid, 'resume-'.$itemid, 'del');
+ return true;
+ }
+ }
+
+ function reject($itemid) {
+ global $_username;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->reject($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=1,editor='$_username' WHERE itemid=$itemid");
+ return true;
+ }
+ }
+
+ function expire($condition = '') {
+ DB::query("UPDATE {$this->table} SET status=4 WHERE status=3 AND totime>0 AND totime<".DT_TIME." $condition");
+ }
+
+ function clear($condition = 'status=0') {
+ $result = DB::query("SELECT itemid FROM {$this->table} WHERE $condition");
+ while($r = DB::fetch_array($result)) {
+ $this->delete($r['itemid']);
+ }
+ }
+
+ function level($itemid, $level) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET level=$level WHERE itemid IN ($itemids)");
+ }
+
+ function refresh($itemid) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET edittime='".DT_TIME."' WHERE itemid IN ($itemids)");
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/job/show.htm.php b/module/job/show.htm.php
new file mode 100644
index 0000000..e6970f3
--- /dev/null
+++ b/module/job/show.htm.php
@@ -0,0 +1,74 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+if(!$item || $item['status'] < 3) return false;
+require_once DT_ROOT.'/include/content.class.php';
+$could_comment = in_array($moduleid, explode(',', $EXT['comment_module'])) ? 1 : 0;
+extract($item);
+$CAT = get_cat($catid);
+$content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+$t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+$content = $_content = $t['content'];
+if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid);
+ if($lazy) $content = DC::lazy($content);
+ $content = DC::format($content, 1);
+}
+$CP = $MOD['cat_property'] && $CAT['property'];
+if($CP) {
+ require_once DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+}
+$expired = $totime && $totime < $DT_TIME ? true : false;
+$adddate = timetodate($addtime, 3);
+$editdate = timetodate($edittime, 3);
+$todate = $totime ? timetodate($totime, 3) : $L['timeless'];
+$fileurl = $linkurl;
+$linkurl = $MOD['linkurl'].$linkurl;
+$parentid = $CAT['parentid'] ? $CAT['parentid'] : $catid;
+$com_intro = '';
+$fee = DC::fee($item['fee'], $MOD['fee_view']);
+$user_status = 4;
+$com_intro = '';
+if($item['username']) {
+ $userid = get_user($item['username']);
+ if($userid) {
+ $com_table = content_table(4, $userid, is_file(DT_CACHE.'/4.part'), $DT_PRE.'company_data');
+ $com_intro = $db->get_one("SELECT content FROM {$com_table} WHERE userid=$userid");
+ $com_intro = $com_intro['content'];
+ }
+}
+$seo_file = 'show';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $item['template'] ? $item['template'] : ($CAT['show_template'] ? $CAT['show_template'] : ($MOD['template_show'] ? $MOD['template_show'] : 'show'));
+$destoon_task = "moduleid=$moduleid&html=show&itemid=$itemid";
+if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $linkurl);
+$DT_PC = $GLOBALS['DT_PC'] = 1;
+ob_start();
+include template($template, $module);
+$data = ob_get_contents();
+ob_clean();
+$filename = DT_ROOT.'/'.$MOD['moduledir'].'/'.$fileurl;
+if($DT['pcharset']) $filename = convert($filename, DT_CHARSET, $DT['pcharset']);
+file_put($filename, $data);
+if($EXT['mobile_enable']) {
+ include DT_ROOT.'/include/mobile.htm.php';
+ $head_pc = $linkurl;
+ $head_title = $head_name = $CAT['catname'];
+ $js_item = 1;
+ $foot = '';
+ if($_content) {
+ $content = $_content;
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, 0);
+ $content = DC::format($content, 0);
+ }
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put(str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename), $data);
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/job/show.inc.php b/module/job/show.inc.php
new file mode 100644
index 0000000..f2b21bd
--- /dev/null
+++ b/module/job/show.inc.php
@@ -0,0 +1,111 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if($item && $item['status'] > 2) {
+ if($MOD['show_html'] && is_file(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl'])) d301($MOD['linkurl'].$item['linkurl']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ } else {
+ include load('404.inc');
+ }
+ $CAT = get_cat($catid);
+ if(!check_group($_groupid, $CAT['group_show'])) include load('403.inc');
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ if($lazy) $content = DC::lazy($content);
+ $content = DC::format($content, $DT_PC);
+ }
+ $CP = $MOD['cat_property'] && $CAT['property'];
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+ }
+ $expired = $totime && $totime < $DT_TIME ? true : false;
+ $adddate = timetodate($addtime, 3);
+ $editdate = timetodate($edittime, 3);
+ $todate = $totime ? timetodate($totime, 3) : $L['timeless'];
+ $linkurl = $MOD['linkurl'].$linkurl;
+ $parentid = $CAT['parentid'] ? $CAT['parentid'] : $catid;
+ $com_intro = '';
+ if($item['username']) {
+ $userid = get_user($item['username']);
+ if($userid) {
+ $com_table = content_table(4, $userid, is_file(DT_CACHE.'/4.part'), $DT_PRE.'company_data');
+ $com_intro = $db->get_one("SELECT content FROM {$com_table} WHERE userid=$userid");
+ $com_intro = $com_intro['content'];
+ }
+ }
+ $member = array();
+ $update = '';
+ $fee = 0;
+ if(check_group($_groupid, $MOD['group_contact'])) {
+ if($fee) {
+ $user_status = 4;
+ $destoon_task = "moduleid=$moduleid&html=show&itemid=$itemid";
+ } else {
+ $user_status = 3;
+ $member = $item['username'] ? userinfo($item['username']) : array();
+ if($item['totime'] && $item['totime'] < $DT_TIME && $item['status'] == 3) $update .= ",status=4";
+ if($member) {
+ foreach(array('groupid', 'vip','validated','company') as $v) {
+ if($item[$v] != $member[$v]) $update .= ",$v='".addslashes($member[$v])."'";
+ }
+ }
+ }
+ } else {
+ $user_status = $_userid ? 1 : 0;
+ if($_username && $item['username'] == $_username) {
+ $member = userinfo($item['username']);
+ $user_status = 3;
+ }
+ }
+ if($member) {
+ foreach(array('truename', 'telephone','mobile','address', 'qq', 'wx', 'ali', 'skype') as $v) {
+ $member[$v] = $item[$v];
+ }
+ $member['mail'] = $item['email'];
+ $member['gender'] = $item['sex'];
+ }
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $linkurl);
+} else {
+ $itemid or dheader($MOD['mobile']);
+ $item = $db->get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ ($item && $item['status'] > 2) or message($L['msg_not_exist']);
+ if($item['groupid'] == 2) message($L['msg_not_exist']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $CAT = get_cat($catid);
+ if(!check_group($_groupid, $MOD['group_show']) || !check_group($_groupid, $CAT['group_show'])) message($L['msg_no_right']);
+ $member = array();
+ $fee = 0;
+ include DT_ROOT.'/mobile/api/contact.inc.php';
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ if($share_icon) $share_icon = DC::icon($thumb, $content);
+ $content = DC::format($content, 0);
+ }
+ $editdate = timetodate($edittime, 5);
+ $parentid = $CAT['parentid'] ? $CAT['parentid'] : $catid;
+ $update = '';
+ $head_title = $head_name = $CAT['catname'];
+ $js_item = 1;
+ $foot = '';
+}
+if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+$seo_file = 'show';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $item['template'] ? $item['template'] : ($CAT['show_template'] ? $CAT['show_template'] : ($MOD['template_show'] ? $MOD['template_show'] : 'show'));
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/job/talent.inc.php b/module/job/talent.inc.php
new file mode 100644
index 0000000..9e92c66
--- /dev/null
+++ b/module/job/talent.inc.php
@@ -0,0 +1,17 @@
+get_one("SELECT * FROM {$table_resume} WHERE itemid=$itemid AND status=3");
+$item or dheader($DT_PC ? $MOD['linkurl'] : $MOD['mobile']);
+if($item['open'] != 3) message($L['msg_resume_close'], $DT_PC ? $MOD['linkurl'] : $MOD['mobile']);
+$linkurl = ($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).$item['linkurl'];
+if($item['username'] == $_username) message($L['msg_add_self'], $linkurl);
+$item = $db->get_one("SELECT * FROM {$table_talent} WHERE resumeid=$itemid AND username='$_username'");
+if($item) message($L['msg_talent_exist'], $linkurl);
+$db->query("INSERT INTO {$table_talent} (resumeid,username,jointime) VALUES ('$itemid','$_username','$DT_TIME')");
+message($L['msg_talent_success'], $linkurl);
+?>
\ No newline at end of file
diff --git a/module/job/task.inc.php b/module/job/task.inc.php
new file mode 100644
index 0000000..a8fe8b0
--- /dev/null
+++ b/module/job/task.inc.php
@@ -0,0 +1,62 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3) exit;
+ extract($item);
+ $fee = 0;
+ $currency = $MOD['fee_currency'];
+ $fee_unit = $currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $fee_name = $currency == 'money' ? $DT['money_name'] : $DT['credit_name'];
+ $member = array();
+ if(check_group($_groupid, $MOD['group_contact'])) {
+ $user_status = 3;
+ } else {
+ $user_status = $_userid ? 1 : 0;
+ }
+ if($_username && $_username == $item['username']) $user_status = 3;
+ if($user_status == 3 && $item['username']) $member = userinfo($item['username']);
+ if($member) {
+ foreach(array('truename', 'telephone', 'mobile','address', 'qq', 'wx', 'ali', 'skype') as $v) {
+ $member[$v] = $item[$v];
+ }
+ $member['mail'] = $item['email'];
+ $member['gender'] = $item['sex'];
+ }
+ $contact = strip_nr(ob_template('contact', 'chip'), true);
+ echo 'Inner("contact", \''.$contact.'\');';
+ if($MOD['hits']) echo 'Inner("hits", \''.$item['hits'].'\');';
+ $update = '';
+ if($item['totime'] && $item['totime'] < $DT_TIME && $item['status'] == 3) $update .= ",status=4";
+ if($member) {
+ foreach(array('groupid', 'vip','validated','company') as $v) {
+ if($item[$v] != $member[$v]) $update .= ",$v='".addslashes($member[$v])."'";
+ }
+ }
+ if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+ if($MOD['show_html'] && $task_item && $DT_TIME - @filemtime(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl']) > $task_item) tohtml('show', $module);
+} else if($html == 'list') {
+ $catid or exit;
+ if($MOD['list_html'] && $task_list && $CAT) {
+ $num = 1;
+ $totalpage = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $demo = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, '{DEMO}');
+ $fid = $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $page + 1;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $totalpage + 1 - $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ }
+} else if($html == 'index') {
+ if($DT['cache_hits'] && $MOD['hits']) {
+ $file = DT_CACHE.'/hits-'.$moduleid;
+ if($DT_TIME - @filemtime($file.'.dat') > $DT['cache_hits'] || @filesize($file.'.php') > 102400) update_hits($moduleid, $table);
+ }
+ if($MOD['index_html']) {
+ $file = DT_ROOT.'/'.$MOD['moduledir'].'/'.$DT['index'].'.'.$DT['file_ext'];
+ if($DT_TIME - @filemtime($file) > $task_index) tohtml('index', $module);
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/know/admin/answer.inc.php b/module/know/admin/answer.inc.php
new file mode 100644
index 0000000..8f62391
--- /dev/null
+++ b/module/know/admin/answer.inc.php
@@ -0,0 +1,120 @@
+0";
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+}
+switch($action) {
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ $content = stripslashes(trim($post['content']));
+ if(!$content) msg('请填写答案');
+ $content = save_local($content);
+ if($MOD['clear_alink']) $content = clear_link($content);
+ if($MOD['save_remotepic']) $content = save_remote($content);
+ $content = dsafe($content);
+ $post['content'] = addslashes($content);
+ clear_upload($content, $itemid, $table_answer);
+ if($do->pass($post)) {
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($do->get_one());
+ $history = history($moduleid, $file.'-'.$itemid);
+ $addtime = timetodate($addtime);
+ include tpl('answer_edit', $module);
+ }
+ break;
+ case 'delete':
+ $itemid or msg('请选择答案');
+ $do->delete($itemid);
+ dmsg('删除成功', $this_forward);
+ break;
+ case 'check':
+ if($itemid) {
+ $status = $status == 3 ? 3 : 2;
+ $do->check($itemid, $status);
+ dmsg($status == 3 ? '审核成功' : '取消成功', $forward);
+ } else {
+ $lists = $do->get_list('status=2'.$condition, $dorder[$order]);
+ $menuid = 1;
+ include tpl('answer', $module);
+ }
+ break;
+ case 'vote':
+ (isset($username) && check_name($username)) or $username = '';
+ isset($ip) or $ip = '';
+ $aid = isset($aid) ? intval($aid) : 0;
+ $qid or $qid = '';
+ $aid or $aid = '';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ $condition = '1';
+ if($keyword) $condition .= in_array($dfields[$fields], array('qid', 'itemid', 'ip')) ? " AND $dfields[$fields]='$kw'" : match_kw($dfields[$fields], $keyword);
+ if($qid) $condition .= " AND qid='$qid'";
+ if($aid) $condition .= " AND aid='$aid'";
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($username) $condition .= " AND username='$username'";
+ if($ip) $condition .= " AND ip='$ip'";
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_vote} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table_vote} WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['addtime'] = timetodate($r['addtime'], 6);
+ $lists[] = $r;
+ }
+ include tpl('answer_vote', $module);
+ break;
+ default:
+ $lists = $do->get_list('status=3'.$condition, $dorder[$order]);
+ $menuid = 0;
+ include tpl('answer', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/know/admin/config.inc.php b/module/know/admin/config.inc.php
new file mode 100644
index 0000000..c4ba8bc
--- /dev/null
+++ b/module/know/admin/config.inc.php
@@ -0,0 +1,27 @@
+
\ No newline at end of file
diff --git a/module/know/admin/expert.inc.php b/module/know/admin/expert.inc.php
new file mode 100644
index 0000000..86fea61
--- /dev/null
+++ b/module/know/admin/expert.inc.php
@@ -0,0 +1,73 @@
+pass($post)) {
+ $do->add($post);
+ dmsg('添加成功', '?moduleid='.$moduleid.'&file='.$file);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $content = '';
+ $addtime = timetodate($DT_TIME);
+ $menuid = 0;
+ include tpl('expert_edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($do->get_one());
+ $addtime = timetodate($addtime);
+ $menuid = 1;
+ include tpl('expert_edit', $module);
+ }
+ break;
+ case 'delete':
+ $itemid or msg('请选择专家');
+ $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ default:
+ $lists = $do->get_list('1 '.$condition, $dorder[$order]);
+ include tpl('expert', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/know/admin/html.inc.php b/module/know/admin/html.inc.php
new file mode 100644
index 0000000..e60e6ea
--- /dev/null
+++ b/module/know/admin/html.inc.php
@@ -0,0 +1,119 @@
+get_one("SELECT * FROM {$DT_PRE}category WHERE moduleid=$moduleid AND catid>$catids ORDER BY catid");
+ if($CAT) {
+ $bcatid = $catid = $CAT['catid'];
+ $total = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $num = 50;
+ $bfid = $fid;
+ isset($fpage) or $fpage = 1;
+ if($fpage <= $total) {
+ $fid = $fpage;
+ tohtml('list', $module);
+ $fid = $bfid;
+ msg($MOD['name'].' ['.$CAT['catname'].'] 第'.$fpage.'页至第'.($fpage+$num-1).'页生成成功'.progress(0, $fid, $tid), '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids='.$catids.'&fid='.$fid.'&tid='.$tid.'&all='.$all.'&one='.$one.'&fpage='.($fpage+$num), 0);
+ }
+ $fid++;
+ msg($MOD['name'].' ['.$CAT['catname'].'] 生成成功'.progress(0, $fid, $tid), '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids='.$catid.'&fid='.$fid.'&tid='.$tid.'&all='.$all.'&one='.$one);
+ } else {
+ $all ? msg($MOD['name'].'列表生成成功', '?moduleid='.$moduleid.'&file='.$file.'&action=show&all='.$all.'&one='.$one) : msg($MOD['name'].'列表生成成功', $this_forward);
+ }
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}category WHERE moduleid=$moduleid");
+ $tid = $r['num'];
+ msg('', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids=0&fid=1&&tid='.$tid.'&all='.$all.'&one='.$one);
+ }
+ break;
+ case 'show':
+ $update = (isset($update) && $update) ? 1 : 0;
+ if(!$update && !$MOD['show_html']) {
+ if($one) dheader( '?file=html&action=back&mid='.$moduleid);
+ $all ? msg($MOD['name'].'生成成功', $this_forward) : dmsg($MOD['name'].'生成成功', $this_forward);
+ }
+ $catid = isset($catid) ? intval($catid) : '';
+ $sql = $catid ? " AND catid=$catid" : '';
+ if(!isset($fid)) {
+ $r = $db->get_one("SELECT min(itemid) AS fid FROM {$table} WHERE status>2 {$sql}");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ }
+ isset($sid) or $sid = $fid;
+ if(!isset($tid)) {
+ $r = $db->get_one("SELECT max(itemid) AS tid FROM {$table} WHERE status>2 {$sql}");
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ }
+ if($update) {
+ require DT_ROOT.'/module/'.$module.'/'.$module.'.class.php';
+ $do = new $module($moduleid);
+ }
+ isset($num) or $num = 100;
+ if($fid <= $tid) {
+ $result = $db->query("SELECT itemid FROM {$table} WHERE status>2 AND itemid>=$fid {$sql} ORDER BY itemid LIMIT 0,$num");
+ if($db->affected_rows($result)) {
+ while($r = $db->fetch_array($result)) {
+ $itemid = $r['itemid'];
+ $update ? $do->update($itemid) : tohtml('show', $module);
+ }
+ $itemid += 1;
+ } else {
+ $itemid = $fid + $num;
+ }
+ } else {
+ if($update) {
+ $all ? msg('', '?moduleid='.$moduleid.'&file='.$file.'&action=index&all=1&one='.$one) : dmsg('更新成功', $this_forward);
+ } else {
+ if($one) dheader( '?file=html&action=back&mid='.$moduleid);
+ $all ? msg($MOD['name'].'生成成功', $this_forward) : dmsg($MOD['name'].'生成成功', $this_forward);
+ }
+ }
+ msg('ID从'.$fid.'至'.($itemid-1).$MOD['name'].($update ? '更新' : '生成').'成功'.progress($sid, $fid, $tid), "?moduleid=$moduleid&file=$file&action=$action&sid=$sid&fid=$itemid&tid=$tid&num=$num&update=$update&all=$all&one=$one", 0);
+ break;
+ case 'cate':
+ $catid or msg('请选择分类');
+ isset($num) or $num = 50;
+ isset($fid) or $fid = 1;
+ $total = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ if($fpage && $tpage) {
+ $fid = $fpage;
+ $num = $tpage - $fpage + 1;
+ tohtml('list', $module);
+ dmsg('生成成功', $this_forward);
+ }
+ if($fid <= $total) {
+ tohtml('list', $module);
+ msg('第'.$fid.'页至第'.($fid+$num-1).'页生成成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catid='.$catid.'&fid='.($fid+$num).'&num='.$num.'&fpage='.$fpage.'&tpage='.$tpage, 0);
+ } else {
+ dmsg('生成成功', $this_forward);
+ }
+ break;
+ case 'item':
+ $catid or msg('请选择分类');
+ msg('', '?moduleid='.$moduleid.'&file='.$file.'&action=show&catid='.$catid.'&num='.$num);
+ break;
+ default:
+ $r = $db->get_one("SELECT min(itemid) AS fid,max(itemid) AS tid FROM {$table} WHERE status=3");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ include tpl('html', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/know/admin/index.html b/module/know/admin/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/know/admin/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/know/admin/index.inc.php b/module/know/admin/index.inc.php
new file mode 100644
index 0000000..4ba60f7
--- /dev/null
+++ b/module/know/admin/index.inc.php
@@ -0,0 +1,230 @@
+ 9 ? " AND level>0" : " AND level=$level";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+ if($thumb) $condition .= " AND thumb<>''";
+ if($guest) $condition .= " AND username=''";
+ if($hidden) $condition .= " AND hidden=1";
+ if($expert) $condition .= " AND expert<>''";
+ if($process != 99) $condition .= " AND process=$process";
+ if($ip) $condition .= " AND ip='$ip'";
+ if($username) $condition .= " AND username='$username'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+
+ $timetype = strpos($dorder[$order], 'edit') === false ? 'add' : '';
+}
+switch($action) {
+ case 'add':
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ $do->add($post);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ if($MOD['show_html'] && $post['status'] > 2) $do->tohtml($do->itemid);
+ dmsg('添加成功', '?moduleid='.$moduleid.'&action='.$action.'&catid='.$post['catid']);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $content = '';
+ $status = 3;
+ $addtime = timetodate($DT_TIME);
+ $username = $_username;
+ $item = array();
+ $menuid = 0;
+ isset($url) or $url = '';
+ if($url) {
+ $tmp = fetch_url($url);
+ if($tmp) extract($tmp);
+ }
+ $history = 0;
+ include tpl('edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ $do->edit($post);
+ if($post['aid'] != $post['nid']) {
+ if($post['nid']) {
+ $aid = $post['nid'];
+ $t = $db->get_one("SELECT * FROM {$table_answer} WHERE itemid=$aid AND qid=$itemid");
+ if($t) {
+ $db->query("UPDATE {$table} SET process=3,updatetime=$DT_TIME,aid=$aid WHERE itemid=$itemid");
+ } else {
+ msg('答案ID不属于此问题');
+ }
+ } else {
+ $db->query("UPDATE {$table} SET process=1,updatetime=$DT_TIME,aid=0 WHERE itemid=$itemid");
+ }
+ }
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ $item = $do->get_one();
+ extract($item);
+ $history = history($moduleid, $itemid);
+ $addtime = timetodate($addtime);
+ $menuon = array('4', '3', '2', '1');
+ $menuid = $menuon[$status];
+ include tpl($action, $module);
+ }
+ break;
+ case 'move':
+ if($submit) {
+ $fromids or msg('请填写来源ID');
+ if($tocatid) {
+ $db->query("UPDATE {$table} SET catid=$tocatid WHERE `{$fromtype}` IN ($fromids)");
+ dmsg('移动成功', $forward);
+ } else {
+ msg('请选择目标分类');
+ }
+ } else {
+ $itemid = $itemid ? implode(',', $itemid) : '';
+ $menuid = 5;
+ include tpl($action);
+ }
+ break;
+ case 'update':
+ is_array($itemid) or msg('请选择'.$MOD['name']);
+ foreach($itemid as $v) {
+ $do->update($v);
+ }
+ dmsg('更新成功', $forward);
+ break;
+ case 'active':
+ is_array($itemid) or msg('请选择'.$MOD['name']);
+ foreach($itemid as $v) {
+ $do->active($v);
+ }
+ dmsg('激活成功', $forward);
+ break;
+ case 'tohtml':
+ is_array($itemid) or msg('请选择'.$MOD['name']);
+ $html_itemids = $itemid;
+ foreach($html_itemids as $itemid) {
+ tohtml('show', $module);
+ }
+ dmsg('生成成功', $forward);
+ break;
+ case 'delete':
+ $itemid or msg('请选择'.$MOD['name']);
+ isset($recycle) ? $do->recycle($itemid) : $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'restore':
+ $itemid or msg('请选择'.$MOD['name']);
+ $do->restore($itemid);
+ dmsg('还原成功', $forward);
+ break;
+ case 'clear':
+ $do->clear();
+ dmsg('清空成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择'.$MOD['name']);
+ $level = intval($level);
+ $do->level($itemid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ case 'recycle':
+ $lists = $do->get_list('status=0'.$condition, $dorder[$order]);
+ $menuid = 4;
+ include tpl('index', $module);
+ break;
+ case 'reject':
+ if($itemid && !$psize) {
+ $do->reject($itemid);
+ dmsg('拒绝成功', $forward);
+ } else {
+ $lists = $do->get_list('status=1'.$condition, $dorder[$order]);
+ $menuid = 3;
+ include tpl('index', $module);
+ }
+ break;
+ case 'check':
+ if($itemid && !$psize) {
+ $do->check($itemid);
+ dmsg('审核成功', $forward);
+ } else {
+ $lists = $do->get_list('status=2'.$condition, $dorder[$order]);
+ $menuid = 2;
+ include tpl('index', $module);
+ }
+ break;
+ default:
+ $lists = $do->get_list('status=3'.$condition, $dorder[$order]);
+ $menuid = 1;
+ include tpl('index', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/know/admin/menu.inc.php b/module/know/admin/menu.inc.php
new file mode 100644
index 0000000..468e582
--- /dev/null
+++ b/module/know/admin/menu.inc.php
@@ -0,0 +1,13 @@
+
\ No newline at end of file
diff --git a/module/know/admin/template/answer_edit.tpl.php b/module/know/admin/template/answer_edit.tpl.php
new file mode 100644
index 0000000..7850fc0
--- /dev/null
+++ b/module/know/admin/template/answer_edit.tpl.php
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/know/admin/template/answer_vote.tpl.php b/module/know/admin/template/answer_vote.tpl.php
new file mode 100644
index 0000000..713bcdf
--- /dev/null
+++ b/module/know/admin/template/answer_vote.tpl.php
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ 至
+
+
+
+
+
+
+
+
+
+
+
+投票时间
+会员名
+昵称
+IP
+问题ID
+答案ID
+
+$v) {?>
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/know/admin/template/expert.tpl.php b/module/know/admin/template/expert.tpl.php
new file mode 100644
index 0000000..f0261c9
--- /dev/null
+++ b/module/know/admin/template/expert.tpl.php
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/know/admin/template/html.tpl.php b/module/know/admin/template/html.tpl.php
new file mode 100644
index 0000000..339891c
--- /dev/null
+++ b/module/know/admin/template/html.tpl.php
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/know/admin/template/index.tpl.php b/module/know/admin/template/index.tpl.php
new file mode 100644
index 0000000..4cdd469
--- /dev/null
+++ b/module/know/admin/template/index.tpl.php
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+取消', 0, 'onchange="this.form.action=\'?moduleid='.$moduleid.'&file='.$file.'&action=level\';this.form.submit();"');?>
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/know/admin/template/setting.tpl.php b/module/know/admin/template/setting.tpl.php
new file mode 100644
index 0000000..0b36551
--- /dev/null
+++ b/module/know/admin/template/setting.tpl.php
@@ -0,0 +1,602 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/know/answer.class.php b/module/know/answer.class.php
new file mode 100644
index 0000000..357c8bc
--- /dev/null
+++ b/module/know/answer.class.php
@@ -0,0 +1,127 @@
+moduleid = $moduleid;
+ $this->table = $table_answer;
+ }
+
+ function answer($moduleid) {
+ $this->__construct($moduleid);
+ }
+
+ function pass($post) {
+ if(!is_array($post)) return false;
+ if(!$post['content']) return $this->_(lang('message->pass_know_answer'));
+ return true;
+ }
+
+ function set($post) {
+ global $_username, $_cname;
+ $post['status'] = $post['status'] == 3 ? 3 : 2;
+ $post['editor'] = $_cname ? $_cname : $_username;
+ $post['edittime'] = DT_TIME;
+ return array_map("trim", $post);
+ }
+
+ function get_one() {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid='$this->itemid'");
+ }
+
+ function get_list($condition = 'status=3', $order = 'itemid DESC') {
+ global $MOD, $TYPE, $moduleid, $pages, $page, $pagesize, $offset, $items, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 6);
+ $r['title'] = get_intro($r['content'], 50);
+ $r['alt'] = get_intro($r['content'], 500);
+ $r['linkurl'] = DT_PATH.'api/redirect.php?mid='.$moduleid.'&itemid='.$r['qid'];
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function edit($post) {
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ clear_upload($post['content'], $this->itemid, $this->table);
+ if($post['status'] > 2) history($this->moduleid, 'answer-'.$this->itemid, 'del');
+ return true;
+ }
+
+ function delete($itemid) {
+ global $MOD, $table_vote;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->delete($v);
+ }
+ } else {
+ $this->itemid = $itemid;
+ $r = $this->get_one();
+ if($r) {
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ DB::query("DELETE FROM {$table_vote} WHERE aid=$itemid");
+ if($r['content']) delete_local($r['content'], get_user($r['username']));
+ if($r['username'] && $MOD['credit_del_answer']) {
+ credit_add($r['username'], -$MOD['credit_del_answer']);
+ credit_record($r['username'], -$MOD['credit_del_answer'], 'system', lang('my->credit_record_answer_del'), 'ID:'.$r['qid']);
+ }
+ history($this->moduleid, 'answer-'.$itemid, 'del');
+ }
+ }
+ }
+
+ function check($itemid, $status = 3) {
+ global $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->check($v, $status);
+ }
+ } else {
+ if($MOD['credit_answer'] && $status == 3) {
+ $this->itemid = $itemid;
+ $item = $this->get_one();
+ if($item['username']) {
+ $could_credit = true;
+ $reason = lang('my->credit_record_answer_add');
+ if($MOD['credit_maxanswer'] > 0) {
+ $r = DB::get_one("SELECT SUM(amount) AS total FROM ".DT_PRE."finance_credit WHERE username='$item[username]' AND addtime>".DT_TIME."-86400 AND reason='".$reason."'");
+ if($r['total'] >= $MOD['credit_maxanswer']) $could_credit = false;
+ }
+ if($could_credit) {
+ credit_add($item['username'], $MOD['credit_answer']);
+ credit_record($item['username'], $MOD['credit_answer'], 'system', $reason, 'ID:'.$itemid);
+ }
+ }
+ }
+ DB::query("UPDATE {$this->table} SET status=$status WHERE itemid=$itemid");
+ history($this->moduleid, 'answer-'.$itemid, 'del');
+ }
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/know/expert.class.php b/module/know/expert.class.php
new file mode 100644
index 0000000..d0faec5
--- /dev/null
+++ b/module/know/expert.class.php
@@ -0,0 +1,122 @@
+table = $table_expert;
+ $this->fields = array('title','style','major','username','passport','addtime','editor','edittime','introduce','content');
+ }
+
+ function expert() {
+ $this->__construct();
+ }
+
+ function pass($post) {
+ global $L;
+ if(!is_array($post)) return false;
+ if(!check_name($post['username'])) return $this->_($L['expert_pass_username']);
+ if(!$post['title']) return $this->_($L['expert_pass_truename']);
+ if(strlen($post['major']) < 4) return $this->_($L['expert_pass_major']);
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $_username, $_userid;
+ $post['addtime'] = (isset($post['addtime']) && is_time($post['addtime'])) ? datetotime($post['addtime']) : DT_TIME;
+ $post['edittime'] = DT_TIME;
+ $post['content'] = stripslashes($post['content']);
+ $post['content'] = save_local($post['content']);
+ if($MOD['save_remotepic']) $post['content'] = save_remote($post['content']);
+ $post['introduce'] = addslashes(get_intro($post['content'], 120));
+ $post['passport'] = addslashes(get_user($post['username'], 'username', 'passport'));
+ if($this->itemid) {
+ $post['editor'] = $_username;
+ $new = $post['content'];
+ $r = $this->get_one();
+ $old = $r['content'];
+ delete_diff($new, $old);
+ }
+ $content = $post['content'];
+ unset($post['content']);
+ $post = dhtmlspecialchars($post);
+ $post['content'] = addslashes(dsafe($content));
+ return array_map("trim", $post);
+ }
+
+ function get_one($condition = '') {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid='$this->itemid' $condition");
+ }
+
+ function get_list($condition = '1', $order = 'addtime DESC') {
+ global $MOD, $pages, $page, $pagesize, $offset, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].rewrite('expert.php?itemid='.$r['itemid']);
+ $r['rate'] = ($r['answer'] && $r['best'] < $r['answer']) ? dround($r['best']*100/$r['answer'], 2, true).'%' : '100%';
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $MOD, $L;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ clear_upload($post['content'], $this->itemid, $this->table);
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ clear_upload($post['content'], $this->itemid, $this->table);
+ return true;
+ }
+
+ function delete($itemid) {
+ global $MOD, $L;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->delete($v); }
+ } else {
+ $this->itemid = $itemid;
+ $r = $this->get_one();
+ if($r['content']) delete_local($r['content'], get_user($r['username']));
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ }
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/know/faq.inc.php b/module/know/faq.inc.php
new file mode 100644
index 0000000..75c7e42
--- /dev/null
+++ b/module/know/faq.inc.php
@@ -0,0 +1,12 @@
+
\ No newline at end of file
diff --git a/module/know/index.htm.php b/module/know/index.htm.php
new file mode 100644
index 0000000..8cb9b37
--- /dev/null
+++ b/module/know/index.htm.php
@@ -0,0 +1,47 @@
+get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].'index.php?page={destoon_page}');
+ $tags = array();
+ if($items) {
+ $order = $MOD['order'];
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax&typeid='.$typeid;
+ }
+ $head_title = $head_name = $MOD['name'];
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put(str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename), $data);
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/know/index.inc.php b/module/know/index.inc.php
new file mode 100644
index 0000000..56919f4
--- /dev/null
+++ b/module/know/index.inc.php
@@ -0,0 +1,46 @@
+ 1 ? 'index.php?page='.$page : '');
+} else {
+ $typeid = isset($typeid) ? intval($typeid) : 0;
+ in_array($typeid, array(0, 1, 2)) or $typeid = 0;
+ $condition = "status=3";
+ if($cityid) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ }
+ if($typeid == 1) $condition .= " AND process=1";
+ if($typeid == 2) $condition .= " AND process=3";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize);
+ $tags = array();
+ if($items) {
+ $order = $MOD['order'];
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax&typeid='.$typeid;
+ }
+ $head_title = $head_name = $MOD['name'];
+}
+$seo_file = 'index';
+include DT_ROOT.'/include/seo.inc.php';
+include template($MOD['template_index'] ? $MOD['template_index'] : 'index', $module);
+?>
\ No newline at end of file
diff --git a/module/know/list.htm.php b/module/know/list.htm.php
new file mode 100644
index 0000000..3f45106
--- /dev/null
+++ b/module/know/list.htm.php
@@ -0,0 +1,92 @@
+count($table, $condition);
+ if($items != $CAT['item']) {
+ $CAT['item'] = $items;
+ $db->query("UPDATE {$DT_PRE}category SET item=$items WHERE catid=$catid");
+ }
+} else {
+ $items = $CAT['item'];
+}
+$pagesize = $MOD['pagesize'];
+$showpage = 1;
+$datetype = 5;
+$target = '_blank';
+$template = $CAT['template'] ? $CAT['template'] : ($MOD['template_list'] ? $MOD['template_list'] : 'list');
+$total = max(ceil($items/$MOD['pagesize']), 1);
+if(isset($fid) && isset($num)) {
+ $page = $fid;
+ $topage = $fid + $num - 1;
+ $total = $topage < $total ? $topage : $total;
+}
+for(; $page <= $total; $page++) {
+ $offset = ($page-1)*$pagesize;
+ $pages = listpages($CAT, $items, $page, $pagesize);
+ $tags = array();
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}");
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $seo_file = 'list';
+ include DT_ROOT.'/include/seo.inc.php';
+ $destoon_task = "moduleid=$moduleid&html=list&catid=$catid&page=$page";
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].($page > 1 ?listurl($CAT, $page) : $CAT['linkurl']);
+ $filename = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, $page);
+ $_tags = $tags;
+ $DT_PC = $GLOBALS['DT_PC'] = 1;
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ if($DT['pcharset']) $filename = convert($filename, DT_CHARSET, $DT['pcharset']);
+ file_put($filename, $data);
+ if($page == 1) {
+ $indexname = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, 0);
+ if($DT['pcharset']) $indexname = convert($indexname, DT_CHARSET, $DT['pcharset']);
+ file_copy($filename, $indexname);
+ }
+ if($EXT['mobile_enable']) {
+ include DT_ROOT.'/include/mobile.htm.php';
+ $head_pc = str_replace($MOD['mobile'], $MOD['linkurl'], $head_mobile);
+ if($CAT['parentid']) $PCAT = get_cat($CAT['parentid']);
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($CAT, '{destoon_page}'));
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $tags = array();
+ foreach($_tags as $r) {
+ $r['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $r['linkurl']);
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ if($items) $js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid;
+ $head_title = $head_name = $CAT['catname'];
+ $filename = str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename);
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put($filename, $data);
+ if($page == 1) file_copy($filename, str_replace(DT_ROOT, DT_ROOT.'/mobile', $indexname));
+ }
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/know/my.inc.php b/module/know/my.inc.php
new file mode 100644
index 0000000..492ac9a
--- /dev/null
+++ b/module/know/my.inc.php
@@ -0,0 +1,194 @@
+get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND status>1");
+ $limit_used = $r['num'];
+ $limit_free = $mod_limit > $limit_used ? $mod_limit - $limit_used : 0;
+}
+switch($action) {
+ case 'add':
+ if($mod_limit && $limit_used >= $mod_limit) dalert(lang($L['info_limit'], array($mod_limit, $limit_used)), $_userid ? '?mid='.$mid : '?action=index');
+ if($MG['hour_limit']) {
+ $today = $DT_TIME - 3600;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND addtime>$today");
+ if($r && $r['num'] >= $MG['hour_limit']) dalert(lang($L['hour_limit'], array($MG['hour_limit'])), $_userid ? '?mid='.$mid : '?action=index');
+ }
+ if($MG['day_limit']) {
+ $today = $DT_TODAY - 86400;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND addtime>$today");
+ if($r && $r['num'] >= $MG['day_limit']) dalert(lang($L['day_limit'], array($MG['day_limit'])), $_userid ? '?mid='.$mid : '?action=index');
+ }
+
+ if($mod_free_limit >= 0) {
+ $fee_add = ($MOD['fee_add'] && (!$MOD['fee_mode'] || !$MG['fee_mode']) && $limit_used >= $mod_free_limit && $_userid) ? dround($MOD['fee_add']) : 0;
+ } else {
+ $fee_add = 0;
+ }
+ $fee_currency = $MOD['fee_currency'];
+ $fee_unit = $fee_currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $need_password = $fee_add && $fee_currency == 'money' && $fee_add > $DT['quick_pay'];
+ $need_captcha = $MOD['captcha_add'] == 2 ? $MG['captcha'] : $MOD['captcha_add'];
+ $need_question = $MOD['question_add'] == 2 ? $MG['question'] : $MOD['question_add'];
+ $could_color = check_group($_groupid, $MOD['group_color']) && $MOD['credit_color'] && $_userid;
+
+ if($submit) {
+ $post['credit'] = abs(intval($post['credit']));
+ if($post['credit'] && $post['credit'] > $_credit) dalert($L['balance_lack']);
+ if(isset($post['hidden']) && $post['credit'] + $MOD['credit_hidden'] > $_credit) dalert($L['balance_lack']);
+ if($fee_add && $fee_add > ($fee_currency == 'money' ? $_money : $_credit)) dalert($L['balance_lack']);
+ if($need_password && !is_payword($_username, $password)) dalert($L['error_payword']);
+ if($MG['add_limit']) {
+ $last = $db->get_one("SELECT addtime FROM {$table} WHERE $sql ORDER BY itemid DESC");
+ if($last && $DT_TIME - $last['addtime'] < $MG['add_limit']) dalert(lang($L['add_limit'], array($MG['add_limit'])));
+ }
+ $msg = captcha($captcha, $need_captcha, true);
+ if($msg) dalert($msg);
+ $msg = question($answer, $need_question, true);
+ if($msg) dalert($msg);
+ if($do->pass($post)) {
+ $CAT = get_cat($post['catid']);
+ if(!$CAT || !check_group($_groupid, $CAT['group_add'])) dalert(lang($L['group_add'], array($CAT['catname'])));
+ $post['addtime'] = $post['level'] = $post['fee'] = 0;
+ $post['style'] = $post['template'] = $post['note'] = $post['thumb'] = $post['filepath'] = '';
+ $need_check = $MOD['check_add'] == 2 ? $MG['check'] : $MOD['check_add'];
+ $post['status'] = get_status(3, $need_check);
+ $post['hits'] = 0;
+ $post['username'] = $_username;
+ $post['areaid'] = $cityid;
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($could_color && $color && $_credit > $MOD['credit_color']) {
+ $post['style'] = $color;
+ credit_add($_username, -$MOD['credit_color']);
+ credit_record($_username, -$MOD['credit_color'], 'system', $L['title_color'], '['.$MOD['name'].']'.$post['title']);
+ }
+ $do->add($post);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ if($MOD['show_html'] && $post['status'] > 2) $do->tohtml($do->itemid);
+ if($fee_add) {
+ if($fee_currency == 'money') {
+ money_add($_username, -$fee_add);
+ money_record($_username, -$fee_add, $L['in_site'], 'system', lang($L['credit_record_add'], array($MOD['name'])), 'ID:'.$do->itemid);
+ } else {
+ credit_add($_username, -$fee_add);
+ credit_record($_username, -$fee_add, 'system', lang($L['credit_record_add'], array($MOD['name'])), 'ID:'.$do->itemid);
+ }
+ }
+
+ if($post['credit']) {
+ credit_add($_username, -$post['credit']);
+ credit_record($_username, -$post['credit'], 'system', lang($L['credit_record_reward'], array($MOD['name'])), 'ID:'.$do->itemid);
+ }
+
+ if(isset($post['hidden']) && $MOD['credit_hidden']) {
+ credit_add($_username, -$MOD['credit_hidden']);
+ credit_record($_username, -$MOD['credit_hidden'], 'system', lang($L['credit_record_hidden'], array($MOD['name'])), 'ID:'.$do->itemid);
+ }
+
+ if($post['ask'] && check_name($post['ask'])) {
+ $db->query("UPDATE {$table_expert} SET ask=ask+1 WHERE username='$post[ask]'");
+ $touser = $post['ask'];
+ $title = lang($L['know_new_title'], array($post['title']));
+ $question = $post['title'];
+ $itemid = $do->itemid;
+ $content = ob_template('ask', 'mail');
+ send_message($touser, $title, $content);
+ }
+
+ $js = '';
+ if(isset($post['sync_sina']) && $post['sync_sina']) $js .= sync_weibo('sina', $moduleid, $do->itemid);
+ if($post['status'] == 3) {
+ $r = $db->get_one("SELECT linkurl FROM {$table} WHERE itemid=$do->itemid");
+ $forward = ($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).$r['linkurl'];
+ $msg = '';
+ } else {
+ if($_userid) {
+ set_cookie('dmsg', $msg);
+ $forward = '?mid='.$mid.'&status='.$post['status'];
+ $msg = '';
+ } else {
+ $forward = '?mid='.$mid.'&action=add';
+ $msg = $L['success_check'];
+ }
+ }
+ $js .= 'window.onload=function(){parent.window.location="'.$forward.'";}';
+ dalert($msg, '', $js);
+ } else {
+ dalert($do->errmsg, '', ($need_captcha ? reload_captcha() : '').($need_question ? reload_question() : ''));
+ }
+ } else {
+ foreach($do->fields as $v) {
+ $$v = '';
+ }
+ $content = '';
+ $cid = isset($cid) ? intval($cid) : 0;
+ if($cid) $catid = $cid;
+ $catid = intval($catid);
+ $askto = isset($askto) ? trim($askto) : '';
+ if(check_name($askto)) $ask = $askto;
+ $areaid = $cityid;
+ if($kw) $title = $kw;
+ $item = array();
+ }
+ break;
+ default:
+ $status = isset($status) ? intval($status) : 3;
+ in_array($status, array(1, 2, 3)) or $status = 3;
+ $condition = "username='$_username'";
+ $condition .= " AND status=$status";
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($catid) $condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ $timetype = strpos($MOD['order'], 'edit') === false ? 'add' : '';
+ $lists = $do->get_list($condition, $MOD['order']);
+ break;
+}
+if($_userid) {
+ $nums = array();
+ for($i = 1; $i < 4; $i++) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE username='$_username' AND status=$i");
+ $nums[$i] = $r['num'];
+ }
+}
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MODULE[2]['linkurl'], $MODULE[2]['mobile'], $DT_URL);
+} else {
+ $foot = '';
+ if($action == 'add' || $action == 'edit') {
+ //
+ } else {
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ foreach($lists as $k=>$v) {
+ $lists[$k]['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $v['linkurl']);
+ $lists[$k]['date'] = timetodate($v[$time], 5);
+ }
+ $pages = mobile_pages($items, $page, $pagesize);
+ $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : 'my.php');
+ }
+}
+$head_title = lang($L['module_manage'], array($MOD['name']));
+include template($MOD['template_my'] ? $MOD['template_my'] : 'my_'.$module, 'member');
+?>
\ No newline at end of file
diff --git a/module/know/search.inc.php b/module/know/search.inc.php
new file mode 100644
index 0000000..86c02a2
--- /dev/null
+++ b/module/know/search.inc.php
@@ -0,0 +1,191 @@
+ $DT['max_kw']) message(lang($L['word_limit'], array($DT['min_kw'], $DT['max_kw'])), $MOD['linkurl'].'search.php');
+ if($DT['search_limit'] && $page == 1) {
+ if(($DT_TIME - $DT['search_limit']) < get_cookie('last_search')) message(lang($L['time_limit'], array($DT['search_limit'])), $MOD['linkurl'].'search.php');
+ set_cookie('last_search', $DT_TIME);
+ }
+ }
+
+ $pptsql = '';
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $PPT = property_condition($catid);
+ foreach($PPT as $k=>$v) {
+ $PPT[$k]['select'] = '';
+ $oid = $v['oid'];
+ $tmp = 'ppt_'.$oid;
+ if(isset($$tmp)) {
+ $PPT[$k]['select'] = $tmp = strip_kw($$tmp);
+ if($tmp && in_array($tmp, $v['options'])) {
+ $tmp = 'O'.$oid.':'.$tmp.';';
+ $pptsql .= match_kw('pptword', $tmp);
+ }
+ }
+ }
+ }
+ $fds = $MOD['fields'];
+ $condition = '';
+ if($catid) $condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($typeid == 0) {
+ $condition .= " AND process=3";
+ } else if($typeid == 1) {
+ $condition .= " AND process=1";
+ } else if($typeid == 2) {
+ $condition .= " AND process=2";
+ } else if($typeid == 3) {
+ $condition .= " AND process=1 AND answer=0";
+ } else if($typeid == 4) {
+ $condition .= " AND level>0";
+ } else if($typeid == 5) {
+ $hc = intval($MOD['highcredit']);
+ if($hc > 0) $condition .= " AND process=1 AND credit>$hc";
+ } else if($typeid == 6) {
+ $condition .= " AND process=3 AND expert<>''";
+ }
+ if($username) $condition .= " AND username='$username'";
+ if($dfields[$fields] == 'content') {
+ if($keyword && $MOD['fulltext'] == 1) $condition .= match_kw($dfields[$fields], $keyword);
+ $condition = str_replace('AND ', 'AND i.', $condition);
+ $condition = str_replace('i.content', 'd.content', $condition);
+ $condition = "i.status=3 AND i.itemid=d.itemid".$condition;
+ if($keyword && $MOD['fulltext'] == 2) $condition .= " AND MATCH(`content`) AGAINST('$kw'".(preg_match("/[+-<>()~*]/", $kw) ? ' IN BOOLEAN MODE' : '').")";
+ $table = $table.' i,'.$table_data.' d';
+ $fds = 'i.'.str_replace(',', ',i.', $fds);
+ } else {
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($pptsql) $condition .= $pptsql;//PPT
+ $condition = "status=3".$condition;
+ }
+ $pagesize = $MOD['pagesize'];
+ $offset = ($page-1)*$pagesize;
+ $items = $db->count($table, $condition, $DT['cache_search']);
+ $pages = pages($items, $page, $pagesize);
+ if($items) {
+ $order = $dorder[$order] ? " ORDER BY $dorder[$order]" : '';
+ $result = $db->query("SELECT {$fds} FROM {$table} WHERE {$condition}{$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ if($kw) {
+ $replacef = explode(' ', $kw);
+ $replacet = array_map('highlight', $replacef);
+ }
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ if($kw) $r['title'] = str_replace($replacef, $replacet, $r['title']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ }
+ if($page == 1 && $kw && $DT['search_kw']) keyword($DT['search_kw'], $_username, $kw, $items, $moduleid);
+ $showpage = 1;
+ $datetype = 5;
+ $target = '_blank';
+ $cols = 5;
+ $class = '';
+ $seo_file = 'search';
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+} else {
+ if($kw) {
+ check_group($_groupid, $MOD['group_search']) or message($L['msg_no_search']);
+ } else if($catid) {
+ $CAT or message($L['msg_not_cate']);
+ if(!check_group($_groupid, $MOD['group_list']) || !check_group($_groupid, $CAT['group_list'])) message($L['msg_no_right']);
+ } else {
+ check_group($_groupid, $MOD['group_index']) or message($L['msg_no_right']);
+ }
+ $head_title = $MOD['name'].$DT['seo_delimiter'].$head_title;
+ if($kw) $head_title = $kw.$DT['seo_delimiter'].$head_title;
+ if(!$areaid && $cityid && strpos($DT_URL, 'areaid') === false) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ }
+ $elite = isset($elite) ? intval($elite) : 0;
+ (isset($orderby) && in_array($orderby, array('danswer', 'dhits', 'dcredit', 'acredit'))) or $orderby = '';
+ $typeid = isset($typeid) ? intval($typeid) : 99;
+ $tags = array();
+ if($DT_QST) {
+ $condition = "status=3";
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($catid) $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($areaid) $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($elite) $condition .= " AND level>0";
+ if($typeid == 0) {
+ $condition .= " AND process=3";
+ } else if($typeid == 1) {
+ $condition .= " AND process=1";
+ } else if($typeid == 2) {
+ $condition .= " AND process=2";
+ } else if($typeid == 3) {
+ $condition .= " AND process=1 AND answer=0";
+ } else if($typeid == 4) {
+ $condition .= " AND level>0";
+ } else if($typeid == 5) {
+ $hc = intval($MOD['highcredit']);
+ if($hc > 0) $condition .= " AND process=1 AND credit>$hc";
+ } else if($typeid == 6) {
+ $condition .= " AND process=3 AND expert<>''";
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize);
+ if($items) {
+ $order = $MOD['order'];
+ if($orderby) $order = substr($orderby, 0, 1) == 'd' ? substr($orderby, 1).' DESC' : substr($orderby, 1).' ASC';
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY {$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ while($r = $db->fetch_array($result)) {
+ if($kw) $r['title'] = str_replace($kw, ''.$kw.' ', $r['title']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = preg_replace("/(.*)([&?]page=[0-9]*)(.*)/i", "\\1\\3", rewrite($DT_URL, 1)).'&job=ajax';
+ }
+ if($page == 1 && $kw && $DT['search_kw']) keyword($DT['search_kw'], $_username, $kw, $items, $moduleid);
+ }
+ if($job == 'ajax') {
+ if($tags) include template('list-'.$module, 'tag');
+ exit;
+ }
+ $head_title = $MOD['name'].$L['search'];
+}
+$seo_file = 'search';
+include DT_ROOT.'/include/seo.inc.php';
+include template($MOD['template_search'] ? $MOD['template_search'] : 'search', $module);
+?>
\ No newline at end of file
diff --git a/module/know/show.htm.php b/module/know/show.htm.php
new file mode 100644
index 0000000..4c6a264
--- /dev/null
+++ b/module/know/show.htm.php
@@ -0,0 +1,101 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+if(!$item || $item['status'] < 3) return false;
+require_once DT_ROOT.'/include/content.class.php';
+$could_comment = in_array($moduleid, explode(',', $EXT['comment_module'])) ? 1 : 0;
+extract($item);
+$CAT = get_cat($catid);
+$content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+$t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+$content = $_content = $t['content'];
+if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid);
+ if($lazy) $content = DC::lazy($content);
+ $content = DC::format($content, 1);
+}
+$CP = $MOD['cat_property'] && $CAT['property'];
+if($CP) {
+ require_once DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+}
+$adddate = timetodate($addtime, 3);
+$editdate = timetodate($edittime, 3);
+$fileurl = $linkurl;
+$linkurl = $MOD['linkurl'].$linkurl;
+$fee = DC::fee($item['fee'], $MOD['fee_view']);
+if($fee) {
+ $description = $best ? DC::description($best['content'], $MOD['pre_view']) : '';
+ $user_status = 4;
+} else {
+ $user_status = 3;
+}
+$answers = $best = $E = array();
+if($page == 1) {
+ if($aid) $best = $db->get_one("SELECT * FROM {$table_answer} WHERE itemid=$aid");
+ if($best && $best['expert']) $E = $db->get_one("SELECT * FROM {$table_expert} WHERE username='$best[username]'");
+}
+$pages = '';
+$pagesize = $MOD['answer_pagesize'];
+$items = $answer;
+if($aid) $items--;
+$total = max(ceil($items/$pagesize), 1);
+if(isset($fid) && isset($num)) {
+ $page = $fid;
+ $topage = $fid + $num - 1;
+ $total = $topage < $total ? $topage : $total;
+}
+$template = $item['template'] ? $item['template'] : ($CAT['show_template'] ? $CAT['show_template'] : ($MOD['template_show'] ? $MOD['template_show'] : 'show'));
+for(; $page <= $total; $page++) {
+ $destoon_task = "moduleid=$moduleid&html=show&itemid=$itemid&page=$page";
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].($page > 1 ? itemurl($item, $page) : $item['linkurl']);
+ $filename = $total == 1 ? DT_ROOT.'/'.$MOD['moduledir'].'/'.$fileurl : DT_ROOT.'/'.$MOD['moduledir'].'/'.itemurl($item, $page);
+ $answers = array();
+ if(($process == 0 || $process == 3) && $items) {
+ $offset = ($page-1)*$pagesize;
+ $pages = pages($items, $page, $pagesize, $MOD['linkurl'].itemurl($item, '{destoon_page}'));
+ $result = $db->query("SELECT * FROM {$table_answer} WHERE qid=$itemid AND status=3 ORDER BY itemid ASC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ if($r['itemid'] == $aid) continue;
+ $answers[] = $r;
+ }
+ }
+ $seo_file = 'show';
+ include DT_ROOT.'/include/seo.inc.php';
+ $DT_PC = $GLOBALS['DT_PC'] = 1;
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ if($DT['pcharset']) $filename = convert($filename, DT_CHARSET, $DT['pcharset']);
+ file_put($filename, $data);
+ if($page == 1 && $total > 1) {
+ $indexname = DT_ROOT.'/'.$MOD['moduledir'].'/'.itemurl($item, 0);
+ if($DT['pcharset']) $indexname = convert($indexname, DT_CHARSET, $DT['pcharset']);
+ file_copy($filename, $indexname);
+ }
+ if($EXT['mobile_enable']) {
+ include DT_ROOT.'/include/mobile.htm.php';
+ $head_pc = str_replace($MOD['mobile'], $MOD['linkurl'], $head_mobile);
+ $head_title = $head_name = $CAT['catname'];
+ $js_item = 1;
+ $foot = '';
+ if($total > 1) $pages = mobile_pages($total, $page, 1, $MOD['mobile'].itemurl($item, '{destoon_page}'));
+ if($_content) {
+ $content = $_content;
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, 0);
+ $content = DC::format($content, 0);
+ }
+ $filename = str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename);
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put($filename, $data);
+ if($page == 1 && $total > 1) file_copy($filename, str_replace(DT_ROOT, DT_ROOT.'/mobile', $indexname));
+ }
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/know/show.inc.php b/module/know/show.inc.php
new file mode 100644
index 0000000..6fb2d85
--- /dev/null
+++ b/module/know/show.inc.php
@@ -0,0 +1,142 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if($item && $item['status'] > 2) {
+ if($MOD['show_html'] && is_file(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl'])) d301($MOD['linkurl'].$item['linkurl']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ } else {
+ include load('404.inc');
+ }
+ $CAT = get_cat($catid);
+ if(!check_group($_groupid, $CAT['group_show'])) include load('403.inc');
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ if($lazy) $content = DC::lazy($content);
+ $content = DC::format($content, $DT_PC);
+ }
+ $CP = $MOD['cat_property'] && $CAT['property'];
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+ }
+ $adddate = timetodate($addtime, 3);
+ $editdate = timetodate($edittime, 3);
+ $linkurl = $MOD['linkurl'].$linkurl;
+ $update = '';
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ if($fee) {
+ $user_status = 4;
+ $destoon_task = "moduleid=$moduleid&html=show&itemid=$itemid&page=$page";
+ $description = DC::description($content, $MOD['pre_view']);
+ } else {
+ $user_status = 3;
+ }
+ $answers = $best = $E = array();
+ if($page == 1) {
+ if($aid) $best = $db->get_one("SELECT * FROM {$table_answer} WHERE itemid=$aid");
+ if($best && $best['expert']) $E = $db->get_one("SELECT * FROM {$table_expert} WHERE username='$best[username]'");
+ }
+ $pages = '';
+ if($process == 0 || $process == 3) {
+ if($MOD['answer_pagesize']) {
+ $pagesize = $MOD['answer_pagesize'];
+ $offset = ($page-1)*$pagesize;
+ }
+ if($page == 1) {
+ $items = $db->count($table_answer, "qid=$itemid AND status=3");
+ if($items != $answer) {
+ $answer = $items;
+ $update .= ",answer='$items'";
+ }
+ } else {
+ $items = $answer;
+ }
+ if($items > 0) {
+ $pages = pages($items, $page, $pagesize, $MOD['linkurl'].itemurl($item, '{destoon_page}'));
+ $result = $db->query("SELECT * FROM {$table_answer} WHERE qid=$itemid AND status=3 ORDER BY itemid ASC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ if($r['itemid'] == $aid) continue;
+ $answers[] = $r;
+ }
+ }
+ }
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $linkurl);
+} else {
+ $itemid or dheader($MOD['mobile']);
+ $item = $db->get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ ($item && $item['status'] > 2) or message($L['msg_not_exist']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $could_answer = check_group($_groupid, $MOD['group_answer']);
+ if($item['process'] != 1 || ($_username && $_username == $item['username'])) $could_answer = false;
+ if($could_answer) {
+ if($_username) {
+ $r = $db->get_one("SELECT itemid FROM {$table_answer} WHERE username='$_username' AND qid=$itemid");
+ } else {
+ $r = $db->get_one("SELECT itemid FROM {$table_answer} WHERE ip='$DT_IP' AND qid=$itemid AND addtime>$DT_TIME-86400");
+ }
+ if($r) $could_answer = false;
+ }
+ $CAT = get_cat($catid);
+ if(!check_group($_groupid, $MOD['group_show']) || !check_group($_groupid, $CAT['group_show'])) message($L['msg_no_right']);
+ $answers = $best = $E = array();
+ $member = array();
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ include DT_ROOT.'/mobile/api/content.inc.php';
+ if($page == 1) {
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ if($share_icon) $share_icon = DC::icon($thumb, $content);
+ DC::format($content, $DT_PC);
+ }
+ $best = $aid ? $db->get_one("SELECT * FROM {$table_answer} WHERE itemid=$aid") : array();
+ }
+ $editdate = timetodate($edittime, 5);
+ $update = '';
+ $answers = array();
+ if($MOD['answer_pagesize']) {
+ $pagesize = $MOD['answer_pagesize'];
+ $offset = ($page-1)*$pagesize;
+ }
+ if($page == 1) {
+ $items = $db->count($table_answer, "qid=$itemid AND status=3");
+ if($items != $answer) {
+ $answer = $items;
+ $update .= ",answer='$items'";
+ }
+ } else {
+ $items = $answer;
+ }
+ if($items > 0) {
+ $floor = $page == 1 ? 0 : ($page-1)*$pagesize;
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].itemurl($item, '{destoon_page}'));
+ $result = $db->query("SELECT * FROM {$table_answer} WHERE qid=$itemid AND status=3 ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ if($r['itemid'] == $aid) continue;
+ $r['floor'] = ++$floor;
+ $answers[] = $r;
+ }
+ }
+ $head_title = $head_name = $CAT['catname'];
+ $js_item = 1;
+ $foot = '';
+}
+if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+$seo_file = 'show';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $item['template'] ? $item['template'] : ($CAT['show_template'] ? $CAT['show_template'] : ($MOD['template_show'] ? $MOD['template_show'] : 'show'));
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/mall/admin/config.inc.php b/module/mall/admin/config.inc.php
new file mode 100644
index 0000000..55ceb74
--- /dev/null
+++ b/module/mall/admin/config.inc.php
@@ -0,0 +1,29 @@
+
\ No newline at end of file
diff --git a/module/mall/admin/html.inc.php b/module/mall/admin/html.inc.php
new file mode 100644
index 0000000..e60e6ea
--- /dev/null
+++ b/module/mall/admin/html.inc.php
@@ -0,0 +1,119 @@
+get_one("SELECT * FROM {$DT_PRE}category WHERE moduleid=$moduleid AND catid>$catids ORDER BY catid");
+ if($CAT) {
+ $bcatid = $catid = $CAT['catid'];
+ $total = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $num = 50;
+ $bfid = $fid;
+ isset($fpage) or $fpage = 1;
+ if($fpage <= $total) {
+ $fid = $fpage;
+ tohtml('list', $module);
+ $fid = $bfid;
+ msg($MOD['name'].' ['.$CAT['catname'].'] 第'.$fpage.'页至第'.($fpage+$num-1).'页生成成功'.progress(0, $fid, $tid), '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids='.$catids.'&fid='.$fid.'&tid='.$tid.'&all='.$all.'&one='.$one.'&fpage='.($fpage+$num), 0);
+ }
+ $fid++;
+ msg($MOD['name'].' ['.$CAT['catname'].'] 生成成功'.progress(0, $fid, $tid), '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids='.$catid.'&fid='.$fid.'&tid='.$tid.'&all='.$all.'&one='.$one);
+ } else {
+ $all ? msg($MOD['name'].'列表生成成功', '?moduleid='.$moduleid.'&file='.$file.'&action=show&all='.$all.'&one='.$one) : msg($MOD['name'].'列表生成成功', $this_forward);
+ }
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}category WHERE moduleid=$moduleid");
+ $tid = $r['num'];
+ msg('', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids=0&fid=1&&tid='.$tid.'&all='.$all.'&one='.$one);
+ }
+ break;
+ case 'show':
+ $update = (isset($update) && $update) ? 1 : 0;
+ if(!$update && !$MOD['show_html']) {
+ if($one) dheader( '?file=html&action=back&mid='.$moduleid);
+ $all ? msg($MOD['name'].'生成成功', $this_forward) : dmsg($MOD['name'].'生成成功', $this_forward);
+ }
+ $catid = isset($catid) ? intval($catid) : '';
+ $sql = $catid ? " AND catid=$catid" : '';
+ if(!isset($fid)) {
+ $r = $db->get_one("SELECT min(itemid) AS fid FROM {$table} WHERE status>2 {$sql}");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ }
+ isset($sid) or $sid = $fid;
+ if(!isset($tid)) {
+ $r = $db->get_one("SELECT max(itemid) AS tid FROM {$table} WHERE status>2 {$sql}");
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ }
+ if($update) {
+ require DT_ROOT.'/module/'.$module.'/'.$module.'.class.php';
+ $do = new $module($moduleid);
+ }
+ isset($num) or $num = 100;
+ if($fid <= $tid) {
+ $result = $db->query("SELECT itemid FROM {$table} WHERE status>2 AND itemid>=$fid {$sql} ORDER BY itemid LIMIT 0,$num");
+ if($db->affected_rows($result)) {
+ while($r = $db->fetch_array($result)) {
+ $itemid = $r['itemid'];
+ $update ? $do->update($itemid) : tohtml('show', $module);
+ }
+ $itemid += 1;
+ } else {
+ $itemid = $fid + $num;
+ }
+ } else {
+ if($update) {
+ $all ? msg('', '?moduleid='.$moduleid.'&file='.$file.'&action=index&all=1&one='.$one) : dmsg('更新成功', $this_forward);
+ } else {
+ if($one) dheader( '?file=html&action=back&mid='.$moduleid);
+ $all ? msg($MOD['name'].'生成成功', $this_forward) : dmsg($MOD['name'].'生成成功', $this_forward);
+ }
+ }
+ msg('ID从'.$fid.'至'.($itemid-1).$MOD['name'].($update ? '更新' : '生成').'成功'.progress($sid, $fid, $tid), "?moduleid=$moduleid&file=$file&action=$action&sid=$sid&fid=$itemid&tid=$tid&num=$num&update=$update&all=$all&one=$one", 0);
+ break;
+ case 'cate':
+ $catid or msg('请选择分类');
+ isset($num) or $num = 50;
+ isset($fid) or $fid = 1;
+ $total = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ if($fpage && $tpage) {
+ $fid = $fpage;
+ $num = $tpage - $fpage + 1;
+ tohtml('list', $module);
+ dmsg('生成成功', $this_forward);
+ }
+ if($fid <= $total) {
+ tohtml('list', $module);
+ msg('第'.$fid.'页至第'.($fid+$num-1).'页生成成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catid='.$catid.'&fid='.($fid+$num).'&num='.$num.'&fpage='.$fpage.'&tpage='.$tpage, 0);
+ } else {
+ dmsg('生成成功', $this_forward);
+ }
+ break;
+ case 'item':
+ $catid or msg('请选择分类');
+ msg('', '?moduleid='.$moduleid.'&file='.$file.'&action=show&catid='.$catid.'&num='.$num);
+ break;
+ default:
+ $r = $db->get_one("SELECT min(itemid) AS fid,max(itemid) AS tid FROM {$table} WHERE status=3");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ include tpl('html', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/mall/admin/index.inc.php b/module/mall/admin/index.inc.php
new file mode 100644
index 0000000..1003437
--- /dev/null
+++ b/module/mall/admin/index.inc.php
@@ -0,0 +1,351 @@
+ 9 ? " AND level>0" : " AND level=$level";
+ if($elite) $condition .= " AND elite>0";
+ if($cod) $condition .= " AND cod>0";
+ if($mp) $condition .= " AND step LIKE '%Y%'";
+ if($rl) $condition .= " AND relate_id<>''";
+ if($price) $condition .= " AND price>0";
+ if($minprice) $condition .= " AND price>=$minprice";
+ if($maxprice) $condition .= " AND price<=$maxprice";
+ if($minorders) $condition .= " AND orders>=$minorders";
+ if($maxorders) $condition .= " AND orders<=$maxorders";
+ if($minsales) $condition .= " AND sales>=$minsales";
+ if($maxsales) $condition .= " AND sales<=$maxsales";
+ if($minamount) $condition .= " AND amount>=$minamount";
+ if($maxamount) $condition .= " AND amount<=$maxamount";
+ if($mincomments) $condition .= " AND comments>=$mincomments";
+ if($maxcomments) $condition .= " AND comments<=$maxcomments";
+ if($minvip) $condition .= " AND vip>=$minvip";
+ if($maxvip) $condition .= " AND vip<=$maxvip";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+ if($ip) $condition .= " AND ip='$ip'";
+ if($username) $condition .= " AND username='$username'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+
+ $timetype = strpos($dorder[$order], 'add') !== false ? 'add' : '';
+}
+switch($action) {
+ case 'add':
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ $do->add($post);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ if($MOD['show_html'] && $post['status'] > 2) $do->tohtml($do->itemid);
+ dmsg('添加成功', '?moduleid='.$moduleid.'&action='.$action);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $a1 = 1;
+ $a2 = $a3 = $p1 = $p2 = $p3 = '';
+ $unit = '件';
+ $boc = 1;
+ $stocks = '';
+ $mode = 0;
+ $content = '';
+ $status = 3;
+ $addtime = timetodate($DT_TIME);
+ $username = $_username;
+ $item = $thumbs = array();
+ isset($url) or $url = '';
+ if($url) {
+ $tmp = fetch_url($url);
+ if($tmp) extract($tmp);
+ }
+ $EXP = array();
+ $result = $db->query("SELECT * FROM {$table_express} WHERE username='$username' AND parentid=0 ORDER BY listorder ASC,itemid ASC LIMIT 100");
+ while($r = $db->fetch_array($result)) {
+ $EXP[] = $r;
+ }
+ $menuid = 0;
+ $history = 0;
+ include tpl('edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ $item = $do->get_one();
+ extract($item);
+ $history = history($moduleid, $itemid);
+ $thumbs = get_thumbs($item);
+ if($step) {
+ extract(unserialize($step));
+ $a2 > 0 or $a2 = '';
+ $a3 > 0 or $a3 = '';
+ $p2 > 0 or $p2 = '';
+ $p3 > 0 or $p3 = '';
+ $mode = 2;
+ } else {
+ $a1 = 1;
+ $p1 = $item['price'];
+ $a2 = $a3 = $p2 = $p3 = '';
+ $mode = $prices ? 1 : 0;
+ }
+ $stocks = '';
+ if($stock) {
+ $stocks = json_encode(get_stocks($stock));
+ $mode = 3;
+ }
+ $unit or $unit = '件';
+ $addtime = timetodate($addtime);
+ $EXP = array();
+ $result = $db->query("SELECT * FROM {$table_express} WHERE username='$username' AND parentid=0 ORDER BY listorder ASC,itemid ASC LIMIT 100");
+ while($r = $db->fetch_array($result)) {
+ $EXP[] = $r;
+ }
+ $menuon = array('5', '4', '2', '1', '3');
+ $menuid = $menuon[$status];
+ include tpl($action, $module);
+ }
+ break;
+ case 'move':
+ if($submit) {
+ $fromids or msg('请填写来源ID');
+ if($tocatid) {
+ $db->query("UPDATE {$table} SET catid=$tocatid WHERE `{$fromtype}` IN ($fromids)");
+ dmsg('移动成功', $forward);
+ } else {
+ msg('请选择目标分类');
+ }
+ } else {
+ $itemid = $itemid ? implode(',', $itemid) : '';
+ $menuid = 6;
+ include tpl($action);
+ }
+ break;
+ case 'update':
+ is_array($itemid) or msg('请选择商品');
+ foreach($itemid as $v) {
+ $do->update($v);
+ }
+ dmsg('更新成功', $forward);
+ break;
+ case 'tohtml':
+ is_array($itemid) or msg('请选择商品');
+ foreach($itemid as $itemid) {
+ tohtml('show', $module);
+ }
+ dmsg('生成成功', $forward);
+ break;
+ case 'delete':
+ $itemid or msg('请选择商品');
+ isset($recycle) ? $do->recycle($itemid) : $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'restore':
+ $itemid or msg('请选择商品');
+ $do->restore($itemid);
+ dmsg('还原成功', $forward);
+ break;
+ case 'refresh':
+ $itemid or msg('请选择商品');
+ $do->refresh($itemid);
+ dmsg('刷新成功', $forward);
+ break;
+ case 'clear':
+ $do->clear();
+ dmsg('清空成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择商品');
+ $level = intval($level);
+ $do->level($itemid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ case 'type':
+ $itemid or msg('请选择商品');
+ $tid = intval($tid);
+ array_key_exists($tid, $TYPE) or $tid = 0;
+ $do->type($itemid, $tid);
+ dmsg('类型设置成功', $forward);
+ break;
+ case 'recycle':
+ $lists = $do->get_list('status=0'.$condition, $dorder[$order]);
+ $menuid = 5;
+ include tpl('index', $module);
+ break;
+ case 'reject':
+ if($itemid && !$psize) {
+ $do->reject($itemid);
+ dmsg('拒绝成功', $forward);
+ } else {
+ $lists = $do->get_list('status=1'.$condition, $dorder[$order]);
+ $menuid = 4;
+ include tpl('index', $module);
+ }
+ break;
+ case 'expire':
+ $lists = $do->get_list('status=4'.$condition);
+ $menuid = 3;
+ include tpl('index', $module);
+ break;
+ case 'unsale':
+ $itemid or msg('请选择商品');
+ $do->unsale($itemid);
+ dmsg('下架成功', $forward);
+ break;
+ case 'onsale':
+ $itemid or msg('请选择商品');
+ $do->onsale($itemid);
+ dmsg('上架成功', $forward);
+ break;
+ case 'relate_del':
+ $itemid or msg('请选择商品');
+ $do->itemid = $itemid;
+ $M = $do->get_one();
+ ($M && $M['status'] == 3) or msg('请选择商品');
+ $id = isset($id) ? intval($id) : 0;
+ $id or msg('请选择移除商品');
+ $do->itemid = $id;
+ $A = $do->get_one();
+ $do->relate_del($M, $A);
+ dmsg('移除成功', '?moduleid='.$moduleid.'&file='.$file.'&itemid='.$itemid.'&action=relate');
+ break;
+ case 'relate_add':
+ $relate_name = isset($relate_name) ? dhtmlspecialchars(trim($relate_name)) : '';
+ $relate_name or msg('请填写关联名称');
+ $itemid or msg('请选择商品');
+ $do->itemid = $itemid;
+ $M = $do->get_one();
+ ($M && $M['status'] == 3) or msg('请选择商品');
+ $id = isset($id) ? intval($id) : 0;
+ $id or msg('请选择关联商品');
+ $do->itemid = $id;
+ $A = $do->get_one();
+ ($A && $A['status'] == 3 && $A['username'] == $M['username']) or msg('请选择关联商品');
+ if($itemid == $id) msg('选择的商品已经存在');
+ $do->relate_add($M, $A, $relate_name);
+ dmsg('新增成功', '?moduleid='.$moduleid.'&file='.$file.'&itemid='.$itemid.'&action=relate');
+ break;
+ case 'relate':
+ $itemid or msg('请选择商品');
+ $do->itemid = $itemid;
+ $M = $do->get_one();
+ ($M && $M['status'] == 3) or msg('请选择商品');
+ if($submit) {
+ $relate_name = isset($relate_name) ? dhtmlspecialchars(trim($relate_name)) : '';
+ $relate_name or msg('请填写关联名称');
+ $do->relate($M, $post, $relate_name);
+ dmsg('更新成功', '?moduleid='.$moduleid.'&file='.$file.'&itemid='.$itemid.'&action=relate');
+ } else {
+ $lists = $do->relate_list($M);
+ include tpl('relate', $module);
+ }
+ break;
+ case 'check':
+ if($itemid && !$psize) {
+ $do->check($itemid);
+ dmsg('审核成功', $forward);
+ } else {
+ $lists = $do->get_list('status=2'.$condition, $dorder[$order]);
+ $menuid = 2;
+ include tpl('index', $module);
+ }
+ break;
+ default:
+ $lists = $do->get_list('status=3'.$condition, $dorder[$order]);
+ $menuid = 1;
+ include tpl('index', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/mall/admin/menu.inc.php b/module/mall/admin/menu.inc.php
new file mode 100644
index 0000000..5cbbbc6
--- /dev/null
+++ b/module/mall/admin/menu.inc.php
@@ -0,0 +1,13 @@
+
\ No newline at end of file
diff --git a/module/mall/admin/order.inc.php b/module/mall/admin/order.inc.php
new file mode 100644
index 0000000..b97f6db
--- /dev/null
+++ b/module/mall/admin/order.inc.php
@@ -0,0 +1,448 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ $td or msg('记录不存在');
+ $td['mid'] == $moduleid or msg('记录不存在');
+ $td['linkurl'] = DT_PATH.'api/redirect.php?mid='.$td['mid'].'&itemid='.$td['mallid'];
+ $td['total'] = $td['amount'] + $td['fee'];
+ $td['total'] = number_format($td['total'], 2, '.', '');
+ $td['money'] = $td['amount'] + $td['discount'];
+ $td['money'] = number_format($td['money'], 2, '.', '');
+ $td['adddate'] = timetodate($td['addtime'], 6);
+ $td['updatedate'] = timetodate($td['updatetime'], 6);
+ $td['par'] = '';
+ if(strpos($td['note'], '|') !== false) list($td['note'], $td['par']) = explode('|', $td['note']);
+ $lists = array($td);
+ if(($td['amount'] + $td['discount']) > $td['price']*$td['number']) {
+ $result = $db->query("SELECT * FROM {$table} WHERE pid=$itemid ORDER BY itemid DESC");
+ while($r = $db->fetch_array($result)) {
+ $r['linkurl'] = DT_PATH.'api/redirect.php?mid='.$r['mid'].'&itemid='.$r['mallid'];
+ $r['par'] = '';
+ if(strpos($r['note'], '|') !== false) list($r['note'], $r['par']) = explode('|', $r['note']);
+ $lists[] = $r;
+ }
+ }
+ $td['sku'] = $td['skuid'] ? get_sku($td['skuid'], $td['seller']) : array();
+ $mallid = $td['mallid'];
+ $logs = array();
+ $result = $db->query("SELECT * FROM {$table_log} WHERE oid=$itemid ORDER BY itemid DESC");
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $logs[] = $r;
+ }
+}
+switch($action) {
+ case 'stats':
+ $year = isset($year) ? intval($year) : date('Y', $DT_TIME);
+ $year or $year = date('Y', $DT_TIME);
+ $month = isset($month) ? intval($month) : date('n', $DT_TIME);
+ isset($seller) or $seller = '';
+ $xd = $y0 = $y1 = $y2 = '';
+ if($month) {
+ $L = date('t', datetotime($year.'-'.$month.'-01'));
+ for($i = 1; $i <= $L; $i++) {
+ if($i > 1) { $xd .= ','; $y0 .= ','; $y1 .= ','; $y2 .= ','; }
+ $xd .= "'".$i."日'";
+ $F = datetotime($year.'-'.$month.'-'.$i.' 00:00:00');
+ $T = datetotime($year.'-'.$month.'-'.$i.' 23:59:59');
+ $condition = "mid=$moduleid AND pid=0 AND addtime>=$F AND addtime<=$T";
+ if($seller) $condition .= " AND seller='$seller'";
+ $t = $db->get_one("SELECT SUM(`amount`) AS num1,SUM(`fee`) AS num2 FROM {$table} WHERE {$condition} AND status=4");
+ $num1 = $t['num1'] ? dround($t['num1']) : 0;
+ $num2 = $t['num2'] ? dround($t['num2']) : 0;
+ $num = $num1 + $num2;
+ $y0 .= $num;
+ $t = $db->get_one("SELECT SUM(`amount`) AS num1,SUM(`fee`) AS num2 FROM {$table} WHERE {$condition} AND status=6");
+ $num1 = $t['num1'] ? dround($t['num1']) : 0;
+ $num2 = $t['num2'] ? dround($t['num2']) : 0;
+ $num = $num1 + $num2;
+ $y1 .= $num;
+ $t = $db->get_one("SELECT SUM(`amount`) AS num1,SUM(`fee`) AS num2 FROM {$table} WHERE {$condition} AND status=7");
+ $num1 = $t['num1'] ? dround($t['num1']) : 0;
+ $num2 = $t['num2'] ? dround($t['num2']) : 0;
+ $num = $num1 + $num2;
+ $y2 .= $num;
+ }
+ $title = $year.'年'.$month.'月交易报表(单位:'.$DT['money_unit'].')';
+ if($seller) $title = '['.$seller.'] '.$title;
+ } else {
+ for($i = 1; $i < 13; $i++) {
+ if($i > 1) { $xd .= ','; $y0 .= ','; $y1 .= ','; $y2 .= ','; }
+ $xd .= "'".$i."月'";
+ $F = datetotime($year.'-'.$i.'-01 00:00:00');
+ $T = datetotime($year.'-'.$i.'-'.date('t', $F).' 23:59:59');
+ $condition = "mid=$moduleid AND pid=0 AND addtime>=$F AND addtime<=$T";
+ if($seller) $condition .= " AND seller='$seller'";
+ $t = $db->get_one("SELECT SUM(`amount`) AS num1,SUM(`fee`) AS num2 FROM {$table} WHERE {$condition} AND status=4");
+ $num1 = $t['num1'] ? dround($t['num1']) : 0;
+ $num2 = $t['num2'] ? dround($t['num2']) : 0;
+ $num = $num1 + $num2;
+ $y0 .= $num;
+ $t = $db->get_one("SELECT SUM(`amount`) AS num1,SUM(`fee`) AS num2 FROM {$table} WHERE {$condition} AND status=6");
+ $num1 = $t['num1'] ? dround($t['num1']) : 0;
+ $num2 = $t['num2'] ? dround($t['num2']) : 0;
+ $num = $num1 + $num2;
+ $y1 .= $num;
+ $t = $db->get_one("SELECT SUM(`amount`) AS num1,SUM(`fee`) AS num2 FROM {$table} WHERE {$condition} AND status=7");
+ $num1 = $t['num1'] ? dround($t['num1']) : 0;
+ $num2 = $t['num2'] ? dround($t['num2']) : 0;
+ $y1 .= $num;
+ }
+ $title = $year.'年交易报表(单位:'.$DT['money_unit'].')';
+ if($seller) $title = '['.$seller.'] '.$title;
+ }
+ include tpl('order_stats', $module);
+ break;
+ case 'refund':
+ if($td['status'] != 5) msg('此交易无需受理');
+ if($submit) {
+ isset($status) or msg('请指定受理结果');
+ strlen($content) > 5 or msg('请填写操作理由');
+ $content .= '[网站]';
+ clear_upload($content, $itemid, $table);
+ $content = dsafe(addslashes(save_remote(save_local(stripslashes($content)))));
+ if($status == 6) {//已退款,买家胜 退款
+ money_add($td['buyer'], $td['total']);
+ money_record($td['buyer'], $td['total'], $L['in_site'], 'system', '订单退款', '单号:'.$itemid.'[网站]');
+ $_msg = '受理成功,交易状态已经改变为 已退款给买家';
+ //更新商品数据 增加库存
+ if($MODULE[$td['mid']]['module'] == 'mall') {
+ $db->query("UPDATE ".get_table($td['mid'])." SET orders=orders-1,sales=sales-$td[number],amount=amount+$td[number] WHERE itemid=$mallid");
+ } else {
+ $db->query("UPDATE ".get_table($td['mid'])." SET amount=amount+$td[number] WHERE itemid=$mallid");
+ }
+ $db->query("INSERT INTO {$table_log} (oid,addtime,title,note) VALUES ('$itemid','$DT_TIME','网站退款','')");
+ } else if($status == 4) {//已退款,卖家胜 付款
+ money_add($td['seller'], $td['total']);
+ money_record($td['seller'], $td['total'], $L['in_site'], 'system', '交易成功', '单号:'.$itemid.'[网站]');
+ //网站服务费
+ $G = $db->get_one("SELECT groupid FROM {$DT_PRE}member WHERE username='".$td['seller']."'");
+ $SG = cache_read('group-'.$G['groupid'].'.php');
+ if($SG['commission']) {
+ $fee = dround($td['total']*$SG['commission']/100);
+ if($fee > 0) {
+ money_add($td['seller'], -$fee);
+ money_record($td['seller'], -$fee, $L['in_site'], 'system', $L['trade_fee'], $L['trade_order_id'].$itemid);
+ }
+ }
+ $db->query("INSERT INTO {$table_log} (oid,addtime,title,note) VALUES ('$itemid','$DT_TIME','网站拒绝','')");
+ $db->query("INSERT INTO {$table_log} (oid,addtime,title,note) VALUES ('$itemid','$DT_TIME','交易成功','')");
+ $_msg = '受理成功,交易状态已经改变为 交易成功';
+ } else {
+ msg();
+ }
+ $db->query("UPDATE {$table} SET status=$status,editor='$_username',updatetime=$DT_TIME,refund_reason='$content' WHERE itemid=$itemid");
+ $msg = isset($msg) ? 1 : 0;
+ $eml = isset($eml) ? 1 : 0;
+ $sms = isset($sms) ? 1 : 0;
+ $wec = isset($wec) ? 1 : 0;
+ if($msg == 0) $sms = $wec = 0;
+ if($msg || $eml || $sms || $wec) {
+ $reason = $content;
+ $linkurl = $MODULE[2]['linkurl'].'order.php?action=update&step=detail&itemid='.$itemid;
+
+ $result = ($status == 6 ? '退款成功' : '退款失败');
+ $subject = '您的[订单]'.dsubstr($td['title'], 30, '...').'(单号:'.$td['itemid'].')'.$result;
+ $content = '尊敬的会员: 您的[订单]'.$td['title'].'(单号:'.$td['itemid'].')'.$result.'! ';
+ if($reason) $content .= '操作原因: '.$reason.' ';
+ $content .= '请点击下面的链接查看订单详情: ';
+ $content .= ''.$linkurl.' ';
+ $content .= '如果您对此操作有异议,请及时与网站联系。 ';
+ $user = userinfo($td['buyer']);
+ if($msg) send_message($user['username'], $subject, $content);
+ if($eml) send_mail($user['email'], $subject, $content);
+ if($sms) send_sms($user['mobile'], $subject.$DT['sms_sign']);
+ if($wec) send_weixin($user['username'], $subject);
+
+ $linkurl = $MODULE[2]['linkurl'].'trade.php?action=update&step=detail&itemid='.$itemid;
+ $result = ($status == 6 ? '已经退款给买家' : '未退款给买家,交易成功');
+ $subject = '您的[订单]'.dsubstr($td['title'], 30, '...').'(单号:'.$td['itemid'].')'.$result;
+ $content = '尊敬的会员: 您的[订单]'.$td['title'].'(单号:'.$td['itemid'].')'.$result.'! ';
+ if($reason) $content .= '操作原因: '.$reason.' ';
+ $content .= '请点击下面的链接查看订单详情: ';
+ $content .= ''.$linkurl.' ';
+ $content .= '如果您对此操作有异议,请及时与网站联系。 ';
+ $user = userinfo($td['seller']);
+ if($msg) send_message($user['username'], $subject, $content);
+ if($eml) send_mail($user['email'], $subject, $content);
+ if($sms) send_sms($user['mobile'], $subject.$DT['sms_sign']);
+ if($wec) send_weixin($user['username'], $subject);
+ }
+ msg($_msg, $forward, 3);
+ } else {
+ include tpl('order_refund', $module);
+ }
+ break;
+ case 'note_add':
+ $note = str_replace(array('|', '-'), array('/', '_'), strip_tags(trim($note)));
+ strlen($note) > 3 or msg('请填写备注内容');
+ if($td['admin_note']) {
+ $note = timetodate($DT_TIME, 5)."|".$_username."|".$note."\n--------------------\n".addslashes($td['admin_note']);
+ } else {
+ $note = timetodate($DT_TIME, 5)."|".$_username."|".$note;
+ }
+ $db->query("UPDATE {$table} SET admin_note='$note' WHERE itemid=$itemid");
+ dmsg('追加成功', '?moduleid='.$moduleid.'&file='.$file.'&id='.$id.'&action=show&itemid='.$itemid);
+ break;
+ case 'note_edit':
+ $note = strip_tags($note);
+ $db->query("UPDATE {$table} SET admin_note='$note' WHERE itemid=$itemid");
+ dmsg('修改成功', '?moduleid='.$moduleid.'&file='.$file.'&id='.$id.'&action=show&itemid='.$itemid);
+ break;
+ case 'show':
+ $mid = $td['mid'];
+ $auth = encrypt('mall|'.$td['send_type'].'|'.$td['send_no'].'|'.$td['send_status'].'|'.$td['buyer_mobile'].'|'.$td['itemid'], DT_KEY.'EXPRESS');
+ $comments = array();
+ if($MODULE[$mid]['module'] == 'mall') {
+ foreach($lists as $k=>$v) {
+ $i = $v['itemid'];
+ $c = $db->get_one("SELECT * FROM {$DT_PRE}mall_comment_$v[mid] WHERE itemid=$i");
+ $c['seller_thumbs'] = $c['seller_thumbs'] ? explode('|', $c['seller_thumbs']) : array();
+ $comments[$k] = $c;
+ }
+ }
+ $id = isset($id) ? intval($id) : 0;
+ include tpl('order_show', $module);
+ break;
+ case 'delete':
+ $itemid or msg('未选择记录');
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ $db->query("DELETE FROM {$table} WHERE itemid IN ($itemids) AND mid=$moduleid");
+ dmsg('删除成功', $forward);
+ break;
+ case 'comment_edit':
+ $mid = $td['mid'];
+ $MODULE[$mid]['module'] == 'mall' or msg('此订单不支持评价');
+ $cm = $db->get_one("SELECT * FROM {$DT_PRE}mall_comment_{$mid} WHERE itemid=$itemid");
+ $cm or msg('评价不存在');
+ if($submit) {
+ $mallid = $td['mallid'];
+ $post['seller_ctime'] = $post['seller_ctime'] ? datetotime($post['seller_ctime']) : 0;
+ $post['seller_rtime'] = $post['seller_rtime'] ? datetotime($post['seller_rtime']) : 0;
+ $post['buyer_ctime'] = $post['buyer_ctime'] ? datetotime($post['buyer_ctime']) : 0;
+ $post['buyer_rtime'] = $post['buyer_rtime'] ? datetotime($post['buyer_rtime']) : 0;
+ $post['seller_star'] = intval($post['seller_star']);
+ $post['seller_star_express'] = intval($post['seller_star_express']);
+ $post['seller_star_service'] = intval($post['seller_star_service']);
+ $post['buyer_star'] = intval($post['buyer_star']);
+ if($cm['seller_star'] != $post['seller_star']) {
+ $s = $post['seller_star'];
+ $s1 = 's'.$cm['seller_star'];
+ $s2 = 's'.$post['seller_star'];
+ $db->query("UPDATE {$table} SET seller_star=$s WHERE itemid=$itemid");
+ $db->query("UPDATE {$DT_PRE}mall_stat_{$mid} SET `$s2`=`$s2`+1 WHERE mallid=$mallid");
+ if($cm['seller_star']) $db->query("UPDATE {$DT_PRE}mall_stat_{$mid} SET `$s1`=`$s1`-1 WHERE mallid=$mallid");
+ }
+ if($cm['buyer_star'] != $post['buyer_star']) {
+ $s = $post['buyer_star'];
+ $s1 = 'b'.$cm['buyer_star'];
+ $s2 = 'b'.$post['buyer_star'];
+ $db->query("UPDATE {$table} SET buyer_star=$s WHERE itemid=$itemid");
+ $db->query("UPDATE {$DT_PRE}mall_stat_{$mid} SET `$s2`=`$s2`+1 WHERE mallid=$mallid");
+ if($cm['buyer_star']) $db->query("UPDATE {$DT_PRE}mall_stat_{$mid} SET `$s1`=`$s1`-1 WHERE mallid=$mallid");
+ }
+ $thumbs = array();
+ foreach($post['thumbs'] as $v) {
+ if(is_url($v)) $thumbs[] = $v;
+ }
+ unset($post['thumbs']);
+ $post['seller_thumbs'] = $thumbs ? implode('|', $thumbs) : '';
+ if($cm['seller_video'] != $post['seller_video']) delete_upload($cm['seller_video'], match_userid($cm['seller_video']));
+ clear_upload($post['seller_thumbs'].$post['seller_video'], $itemid);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ $db->query("UPDATE {$DT_PRE}mall_comment_{$mid} SET $sql WHERE itemid=$itemid");
+ msg('修改成功', $forward);
+ }
+ $thumbs = $cm['seller_thumbs'] ? explode('|', $cm['seller_thumbs']) : array();
+ include tpl('order_comment_edit', $module);
+ break;
+ case 'comment':
+ $sfields = array('按条件', '买家评价', '卖家评价', '买家解释', '卖家解释', '图片地址', '视频地址');
+ $dfields = array('seller_comment', 'seller_comment', 'buyer_reply', 'buyer_comment', 'seller_reply', 'seller_thumbs', 'seller_video');
+ $sorder = array('排序方式', '买家评价时间降序', '买家评价时间升序', '卖家评价时间降序', '卖家评价时间升序', '买家回复时间降序', '买家回复时间升序', '卖家回复时间降序', '卖家回复时间升序', '商品评分降序', '商品评分升序', '物流服务降序', '物流服务升序', '商家态度降序', '商家态度升序');
+ $dorder = array('seller_ctime DESC', 'seller_ctime DESC', 'seller_ctime ASC', 'buyer_ctime DESC', 'buyer_ctime ASC', 'seller_rtime DESC', 'seller_rtime ASC', 'buyer_rtime DESC', 'buyer_rtime ASC', 'seller_star DESC', 'seller_star ASC', 'seller_star_express DESC', 'seller_star_express ASC', 'seller_star_service DESC', 'seller_star_service ASC');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ $itemid or $itemid = '';
+ $mallid = isset($mallid) && $mallid ? intval($mallid) : '';
+ $thumb = isset($thumb) ? intval($thumb) : 0;
+ $video = isset($video) ? intval($video) : 0;
+ $seller_star = isset($seller_star) ? intval($seller_star) : 0;
+ $seller_star_express = isset($seller_star_express) ? intval($seller_star_express) : 0;
+ $seller_star_service = isset($seller_star_service) ? intval($seller_star_service) : 0;
+ $buyer_star = isset($buyer_star) ? intval($buyer_star) : 0;
+ isset($seller) or $seller = '';
+ isset($buyer) or $buyer = '';
+ isset($send_no) or $send_no = '';
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+
+ $condition = ($seller_star > 5 || $seller_star < 1) ? "seller_star>0" : "seller_star=$seller_star";
+ if($seller_star_express) $condition .= $seller_star_express > 5 ? " AND seller_star_express>0" : " AND seller_star_express=$seller_star_express";
+ if($seller_star_service) $condition .= $seller_star_service > 5 ? " AND seller_star_service>0" : " AND seller_star_service=$seller_star_service";
+ if($buyer_star) $condition .= $buyer_star > 5 ? " AND buyer_star>0" : " AND buyer_star=$buyer_star";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($seller) $condition .= " AND seller='$seller'";
+ if($buyer) $condition .= " AND buyer='$buyer'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ if($mallid) $condition .= " AND mallid=$mallid";
+ if($thumb) $condition .= " AND seller_thumbs<>''";
+ if($video) $condition .= " AND seller_video<>''";
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_comment} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table_comment} WHERE $condition ORDER BY $dorder[$order] LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['thumbs'] = $r['seller_thumbs'] ? explode('|', $r['seller_thumbs']) : array();
+ $r['video'] = $r['seller_video'] ? $r['seller_video'] : '';
+ $lists[] = $r;
+ }
+ include tpl('order_comment', $module);
+ break;
+ case 'express':
+ $sfields = array('按条件', '商品名称', '卖家', '买家', '订单金额', '附加金额', '附加名称', '买家名称', '买家地址', '买家邮编', '买家手机', '发货快递', '发货单号', '备注');
+ $dfields = array('title', 'title', 'seller', 'buyer', 'amount', 'fee', 'fee_name', 'buyer_name', 'buyer_address', 'buyer_postcode', 'buyer_mobile', 'send_type', 'send_no', 'note');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $status = isset($status) && isset($dsend_status[$status]) ? intval($status) : '';
+ $itemid or $itemid = '';
+ $mallid = isset($mallid) && $mallid ? intval($mallid) : '';
+ isset($seller) or $seller = '';
+ isset($buyer) or $buyer = '';
+ isset($send_no) or $send_no = '';
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $status_select = dselect($dsend_status, 'status', '状态', $status, '', 1, '', 1);
+ $condition = "mid=$moduleid AND pid=0 AND send_no<>''";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($status !== '') $condition .= " AND send_status='$status'";
+ if($seller) $condition .= " AND seller='$seller'";
+ if($buyer) $condition .= " AND buyer='$buyer'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ if($mallid) $condition .= " AND mallid=$mallid";
+ if($send_no) $condition .= " AND send_no='$send_no'";
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table} WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['addtime'] = timetodate($r['addtime'], 5);
+ $r['updatetime'] = timetodate($r['updatetime'], 5);
+ $lists[] = $r;
+ }
+ include tpl('order_express', $module);
+ break;
+ default:
+ $sfields = array('按条件', '商品名称', '卖家', '买家', '订单金额', '附加金额', '附加名称', '买家名称', '买家地址', '买家邮编', '买家手机', '发货快递', '发货单号', '买家备注', '卖家备注', '管理备注');
+ $dfields = array('title', 'title', 'seller', 'buyer', 'amount', 'fee', 'fee_name', 'buyer_name', 'buyer_address', 'buyer_postcode', 'buyer_mobile', 'send_type', 'send_no', 'note', 'seller_note', 'admin_note');
+ $sorder = array('排序方式', '下单时间降序', '下单时间升序', '更新时间降序', '更新时间升序', '商品单价降序', '商品单价升序', '购买数量降序', '购买数量升序', '订单金额降序', '订单金额升序', '附加金额降序', '附加金额升序', '订单状态降序', '订单状态升序');
+ $dorder = array('itemid DESC', 'addtime DESC', 'addtime ASC', 'updatetime DESC', 'updatetime ASC', 'price DESC', 'price ASC', 'number DESC', 'number ASC', 'amount DESC', 'amount ASC', 'fee DESC', 'fee ASC', 'status DESC', 'status ASC');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ $status = isset($status) && isset($dstatus[$status]) ? intval($status) : '';
+ $itemid or $itemid = '';
+ $mallid = isset($mallid) && $mallid ? intval($mallid) : '';
+ $id = isset($id) ? intval($id) : 0;
+ $seller_star = isset($seller_star) ? intval($seller_star) : 0;
+ $buyer_star = isset($buyer_star) ? intval($buyer_star) : 0;
+ isset($seller) or $seller = '';
+ isset($buyer) or $buyer = '';
+ isset($amounts) or $amounts = '';
+ (isset($skuid) && is_skuid($skuid)) or $skuid = '';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ isset($datetype) && in_array($datetype, array('addtime', 'updatetime')) or $datetype = 'addtime';
+ isset($mtype) && in_array($mtype, array('money', 'amount', 'price', 'fee', 'number')) or $mtype = 'money';
+ isset($minamount) or $minamount = '';
+ isset($maxamount) or $maxamount = '';
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $status_select = dselect($dstatus, 'status', '状态', $status, 'style="width:200px;"', 1, '', 1);
+ $order_select = dselect($sorder, 'order', '', $order);
+ $condition = "mid=$moduleid";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND $datetype>=$fromtime";
+ if($totime) $condition .= " AND $datetype<=$totime";
+ if($status !== '') $condition .= " AND status='$status'";
+ if($seller) $condition .= " AND seller='$seller'";
+ if($buyer) $condition .= " AND buyer='$buyer'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ if($mallid) $condition .= " AND mallid=$mallid";
+ if($skuid) $condition .= " AND skuid='$skuid'";
+ if($id) $condition .= " AND mallid=$id";
+ if($seller_star) $condition .= $seller_star > 5 ? " AND seller_star>0" : " AND seller_star=$seller_star";
+ if($buyer_star) $condition .= $buyer_star > 5 ? " AND buyer_star>0" : " AND buyer_star=$buyer_star";
+ if($mtype == 'money') $mtype = "`amount`+`fee`";
+ if($minamount != '') $condition .= " AND $mtype>=$minamount";
+ if($maxamount != '') $condition .= " AND $mtype<=$maxamount";
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = $tags = $pids = array();
+ $amount = $fee = $money = 0;
+ $result = $db->query("SELECT pid,itemid FROM {$table} WHERE $condition ORDER BY $dorder[$order] LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $pid = $r['pid'] ? $r['pid'] : $r['itemid'];
+ $pids[$pid] = $pid;
+ }
+ if($pids) {
+ $result = $db->query("SELECT * FROM {$table} WHERE itemid IN (".implode(',', $pids).") ORDER BY $dorder[$order]");
+ while($r = $db->fetch_array($result)) {
+ $r['addtime'] = str_replace(' ', ' ', timetodate($r['addtime'], 5));
+ $r['updatetime'] = str_replace(' ', ' ', timetodate($r['updatetime'], 5));
+ $r['linkurl'] = DT_PATH.'api/redirect.php?mid='.$r['mid'].'&itemid='.$r['mallid'];
+ $r['dstatus'] = $_status[$r['status']];
+ $r['money'] = $r['amount'] + $r['fee'];
+ $r['money'] = number_format($r['money'], 2, '.', '');
+ $amount += $r['amount'];
+ $fee += $r['fee'];
+ $lists[] = $r;
+ }
+ $result = $db->query("SELECT * FROM {$table} WHERE pid IN (".implode(',', $pids).") ORDER BY itemid DESC");
+ while($r = $db->fetch_array($result)) {
+ $r['par'] = '';
+ if(strpos($r['note'], '|') !== false) list($r['note'], $r['par']) = explode('|', $r['note']);
+ $r['linkurl'] = DT_PATH.'api/redirect.php?mid='.$r['mid'].'&itemid='.$r['mallid'];
+ $tags[$r['pid']][] = $r;
+ }
+ }
+ $money = $amount + $fee;
+ $money = number_format($money, 2, '.', '');
+ include tpl('order', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/mall/admin/remkdir.inc.php b/module/mall/admin/remkdir.inc.php
new file mode 100644
index 0000000..8d657af
--- /dev/null
+++ b/module/mall/admin/remkdir.inc.php
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/module/mall/admin/setting.inc.php b/module/mall/admin/setting.inc.php
new file mode 100644
index 0000000..f8cff99
--- /dev/null
+++ b/module/mall/admin/setting.inc.php
@@ -0,0 +1,51 @@
+$v) {
+ if(strpos($k, 'seo_') === false) continue;
+ seo_check($v) or msg('SEO信息包含非法字符');
+ }
+ update_setting($moduleid, $setting);
+ cache_module($moduleid);
+ if($setting['php_list_urlid'] != $MOD['php_list_urlid'] || $setting['htm_list_urlid'] != $MOD['htm_list_urlid'] || $setting['htm_list_prefix'] != $MOD['htm_list_prefix'] || $setting['list_html'] != $MOD['list_html']) {
+ $_MOD = $MOD;
+ $MOD = $setting;
+ $result = $db->query("SELECT * FROM {$DT_PRE}category WHERE moduleid=$moduleid");
+ while($r = $db->fetch_array($result)) {
+ update_category($r);
+ }
+ cache_category($moduleid);
+ $MOD = $_MOD;
+ }
+ if($setting['php_item_urlid'] != $MOD['php_item_urlid'] || $setting['htm_item_urlid'] != $MOD['htm_item_urlid'] || $setting['htm_item_prefix'] != $MOD['htm_item_prefix'] || $setting['show_html'] != $MOD['show_html']) {
+ msg('设置保存成功,开始更新地址', '?moduleid='.$moduleid.'&file=html&action=show&update=1&num=1000');
+ }
+ dmsg('设置保存成功', '?moduleid='.$moduleid.'&file='.$file.'&tab='.$tab);
+} else {
+ $GROUP = cache_read('group.php');
+ $r = $db->get_one("SELECT MAX(itemid) AS maxid FROM {$table}");
+ $maxid = $r['maxid'];
+ extract(dhtmlspecialchars($MOD));
+ if($kw) {
+ $all = 1;
+ ob_start();
+ }
+ include tpl('setting', $module);
+ if($kw) {
+ $data = $content = ob_get_contents();
+ ob_clean();
+ $data = preg_replace('\'(?!((<.*?)|(]*?)>)|([^>]*?)|([^>]*?))\'si', ''.$kw.' ', $data);
+ $data = preg_replace('//', '', $data, 1);
+ echo $data ? $data : $content;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/mall/admin/template/html.tpl.php b/module/mall/admin/template/html.tpl.php
new file mode 100644
index 0000000..339891c
--- /dev/null
+++ b/module/mall/admin/template/html.tpl.php
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/mall/admin/template/index.html b/module/mall/admin/template/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/mall/admin/template/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/mall/admin/template/index.tpl.php b/module/mall/admin/template/index.tpl.php
new file mode 100644
index 0000000..672228f
--- /dev/null
+++ b/module/mall/admin/template/index.tpl.php
@@ -0,0 +1,174 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+取消', 0, 'onchange="this.form.action=\'?moduleid='.$moduleid.'&file='.$file.'&action=level\';this.form.submit();"');?>
+
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/mall/admin/template/order_comment.tpl.php b/module/mall/admin/template/order_comment.tpl.php
new file mode 100644
index 0000000..cd10892
--- /dev/null
+++ b/module/mall/admin/template/order_comment.tpl.php
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+
+
+
+
+订单号
+商品ID
+买家
+买家评价
+卖家
+卖家评价
+修改
+
+$v) {?>
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/mall/admin/template/order_express.tpl.php b/module/mall/admin/template/order_express.tpl.php
new file mode 100644
index 0000000..13b6875
--- /dev/null
+++ b/module/mall/admin/template/order_express.tpl.php
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+订单单号
+快递公司
+快递单号
+快递状态
+卖家
+买家
+下单时间
+更新时间
+
+$v) {?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/mall/admin/template/order_refund.tpl.php b/module/mall/admin/template/order_refund.tpl.php
new file mode 100644
index 0000000..843fff0
--- /dev/null
+++ b/module/mall/admin/template/order_refund.tpl.php
@@ -0,0 +1,191 @@
+
+
+
+
+
+
+
+
+商品信息
+
+
+订单单号
+
+
+
+商品名称
+
+
+
+商品图片
+
+
+
+
+规格参数
+
+
+
+
+卖家
+
+
+
+买家
+
+
+
+快递信息
+
+
+邮编
+
+
+
+地址
+
+
+
+姓名
+
+
+
+手机
+
+
+ 0) { ?>
+
+快递类型
+
+
+
+快递单号
+
+
+
+
+追踪结果
+ 正在查询...
+
+
+
+
+
+
+买家留言
+
+
+
+价格信息
+
+
+单价
+
+
+
+数量
+
+
+0) { ?>
+
+
+
+
+
+
+总额
+
+
+
+订单详情
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/mall/admin/template/order_show.tpl.php b/module/mall/admin/template/order_show.tpl.php
new file mode 100644
index 0000000..85a0494
--- /dev/null
+++ b/module/mall/admin/template/order_show.tpl.php
@@ -0,0 +1,256 @@
+
+
+
+快递信息
+
+
+邮编
+
+
+
+地址
+
+
+
+姓名
+
+
+
+手机
+
+
+ 0) { ?>
+
+快递类型
+
+
+
+快递单号
+ [快递追踪]
+
+
+追踪结果
+ 正在查询...
+
+
+
+
+
+订单详情
+
+
+卖家
+
+
+
+买家
+
+
+
+
+订单进程
+
+
+
+ -
+
+
+
+
+
+
+下单时间
+
+
+
+最后更新
+
+
+
+
+发货时间
+
+
+
+
+
+交易状态
+
+
+
+
+商家备注
+
+
+
+
+
+退款原因
+
+
+
+
+
+操作原因
+
+
+
+操作人
+
+
+
+操作时间
+
+
+
+
+
+
+
+
+ $v) { ?>
+
+商品名称
+
+
+
+
+商品打分
+
+
+
+物流服务
+
+
+
+商家态度
+
+
+
+买家评论
+
+
+
+
+买家图片
+
+
+
+
+
+
+
+
+
+买家视频
+
+
+
+
+评论时间
+
+
+
+
+卖家解释
+
+
+
+解释时间
+
+
+
+
+
+买家评论
+暂未评论
+
+
+
+
+
+
+
+ $v) { ?>
+
+商品名称
+
+
+
+
+卖家评分
+
+
+
+
+
+卖家评论
+
+
+
+评论时间
+
+
+
+
+买家解释
+
+
+
+解释时间
+
+
+
+
+
+卖家评论
+暂未评论
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/mall/admin/template/order_stats.tpl.php b/module/mall/admin/template/order_stats.tpl.php
new file mode 100644
index 0000000..054d627
--- /dev/null
+++ b/module/mall/admin/template/order_stats.tpl.php
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+选择年
+= 2000; $i--) { ?>
+>年
+
+
+
+选择月
+
+>月
+
+
+卖家:
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/mall/admin/template/relate.tpl.php b/module/mall/admin/template/relate.tpl.php
new file mode 100644
index 0000000..21d78d6
--- /dev/null
+++ b/module/mall/admin/template/relate.tpl.php
@@ -0,0 +1,64 @@
+
+关联商品
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/mall/admin/template/setting.tpl.php b/module/mall/admin/template/setting.tpl.php
new file mode 100644
index 0000000..f8ed54e
--- /dev/null
+++ b/module/mall/admin/template/setting.tpl.php
@@ -0,0 +1,508 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/mall/admin/template/view.tpl.php b/module/mall/admin/template/view.tpl.php
new file mode 100644
index 0000000..8f5b821
--- /dev/null
+++ b/module/mall/admin/template/view.tpl.php
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/mall/admin/uninstall.inc.php b/module/mall/admin/uninstall.inc.php
new file mode 100644
index 0000000..6fb8286
--- /dev/null
+++ b/module/mall/admin/uninstall.inc.php
@@ -0,0 +1,9 @@
+query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_data_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_comment_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_express_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_stat_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_view_".$moduleid."`");
+?>
\ No newline at end of file
diff --git a/module/mall/admin/view.inc.php b/module/mall/admin/view.inc.php
new file mode 100644
index 0000000..82f166a
--- /dev/null
+++ b/module/mall/admin/view.inc.php
@@ -0,0 +1,68 @@
+query("DELETE FROM {$table_view} WHERE lasttime<$time");
+ dmsg('清理成功', '?moduleid='.$moduleid.'&file='.$file);
+ break;
+ case 'delete':
+ isset($uids) or $uids = '';
+ ($uids && is_array($uids)) or msg('未选择记录');
+ foreach($uids as $uid) {
+ $db->query("DELETE FROM {$table_view} WHERE uid='$uid'");
+ }
+ dmsg('删除成功', $forward);
+ break;
+ default:
+ $itemid or $itemid = '';
+ isset($seller) or $seller = '';
+ isset($buyer) or $buyer = '';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ $condition = "1";
+ if($fromtime) $condition .= " AND lasttime>=$fromtime";
+ if($totime) $condition .= " AND lasttime<=$totime";
+ if($seller) $condition .= " AND seller='$seller'";
+ if($buyer) $condition .= " AND username='$buyer'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_view} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = $tags = $views = $ids = array();
+ $result = $db->query("SELECT * FROM {$table_view} WHERE $condition ORDER BY lasttime DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $ids[] = $r['itemid'];
+ $views[] = $r;
+ }
+ if($ids) {
+ $result = $db->query("SELECT * FROM {$table} WHERE itemid IN (".implode(',', $ids).") ORDER BY addtime DESC");
+ while($r = $db->fetch_array($result)) {
+ if($r['status'] != 3) continue;
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[$r['itemid']] = $r;
+ }
+ foreach($views as $v) {
+ if(!isset($tags[$v['itemid']])) continue;
+ $tags[$v['itemid']]['uid'] = $v['uid'];
+ $tags[$v['itemid']]['buyer'] = $v['username'];
+ $tags[$v['itemid']]['lasttime'] = $v['lasttime'];
+ $lists[] = $tags[$v['itemid']];
+ }
+ }
+ include tpl('view', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/mall/compare.inc.php b/module/mall/compare.inc.php
new file mode 100644
index 0000000..c6c6c12
--- /dev/null
+++ b/module/mall/compare.inc.php
@@ -0,0 +1,41 @@
+without_permission'), 'goback');
+$itemid && is_array($itemid) or dalert($L['compare_choose'], 'goback');
+if(is_array($itemid)) {
+ $DT_URL = $MOD['linkurl'].'compare.php?';
+ foreach($itemid as $id) {
+ $DT_URL .= '&itemid[]='.$id;
+ }
+ $DT_URL = str_replace('?&', '?', $DT_URL);
+}
+$itemid = array_unique($itemid);
+$item_nums = count($itemid);
+$item_nums < 7 or dalert($L['compare_max'], 'goback');
+$item_nums > 1 or dalert($L['compare_min'], 'goback');
+$itemid = implode(',', $itemid);
+$tags = array();
+$result = $db->query("SELECT * FROM {$table} WHERE itemid IN ($itemid) ORDER BY addtime DESC");
+while($r = $db->fetch_array($result)) {
+ if($r['status'] != 3) continue;
+ $r['editdate'] = timetodate($r['edittime'], 3);
+ $r['adddate'] = timetodate($r['addtime'], 3);
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['userurl'] = userurl($r['username']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $r['mobile'] = $MOD['mobile'].$r['linkurl'];
+ $tags[] = $r;
+}
+$head_title = $L['compare_title'].$DT['seo_delimiter'].$MOD['name'];
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+} else {
+ $forward = $MOD['mobile'];
+ $head_title = $L['compare_title'];
+ $foot = '';
+}
+include template($MOD['template_compare'] ? $MOD['template_compare'] : 'compare', $module);
+?>
\ No newline at end of file
diff --git a/module/mall/index.htm.php b/module/mall/index.htm.php
new file mode 100644
index 0000000..6ba7a20
--- /dev/null
+++ b/module/mall/index.htm.php
@@ -0,0 +1,48 @@
+get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].'index.php?page={destoon_page}');
+ $tags = array();
+ if($items) {
+ $order = $MOD['order'];
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 3);
+ $r['thumb'] = str_replace('.thumb.', '.middle.', $r['thumb']);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put(str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename), $data);
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/mall/index.html b/module/mall/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/mall/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/mall/mall.class.php b/module/mall/mall.class.php
new file mode 100644
index 0000000..2392eac
--- /dev/null
+++ b/module/mall/mall.class.php
@@ -0,0 +1,553 @@
+moduleid = $moduleid;
+ $this->table = $table;
+ $this->table_data = $table_data;
+ $this->split = $MOD['split'];
+ $this->fields = array('catid','mycatid','areaid','level','title','style','subtitle','subtext','sublink','fee','introduce','brand','skuid','price','step','stock','amount','unit','thumb','thumb1','thumb2','thumbs','video','tag','status','hits','username','editor','addtime','adddate','edittime','editdate','ip','template','linkurl','filepath','elite','note','company','truename','telephone','mobile','address','email','qq','wx','ali','skype','n1','n2','n3','v1','v2','v3','prices','express_1','express_name_1','fee_start_1','fee_step_1','express_2','express_name_2','fee_start_2','fee_step_2','express_3','express_name_3','fee_start_3','fee_step_3','cod');
+ }
+
+ function mall($moduleid) {
+ $this->__construct($moduleid);
+ }
+
+ function pass($post) {
+ global $MOD;
+ if(!is_array($post)) return false;
+ if(!$post['catid']) return $this->_(lang('message->pass_cate'));
+ if(strlen($post['title']) < 3) return $this->_(lang('message->pass_title'));
+ if(dround($post['step']['p1']) < 0.01) return $this->_(lang('message->pass_mall_price'));
+ if(intval($post['amount']) < 1) return $this->_(lang('message->pass_mall_amount'));
+ if(!is_url($post['thumbs'][0])) return $this->_(lang('message->pass_thumb'));
+ if(!$post['content']) return $this->_(lang('message->pass_content'));
+ if(DT_MAX_LEN && strlen(clear_img($post['content'])) > DT_MAX_LEN) $this->_(lang('message->pass_max'));
+ if(!$this->pass_nv($post)) return $this->_(lang('message->pass_nv'));
+ if(!$this->pass_step($post)) return $this->_(lang('message->pass_mall_step'));
+ if(!$this->pass_muti($post)) return $this->_(lang('message->pass_mall_muti'));
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $_username, $_userid, $_cname;
+ $thumbs = array();
+ foreach($post['thumbs'] as $v) {
+ if(is_url($v)) $thumbs[] = $v;
+ }
+ if($thumbs) {
+ $post['thumb'] = $thumbs[0];
+ array_shift($thumbs);
+ $post['thumbs'] = implode('|', $thumbs);
+ } else {
+ $post['thumb'] = $post['thumbs'] = '';
+ }
+ $post['thumb1'] = $post['thumb2'] = '';
+ is_url($post['video']) or $post['video'] = '';
+ (is_skuid($post['skuid']) && $this->pass_skuid($post)) or $post['skuid'] = '';
+ $post['sublink'] = $this->sublink($post['sublink']);
+ $post['filepath'] = (isset($post['filepath']) && is_filepath($post['filepath'])) ? file_vname($post['filepath']) : '';
+ $post['addtime'] = (isset($post['addtime']) && is_time($post['addtime'])) ? datetotime($post['addtime']) : DT_TIME;
+ $post['adddate'] = timetodate($post['addtime'], 3);
+ $post['editor'] = $_cname ? $_cname : $_username;
+ $post['edittime'] = DT_TIME;
+ $post['editdate'] = timetodate($post['edittime'], 3);
+ $post['fee'] = dround($post['fee']);
+ $post['price'] = dround($post['step']['p1'], 2, 1);
+ if($post['mode'] == 3) {
+ $post['step'] = array();
+ $post['prices'] = $post['skuid'] = '';
+ $post['stock'] = array_map("intval", $post['stock']);
+ } else if($post['mode'] == 2) {
+ $post['stock'] = array();
+ $post['prices'] = '';
+ $post['step']['a1'] = intval($post['step']['a1']);
+ $post['step']['p1'] = dround($post['step']['p1'], 2, 1);
+ $post['step']['a2'] = intval($post['step']['a2']);
+ $post['step']['p2'] = dround($post['step']['p2'], 2, 1);
+ $post['step']['a3'] = intval($post['step']['a3']);
+ $post['step']['p3'] = dround($post['step']['p3'], 2, 1);
+ $post['step']['is'] = $post['step']['a2'] ? 'Y' : 'N';
+ count($post['step']) == 7 or $post['step'] = '';
+ } else if($post['mode'] == 1) {
+ $post['step'] = $post['stock'] = array();
+ $tmp = explode('|', $post['prices']);
+ foreach($tmp as $k=>$v) {
+ $tmp[$k] = dround($v, 2, 1);
+ }
+ $post['price'] = $tmp[0];
+ $post['prices'] = implode('|', $tmp);
+ } else {
+ $post['step'] = $post['stock'] = array();
+ $post['prices'] = '';
+ }
+ $post['amount'] = intval($post['amount']);
+ $post['mycatid'] = intval($post['mycatid']);
+ $post['elite'] = $post['elite'] ? 1 : 0;
+ if(strpos($post['v1'], '|') === false) $post['n1'] = $post['v1'] = '';
+ if(strpos($post['v2'], '|') === false) $post['n2'] = $post['v2'] = '';
+ if(strpos($post['v3'], '|') === false) $post['n3'] = $post['v3'] = '';
+ $post['express_1'] = intval($post['express_1']);
+ $post['fee_start_1'] = dround($post['fee_start_1']);
+ $post['fee_step_1'] = dround($post['fee_step_1']);
+ $post['express_2'] = intval($post['express_2']);
+ $post['fee_start_2'] = dround($post['fee_start_2']);
+ $post['fee_step_2'] = dround($post['fee_step_2']);
+ $post['express_3'] = intval($post['express_3']);
+ $post['fee_start_3'] = dround($post['fee_start_3']);
+ $post['fee_step_3'] = dround($post['fee_step_3']);
+ $post['cod'] = intval($post['cod']);
+ $post['content'] = stripslashes($post['content']);
+ $post['content'] = save_local($post['content']);
+ if($MOD['clear_link']) $post['content'] = clear_link($post['content']);
+ if($MOD['save_remotepic']) $post['content'] = save_remote($post['content']);
+ if($MOD['introduce_length']) $post['introduce'] = addslashes(get_intro($post['content'], $MOD['introduce_length']));
+ if($this->itemid) {
+ $new = $post['content'];
+ $new .= ' ';
+ foreach($thumbs as $v) {
+ $new .= ' ';
+ }
+ $r = $this->get_one();
+ $old = $r['content'];
+ $old .= ' ';
+ foreach(explode('|', $r['thumbs']) as $v) {
+ $old .= ' ';
+ }
+ delete_diff($new, $old);
+ if($r['video'] != $post['video']) delete_upload($r['video'], match_userid($r['video']));
+ } else {
+ $post['ip'] = DT_IP;
+ }
+ $content = $post['content'];
+ unset($post['content']);
+ $post = dhtmlspecialchars($post);
+ $post['step'] = $post['step'] ? serialize($post['step']) : '';
+ $post['stock'] = $post['stock'] ? serialize($post['stock']) : '';
+ $post['content'] = addslashes(dsafe($content));
+ return array_map("trim", $post);
+ }
+
+ function get_one() {
+ $r = DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$this->itemid");
+ if($r) {
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ $t = DB::get_one("SELECT content FROM {$content_table} WHERE itemid=$this->itemid");
+ $r['content'] = $t ? $t['content'] : '';
+ return $r;
+ } else {
+ return array();
+ }
+ }
+
+ function get_list($condition = 'status=3', $order = 'edittime DESC', $cache = '') {
+ global $MOD, $pages, $page, $pagesize, $offset, $items, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition", $cache);
+ $items = $r['num'];
+ }
+ $pages = defined('CATID') ? listpages(1, CATID, $items, $page, $pagesize, 10, $MOD['linkurl']) : pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = $catids = $CATS = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize", $cache);
+ while($r = DB::fetch_array($result)) {
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['userurl'] = userurl($r['username']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $catids[$r['catid']] = $r['catid'];
+ $lists[] = $r;
+ }
+ if($catids) {
+ $result = DB::query("SELECT catid,catname,linkurl FROM ".DT_PRE."category WHERE catid IN (".implode(',', $catids).")");
+ while($r = DB::fetch_array($result)) {
+ $CATS[$r['catid']] = $r;
+ }
+ if($CATS) {
+ foreach($lists as $k=>$v) {
+ $lists[$k]['catname'] = $v['catid'] ? $CATS[$v['catid']]['catname'] : '';
+ $lists[$k]['caturl'] = $v['catid'] ? $MOD['linkurl'].$CATS[$v['catid']]['linkurl'] : '';
+ }
+ }
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $MOD;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ DB::query("REPLACE INTO {$content_table} (itemid,content) VALUES ('$this->itemid', '$post[content]')");
+ $this->update($this->itemid);
+ if($post['status'] == 3 && $post['username'] && $MOD['credit_add']) {
+ credit_add($post['username'], $MOD['credit_add']);
+ credit_record($post['username'], $MOD['credit_add'], 'system', lang('my->credit_record_add', array($MOD['name'])), 'ID:'.$this->itemid);
+ }
+ clear_upload($post['content'].$post['thumb'].$post['thumbs'].$post['video'], $this->itemid);
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $this->delete($this->itemid, false);
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ DB::query("REPLACE INTO {$content_table} (itemid,content) VALUES ('$this->itemid', '$post[content]')");
+ $this->update($this->itemid);
+ clear_upload($post['content'].$post['thumb'].$post['thumbs'].$post['video'], $this->itemid);
+ if($post['status'] > 2) {
+ history($this->moduleid, $this->itemid, 'del');
+ $this->tohtml($this->itemid, $post['catid']);
+ }
+ return true;
+ }
+
+ function tohtml($itemid = 0, $catid = 0) {
+ global $module, $MOD;
+ if($MOD['show_html'] && $itemid) tohtml('show', $module, "itemid=$itemid");
+ }
+
+ function update($itemid) {
+ $item = DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$itemid");
+ $update = '';
+ $keyword = $item['title'].','.($item['brand'] ? $item['brand'].',' : '').strip_tags(cat_pos(get_cat($item['catid']), ','));
+ if($keyword != $item['keyword']) {
+ $keyword = str_replace("//", '', addslashes($keyword));
+ $update .= ",keyword='$keyword'";
+ }
+ $video = url2video($item['video']);
+ if($video && $video != $item['video']) $update .= ",video='$video'";
+ $item['itemid'] = $itemid;
+ $linkurl = itemurl($item);
+ if($linkurl != $item['linkurl']) $update .= ",linkurl='$linkurl'";
+ $member = $item['username'] ? userinfo($item['username']) : array();
+ if($member) $update .= update_user($member, $item);
+ if($update) DB::query("UPDATE {$this->table} SET ".(substr($update, 1))." WHERE itemid=$itemid");
+ }
+
+ function recycle($itemid) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->recycle($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=0 WHERE itemid=$itemid");
+ $this->delete($itemid, false);
+ return true;
+ }
+ }
+
+ function restore($itemid) {
+ global $module, $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->restore($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=3 WHERE itemid=$itemid");
+ if($MOD['show_html']) tohtml('show', $module, "itemid=$itemid");
+ return true;
+ }
+ }
+
+ function delete($itemid, $all = true) {
+ global $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->delete($v, $all);
+ }
+ } else {
+ $this->itemid = $itemid;
+ $r = $this->get_one();
+ if($MOD['show_html']) {
+ $_file = DT_ROOT.'/'.$MOD['moduledir'].'/'.$r['linkurl'];
+ html_del($_file);
+ }
+ if($all) {
+ $userid = get_user($r['username']);
+ if($r['video']) delete_upload($r['video'], $userid);
+ if($r['thumb']) delete_upload($r['thumb'], $userid);
+ if($r['thumbs']) {
+ foreach(explode('|', $r['thumbs']) as $v) {
+ if($v) delete_upload($v, $userid);
+ }
+ }
+ if($r['content']) delete_local($r['content'], $userid);
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ DB::query("DELETE FROM {$content_table} WHERE itemid=$itemid");
+ if($MOD['cat_property']) DB::query("DELETE FROM ".DT_PRE."category_value WHERE moduleid=$this->moduleid AND itemid=$itemid");
+ if($r['username'] && $MOD['credit_del']) {
+ credit_add($r['username'], -$MOD['credit_del']);
+ credit_record($r['username'], -$MOD['credit_del'], 'system', lang('my->credit_record_del', array($MOD['name'])), 'ID:'.$this->itemid);
+ }
+ history($this->moduleid, $itemid, 'del');
+ }
+ }
+ }
+
+ function check($itemid) {
+ global $_username, $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->check($v); }
+ } else {
+ $this->itemid = $itemid;
+ $item = $this->get_one();
+ if($MOD['credit_add'] && $item['username'] && $item['hits'] < 1) {
+ credit_add($item['username'], $MOD['credit_add']);
+ credit_record($item['username'], $MOD['credit_add'], 'system', lang('my->credit_record_add', array($MOD['name'])), 'ID:'.$this->itemid);
+ }
+ $editdate = timetodate(DT_TIME, 3);
+ DB::query("UPDATE {$this->table} SET status=3,editor='$_username',edittime=".DT_TIME.",editdate='$editdate' WHERE itemid=$itemid");
+ history($this->moduleid, $itemid, 'del');
+ $this->tohtml($itemid);
+ return true;
+ }
+ }
+
+ function reject($itemid) {
+ global $_username;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->reject($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=1,editor='$_username' WHERE itemid=$itemid");
+ return true;
+ }
+ }
+
+ function unsale($itemid) {
+ global $_username;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->unsale($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=4,editor='$_username' WHERE itemid=$itemid");
+ return true;
+ }
+ }
+
+ function onsale($itemid) {
+ global $_username;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->onsale($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=3,editor='$_username' WHERE itemid=$itemid");
+ return true;
+ }
+ }
+
+ function clear($condition = 'status=0') {
+ $result = DB::query("SELECT itemid FROM {$this->table} WHERE $condition");
+ while($r = DB::fetch_array($result)) {
+ $this->delete($r['itemid']);
+ }
+ }
+
+ function level($itemid, $level) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET level=$level WHERE itemid IN ($itemids)");
+ }
+
+ function type($itemid, $typeid) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET typeid=$typeid WHERE itemid IN ($itemids)");
+ }
+
+ function refresh($itemid) {
+ $editdate = timetodate(DT_TIME, 3);
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET edittime='".DT_TIME."',editdate='$editdate' WHERE itemid IN ($itemids)");
+ }
+
+ function relate_add($M, $A, $N) {
+ if($M['relate_id']) {
+ $itemids = $M['relate_id'];
+ if(strpos(','.$M['relate_id'].',', ','.$A['itemid'].',') === false) {
+ $itemids = $M['relate_id'].','.$A['itemid'];
+ }
+ } else {
+ $itemids = $M['itemid'].','.$A['itemid'];
+ }
+ DB::query("UPDATE {$this->table} SET relate_id='$itemids',relate_name='$N' WHERE itemid IN ($itemids)");
+ }
+
+ function relate_del($M, $A) {
+ if($M['relate_id'] == $A['relate_id']) {
+ $ids = explode(',', $M['relate_id']);
+ foreach($ids as $k=>$v) {
+ if($v == $A['itemid']) unset($ids[$k]);
+ }
+ DB::query("UPDATE {$this->table} SET relate_id='',relate_name='',relate_title='' WHERE itemid=$A[itemid]");
+ $itemids = implode(',', $ids);
+ if(is_numeric($itemids)) {
+ DB::query("UPDATE {$this->table} SET relate_id='',relate_name='',relate_title='' WHERE itemid=$itemids");
+ } else {
+ DB::query("UPDATE {$this->table} SET relate_id='$itemids' WHERE itemid IN ($itemids)");
+ }
+ }
+ }
+
+ function relate($M, $P, $N) {
+ $S = $I = array();
+ foreach($P as $k=>$v) {
+ $k = intval($k);
+ $S[$k] = intval($v['listorder']);
+ }
+ asort($S);
+ foreach($S as $k=>$v) {
+ $I[] = $k;
+ }
+ $itemids = implode(',', $I);
+ foreach($P as $k=>$v) {
+ $k = intval($k);
+ $T = dhtmlspecialchars(trim($v['relate_title']));
+ DB::query("UPDATE {$this->table} SET relate_id='$itemids',relate_name='$N',relate_title='$T' WHERE itemid=$k");
+ }
+ }
+
+ function relate_list($M) {
+ if($M['relate_id']) {
+ $ids = $M['relate_id'];
+ $lists = $tags = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE itemid IN ($ids)");
+ while($r = DB::fetch_array($result)) {
+ $tags[$r['itemid']] = $r;
+ }
+ foreach(explode(',', $ids) as $v) {
+ $lists[] = $tags[$v];
+ }
+ return $lists;
+ } else {
+ return array(0 => $M);
+ }
+ }
+
+ function sublink($url) {
+ if(!is_url($url)) return '';
+ if(strpos($url, 'redirect.php') !== false) return '';
+ $dom = DT_DOMAIN ? DT_DOMAIN : cutstr(DT_PATH, '://', '/');
+ if(strpos(cutstr($url, '://', '/'), $dom) === false) return '';
+ return $url;
+ }
+
+ function pass_nv($post) {
+ if($post['n1']) {
+ if(!$post['v1']) return false;
+ } else {
+ if($post['v1']) return false;
+ }
+ if($post['n2']) {
+ if(!$post['v1']) return false;
+ if(!$post['v2']) return false;
+ if($post['n2'] == $post['n1']) return false;
+ } else {
+ if($post['v2']) return false;
+ }
+ if($post['n3']) {
+ if(!$post['v1']) return false;
+ if(!$post['v2']) return false;
+ if(!$post['v3']) return false;
+ if($post['n3'] == $post['n2']) return false;
+ } else {
+ if($post['v3']) return false;
+ }
+ if($post['mode'] == 3) {
+ if(!$post['v1']) return false;
+ }
+ if($post['mode'] == 1) {
+ if(!$post['v1']) return false;
+ if(substr_count($post['v1'], '|') != substr_count($post['prices'], '|')) return false;
+ foreach(explode('|', $post['prices']) as $v) {
+ $v = dround($v);
+ if($v < 0.01) return false;
+ }
+ }
+ return true;
+ }
+
+ function pass_step($post) {
+ if($post['mode'] != 2) return true;
+ $a1 = intval($post['step']['a1']);
+ $p1 = dround($post['step']['p1'], 2, 1);
+ $a2 = intval($post['step']['a2']);
+ $p2 = dround($post['step']['p2'], 2, 1);
+ $a3 = intval($post['step']['a3']);
+ $p3 = dround($post['step']['p3'], 2, 1);
+ if($a1 < 1) return false;
+ if($p1 < 0.01) return false;
+ if($a2 > 1) {
+ if($a2 <= $a1) return false;
+ if($p2 >= $p1) return false;
+ } else {
+ if($p2 > 0.00) return false;
+ }
+ if($a3 > 1) {
+ if($a3 <= $a2) return false;
+ if($p3 >= $p2) return false;
+ } else {
+ if($p3 > 0.00) return false;
+ }
+ return true;
+ }
+
+ function pass_muti($post) {
+ if($post['mode'] != 3) return true;
+ if(strlen(trim($post['v1'])) < 1) return false;
+ if(intval($post['stock']['0-0-0']) < 1) return false;
+ foreach($post['stock'] as $k=>$v) {
+ $itemid = intval($v);
+ if($itemid > 0) {
+ $t = DB::get_one("SELECT username FROM ".DT_PRE."stock WHERE itemid=$itemid");
+ if(!$t || $t['username'] != $post['username']) return false;
+ }
+ }
+ return true;
+ }
+
+ function pass_skuid($post) {
+ $t = DB::get_one("SELECT itemid FROM ".DT_PRE."stock WHERE skuid='$post[skuid]' AND username='$post[username]'");
+ return $t ? true : false;
+ }
+
+ function muti_fix($post) {
+ $username = $post['username'];
+ foreach($post['stock'] as $k=>$v) {
+ if(is_skuid($v)) {
+ $t = DB::get_one("SELECT itemid,price,unit,amount FROM ".DT_PRE."stock WHERE skuid='$v' AND username='$username'");
+ if($t) {
+ $post['stock'][$k] = $t['itemid'];
+ if($k == '0-0-0') {
+ $post['price'] = $post['step']['p1'] = $t['price'];
+ $post['unit'] = $t['unit'];
+ $post['amount'] = $t['amount'];
+ }
+ }
+ }
+ }
+ return $post;
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/mall/my.inc.php b/module/mall/my.inc.php
new file mode 100644
index 0000000..eb60c1c
--- /dev/null
+++ b/module/mall/my.inc.php
@@ -0,0 +1,427 @@
+get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND status>1");
+ $limit_used = $r['num'];
+ $limit_free = $mod_limit > $limit_used ? $mod_limit - $limit_used : 0;
+}
+if(check_group($_groupid, $MOD['group_refresh'])) $MOD['credit_refresh'] = 0;
+switch($action) {
+ case 'add':
+ if($mod_limit && $limit_used >= $mod_limit) dalert(lang($L['info_limit'], array($mod_limit, $limit_used)), $_userid ? '?mid='.$mid : '?action=index');
+ if($MG['hour_limit']) {
+ $today = $DT_TIME - 3600;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND addtime>$today");
+ if($r && $r['num'] >= $MG['hour_limit']) dalert(lang($L['hour_limit'], array($MG['hour_limit'])), $_userid ? '?mid='.$mid : '?action=index');
+ }
+ if($MG['day_limit']) {
+ $today = $DT_TODAY - 86400;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND addtime>$today");
+ if($r && $r['num'] >= $MG['day_limit']) dalert(lang($L['day_limit'], array($MG['day_limit'])), $_userid ? '?mid='.$mid : '?action=index');
+ }
+
+ if($mod_free_limit >= 0) {
+ $fee_add = ($MOD['fee_add'] && (!$MOD['fee_mode'] || !$MG['fee_mode']) && $limit_used >= $mod_free_limit && $_userid) ? dround($MOD['fee_add']) : 0;
+ } else {
+ $fee_add = 0;
+ }
+ $fee_currency = $MOD['fee_currency'];
+ $fee_unit = $fee_currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $need_password = $fee_add && $fee_currency == 'money' && $fee_add > $DT['quick_pay'];
+ $need_captcha = $MOD['captcha_add'] == 2 ? $MG['captcha'] : $MOD['captcha_add'];
+ $need_question = $MOD['question_add'] == 2 ? $MG['question'] : $MOD['question_add'];
+ $could_elite = check_group($_groupid, $MOD['group_elite']) && $MOD['credit_elite'] && $_userid;
+ $could_color = check_group($_groupid, $MOD['group_color']) && $MOD['credit_color'] && $_userid;
+
+ if($submit) {
+ if($fee_add && $fee_add > ($fee_currency == 'money' ? $_money : $_credit)) dalert($L['balance_lack']);
+ if($need_password && !is_payword($_username, $password)) dalert($L['error_payword']);
+
+ if(!$_userid) {
+ if(strlen($post['company']) < 4) dalert($L['type_company']);
+ if($AREA) {
+ if(!isset($AREA[$post['areaid']])) dalert($L['type_area']);
+ } else {
+ if(!$post['areaid']) dalert($L['type_area']);
+ }
+ if(strlen($post['truename']) < 4) dalert($L['type_truename']);
+ if(strlen($post['mobile']) < 7) dalert($L['type_mobile']);
+ }
+
+ if($MG['add_limit']) {
+ $last = $db->get_one("SELECT addtime FROM {$table} WHERE $sql ORDER BY itemid DESC");
+ if($last && $DT_TIME - $last['addtime'] < $MG['add_limit']) dalert(lang($L['add_limit'], array($MG['add_limit'])));
+ }
+ $msg = captcha($captcha, $need_captcha, true);
+ if($msg) dalert($msg);
+ $msg = question($answer, $need_question, true);
+ if($msg) dalert($msg);
+
+ $post['username'] = $_username;
+ if($post['mode'] == 3 && !$DT_PC) $post = $do->muti_fix($post);
+ if($do->pass($post)) {
+ $CAT = get_cat($post['catid']);
+ if(!$CAT || !check_group($_groupid, $CAT['group_add'])) dalert(lang($L['group_add'], array($CAT['catname'])));
+ $post['addtime'] = $post['level'] = $post['fee'] = 0;
+ $post['style'] = $post['template'] = $post['note'] = $post['filepath'] = '';
+ $need_check = $MOD['check_add'] == 2 ? $MG['check'] : $MOD['check_add'];
+ $post['status'] = get_status(3, $need_check);
+ $post['hits'] = 0;
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($could_elite && isset($elite) && $post['thumb'] && $_credit > $MOD['credit_elite']) {
+ $post['level'] = 1;
+ credit_add($_username, -$MOD['credit_elite']);
+ credit_record($_username, -$MOD['credit_elite'], 'system', lang($L['credit_record_elite'], array($MOD['name'])), $post['title']);
+ }
+ if($could_color && $color && $_credit > $MOD['credit_color']) {
+ $post['style'] = $color;
+ credit_add($_username, -$MOD['credit_color']);
+ credit_record($_username, -$MOD['credit_color'], 'system', $L['title_color'], '['.$MOD['name'].']'.$post['title']);
+ }
+ $do->add($post);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ if($MOD['show_html'] && $post['status'] > 2) $do->tohtml($do->itemid);
+ if($fee_add) {
+ if($fee_currency == 'money') {
+ money_add($_username, -$fee_add);
+ money_record($_username, -$fee_add, $L['in_site'], 'system', lang($L['credit_record_add'], array($MOD['name'])), 'ID:'.$do->itemid);
+ } else {
+ credit_add($_username, -$fee_add);
+ credit_record($_username, -$fee_add, 'system', lang($L['credit_record_add'], array($MOD['name'])), 'ID:'.$do->itemid);
+ }
+ }
+
+ $msg = $post['status'] == 2 ? $L['success_check'] : $L['success_add'];
+ $js = '';
+ if(isset($post['sync_sina']) && $post['sync_sina']) $js .= sync_weibo('sina', $moduleid, $do->itemid);
+ if($_userid) {
+ set_cookie('dmsg', $msg);
+ $forward = '?mid='.$mid.'&status='.$post['status'];
+ $msg = '';
+ } else {
+ $forward = '?mid='.$mid.'&action=add';
+ }
+ $js .= 'window.onload=function(){parent.window.location="'.$forward.'";}';
+ dalert($msg, '', $js);
+ } else {
+ dalert($do->errmsg, '', ($need_captcha ? reload_captcha() : '').($need_question ? reload_question() : ''));
+ }
+ } else {
+ if($itemid) {
+ $MG['copy'] && $_userid or dheader(($DT_PC ? $MODULE[2]['linkurl'] : $MODULE[2]['mobile']).'account.php?action=group&itemid=1');
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['username'] != $_username) message();
+ extract($item);
+ $thumbs = get_thumbs($item);
+ if($step) {
+ extract(unserialize($step), EXTR_SKIP);
+ $a2 > 0 or $a2 = '';
+ $a3 > 0 or $a3 = '';
+ $p2 > 0 or $p2 = '';
+ $p3 > 0 or $p3 = '';
+ $mode = 2;
+ } else {
+ $a1 = 1;
+ $p1 = $item['price'];
+ $a2 = $a3 = $p2 = $p3 = '';
+ $mode = $prices ? 1 : 0;
+ }
+ $stocks = '';
+ if($stock) {
+ $stocks = json_encode(get_stocks($stock));
+ $mode = 3;
+ }
+ } else {
+ $_catid = $catid;
+ foreach($do->fields as $v) {
+ $$v = '';
+ }
+ $a1 = 1;
+ $a2 = $a3 = $p1 = $p2 = $p3 = '';
+ $boc = 1;
+ $content = '';
+ $catid = $_catid;
+ $mycatid = 0;
+ $stocks = '';
+ $mode = 0;
+ }
+ $item = $thumbs = array();
+ $mycatid_select = type_select($module.'-'.$moduleid.'-'.$_userid, 0, 'post[mycatid]', $L['type_default'], $mycatid);
+ }
+ break;
+ case 'edit':
+ $itemid or message();
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['username'] != $_username) message();
+
+ if($MG['edit_limit'] < 0) message($L['edit_refuse']);
+ if($MG['edit_limit'] && $DT_TIME - $item['addtime'] > $MG['edit_limit']*86400) message(lang($L['edit_limit'], array($MG['edit_limit'])));
+
+ if($submit) {
+ $post['username'] = $_username;
+ if($post['mode'] == 3 && !$DT_PC) $post = $do->muti_fix($post);
+ if($do->pass($post)) {
+ $CAT = get_cat($post['catid']);
+ if(!$CAT || !check_group($_groupid, $CAT['group_add'])) dalert(lang($L['group_add'], array($CAT['catname'])));
+ $post['addtime'] = timetodate($item['addtime']);
+ $post['level'] = $item['level'];
+ $post['fee'] = $item['fee'];
+ $post['style'] = addslashes($item['style']);
+ $post['template'] = addslashes($item['template']);
+ $post['filepath'] = addslashes($item['filepath']);
+ $post['note'] = addslashes($item['note']);
+ $need_check = $MOD['check_add'] == 2 ? $MG['check'] : $MOD['check_add'];
+ $post['status'] = get_status($item['status'], $need_check);
+ $post['hits'] = $item['hits'];
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ $do->edit($post);
+ if($post['status'] < 3 && $item['status'] > 2) history($moduleid, $itemid, 'set', $item);
+ set_cookie('dmsg', $post['status'] == 2 ? $L['success_edit_check'] : $L['success_edit']);
+ dalert('', '', 'parent.window.location="'.($post['status'] == 2 ? '?mid='.$moduleid.'&status=2' : $forward).'"');
+ } else {
+ dalert($do->errmsg);
+ }
+ } else {
+ extract($item);
+ $thumbs = get_thumbs($item);
+ if($step) {
+ @extract(unserialize($step), EXTR_SKIP);
+ $a2 > 0 or $a2 = '';
+ $a3 > 0 or $a3 = '';
+ $p2 > 0 or $p2 = '';
+ $p3 > 0 or $p3 = '';
+ $mode = 2;
+ } else {
+ $a1 = 1;
+ $p1 = $item['price'];
+ $a2 = $a3 = $p2 = $p3 = '';
+ $mode = $prices ? 1 : 0;
+ }
+ $stocks = '';
+ if($stock) {
+ $stocks = json_encode(get_stocks($stock));
+ $mode = 3;
+ }
+ $mycatid_select = type_select($module.'-'.$moduleid.'-'.$_userid, 0, 'post[mycatid]', $L['type_default'], $mycatid);
+ }
+ break;
+ case 'delete':
+ $MG['delete'] or message();
+ $itemid or message();
+ $itemids = is_array($itemid) ? $itemid : array($itemid);
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $db->get_one("SELECT username FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['username'] != $_username) message();
+ $do->recycle($itemid);
+ }
+ dmsg($L['success_delete'], $forward);
+ break;
+ case 'refresh':
+ $MG['refresh_limit'] > -1 or dheader(($DT_PC ? $MODULE[2]['linkurl'] : $MODULE[2]['mobile']).'account.php?action=group&itemid=1');
+ $itemid or message($L['select_goods']);
+ if($MOD['credit_refresh'] && $_credit < $MOD['credit_refresh']) message($L['credit_lack']);
+ $itemids = $itemid;
+ $s = $f = 0;
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $db->get_one("SELECT username,edittime FROM {$table} WHERE itemid=$itemid");
+ $could_refresh = $item && $item['username'] == $_username;
+ if($could_refresh && $MG['refresh_limit'] && $DT_TIME - $item['edittime'] < $MG['refresh_limit']) $could_refresh = false;
+ if($could_refresh && $MOD['credit_refresh'] && ($MOD['credit_refresh'] > $_credit || $_credit < 0)) $could_refresh = false;
+ if($could_refresh) {
+ $do->refresh($itemid);
+ $s++;
+ if($MOD['credit_refresh']) $_credit = $_credit - $MOD['credit_refresh'];
+ } else {
+ $f++;
+ }
+ }
+ if($MOD['credit_refresh'] && $s) {
+ $credit = $s*$MOD['credit_refresh'];
+ credit_add($_username, -$credit);
+ credit_record($_username, -$credit, 'system', lang($L['credit_record_refresh'], array($MOD['name'])), lang($L['refresh_total'], array($s)));
+ }
+ $msg = lang($L['refresh_success'], array($s));
+ if($f) $msg = $msg.' '.lang($L['refresh_fail'], array($f));
+ dmsg($msg, $forward);
+ break;
+ case 'onsale':
+ $itemid or message($L['select_goods']);
+ $itemids = $itemid;
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $db->get_one("SELECT username FROM {$table} WHERE itemid=$itemid");
+ if($item && $item['username'] == $_username) $do->onsale($itemid);
+ }
+ dmsg($L['success_onsale'], $forward);
+ break;
+ case 'unsale':
+ $itemid or message($L['select_goods']);
+ $itemids = $itemid;
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $db->get_one("SELECT username FROM {$table} WHERE itemid=$itemid");
+ if($item && $item['username'] == $_username) $do->unsale($itemid);
+ }
+ dmsg($L['success_unsale'], $forward);
+ break;
+ case 'relate_del':
+ $itemid or message($L['select_goods']);
+ $do->itemid = $itemid;
+ $M = $do->get_one();
+ ($M && $M['status'] == 3) or message($L['select_goods']);
+ $id = isset($id) ? intval($id) : 0;
+ $id or message($L['select_goods']);
+ $do->itemid = $id;
+ $A = $do->get_one();
+ $do->relate_del($M, $A);
+ dmsg($L['success_delete'], '?mid='.$mid.'&itemid='.$itemid.'&action=relate');
+ break;
+ case 'relate_add':
+ $relate_name = isset($relate_name) ? dhtmlspecialchars(trim($relate_name)) : '';
+ $relate_name or message($L['mall_relate_name'] );
+ $itemid or message($L['select_goods']);
+ $do->itemid = $itemid;
+ $M = $do->get_one();
+ ($M && $M['status'] == 3) or message($L['select_goods']);
+ $id = isset($id) ? intval($id) : 0;
+ $id or message($L['select_goods']);
+ $do->itemid = $id;
+ $A = $do->get_one();
+ ($A && $A['status'] == 3 && $A['username'] == $M['username']) or message($L['select_goods']);
+ if($itemid != $id) $do->relate_add($M, $A, $relate_name);
+ dmsg($L['success_add'], '?mid='.$mid.'&itemid='.$itemid.'&action=relate');
+ break;
+ case 'relate':
+ $itemid or message($L['select_goods']);
+ $do->itemid = $itemid;
+ $M = $do->get_one();
+ ($M && $M['status'] == 3) or message($L['select_goods']);
+ if($submit) {
+ $relate_name = isset($relate_name) ? dhtmlspecialchars(trim($relate_name)) : '';
+ $relate_name or message($L['mall_relate_name'] );
+ $do->relate($M, $post, $relate_name);
+ dmsg($L['success_update'], '?mid='.$mid.'&itemid='.$itemid.'&action=relate');
+ } else {
+ $lists = $do->relate_list($M);
+ }
+ break;
+ default:
+ $pagesize = 8;
+ $offset = ($page-1)*$pagesize;
+ $sorder = $L['mall_orderby'];
+ $dorder = array($MOD['order'], 'edittime DESC', 'edittime ASC', 'addtime DESC', 'addtime ASC', 'price DESC', 'price DESC', 'orders DESC', 'orders ASC', 'sales DESC', 'sales ASC', 'amount DESC', 'amount ASC', 'comments DESC', 'comments ASC', 'hits DESC', 'hits ASC');
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ $status = isset($status) ? intval($status) : 3;
+ in_array($status, array(1, 2, 3, 4)) or $status = 3;
+ $mycatid = isset($mycatid) ? ($mycatid === '' ? -1 : intval($mycatid)) : -1;
+ $minprice = isset($minprice) ? dround($minprice) : '';
+ $minprice or $minprice = '';
+ $maxprice = isset($maxprice) ? dround($maxprice) : '';
+ $maxprice or $maxprice = '';
+ $minorders = isset($minorders) ? intval($minorders) : '';
+ $minorders or $minorders = '';
+ $maxorders = isset($maxorders) ? intval($maxorders) : '';
+ $maxorders or $maxorders = '';
+ $minsales = isset($minsales) ? intval($minsales) : '';
+ $minsales or $minsales = '';
+ $maxsales = isset($maxsales) ? intval($maxsales) : '';
+ $maxsales or $maxsales = '';
+ $minamount = isset($minamount) ? intval($minamount) : '';
+ $minamount or $minamount = '';
+ $maxamount = isset($maxamount) ? intval($maxamount) : '';
+ $maxamount or $maxamount = '';
+ $mincomments = isset($mincomments) ? intval($mincomments) : '';
+ $mincomments or $mincomments = '';
+ $maxcomments = isset($maxcomments) ? intval($maxcomments) : '';
+ $maxcomments or $maxcomments = '';
+ $mycat_select = type_select($module.'-'.$moduleid.'-'.$_userid, 0, 'mycatid', $L['type_default'], $mycatid, '', $L['type_my']);
+ $order_select = dselect($sorder, 'order', '', $order);
+
+ $condition = "username='$_username' AND status=$status";
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($catid) $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($mycatid >= 0) $condition .= " AND mycatid IN (".type_child($mycatid, $MTYPE).")";
+ if($minprice) $condition .= " AND price>=$minprice";
+ if($maxprice) $condition .= " AND price<=$maxprice";
+ if($minorders) $condition .= " AND orders>=$minorders";
+ if($maxorders) $condition .= " AND orders<=$maxorders";
+ if($minsales) $condition .= " AND sales>=$minsales";
+ if($maxsales) $condition .= " AND sales<=$maxsales";
+ if($minamount) $condition .= " AND amount>=$minamount";
+ if($maxamount) $condition .= " AND amount<=$maxamount";
+ if($mincomments) $condition .= " AND comments>=$mincomments";
+ if($maxcomments) $condition .= " AND comments<=$maxcomments";
+
+ $timetype = strpos($MOD['order'], 'add') !== false ? 'add' : '';
+ $lists = $do->get_list($condition, $dorder[$order]);
+ foreach($lists as $k=>$v) {
+ $lists[$k]['mycat'] = $v['mycatid'] && isset($MTYPE[$v['mycatid']]) ? set_style($MTYPE[$v['mycatid']]['typename'], $MTYPE[$v['mycatid']]['style']) : $L['type_default'];
+ }
+ break;
+}
+if($_userid) {
+ $nums = array();
+ for($i = 1; $i < 5; $i++) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE username='$_username' AND status=$i");
+ $nums[$i] = $r['num'];
+ }
+}
+$EXP = array();
+if($_username && in_array($action, array('add', 'edit'))) {
+ $result = $db->query("SELECT * FROM {$table_express} WHERE username='$_username' AND parentid=0 ORDER BY listorder ASC,itemid ASC LIMIT 100");
+ while($r = $db->fetch_array($result)) {
+ $EXP[] = $r;
+ }
+}
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MODULE[2]['linkurl'], $MODULE[2]['mobile'], $DT_URL);
+} else {
+ $foot = '';
+ if($action == 'add' || $action == 'edit') {
+ //
+ } else {
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ foreach($lists as $k=>$v) {
+ $lists[$k]['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $v['linkurl']);
+ $lists[$k]['date'] = timetodate($v[$time], 5);
+ }
+ $pages = mobile_pages($items, $page, $pagesize);
+ $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : 'my.php');
+ }
+}
+$head_title = lang($L['module_manage'], array($MOD['name']));
+include template($MOD['template_my'] ? $MOD['template_my'] : 'my_'.$module, 'member');
+?>
\ No newline at end of file
diff --git a/module/mall/search.inc.php b/module/mall/search.inc.php
new file mode 100644
index 0000000..06150a8
--- /dev/null
+++ b/module/mall/search.inc.php
@@ -0,0 +1,182 @@
+ $DT['max_kw']) message(lang($L['word_limit'], array($DT['min_kw'], $DT['max_kw'])), $MOD['linkurl'].'search.php');
+ if($DT['search_limit'] && $page == 1) {
+ if(($DT_TIME - $DT['search_limit']) < get_cookie('last_search')) message(lang($L['time_limit'], array($DT['search_limit'])), $MOD['linkurl'].'search.php');
+ set_cookie('last_search', $DT_TIME);
+ }
+ }
+
+ $pptsql = '';
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $PPT = property_condition($catid);
+ foreach($PPT as $k=>$v) {
+ $PPT[$k]['select'] = '';
+ $oid = $v['oid'];
+ $tmp = 'ppt_'.$oid;
+ if(isset($$tmp)) {
+ $PPT[$k]['select'] = $tmp = strip_kw($$tmp);
+ if($tmp && in_array($tmp, $v['options'])) {
+ $tmp = 'O'.$oid.':'.$tmp.';';
+ $pptsql .= match_kw('pptword', $tmp);
+ }
+ }
+ }
+ }
+ $fds = $MOD['fields'];
+ $condition = '';
+ if($catid) $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($areaid) $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($thumb) $condition .= " AND thumb<>''";
+ if($vip) $condition .= " AND vip>0";
+ if($price) $condition .= " AND price>0 AND unit<>''";
+ if($minprice) $condition .= " AND price>=$minprice";
+ if($maxprice) $condition .= " AND price<=$maxprice";
+ if($fromtime) $condition .= " AND edittime>=$fromtime";
+ if($totime) $condition .= " AND edittime<=$totime";
+ if($dfields[$fields] == 'content') {
+ if($keyword && $MOD['fulltext'] == 1) $condition .= match_kw($dfields[$fields], $keyword);
+ $condition = str_replace('AND ', 'AND i.', $condition);
+ $condition = str_replace('i.content', 'd.content', $condition);
+ $condition = "i.status=3 AND i.itemid=d.itemid".$condition;
+ if($keyword && $MOD['fulltext'] == 2) $condition .= " AND MATCH(`content`) AGAINST('$kw'".(preg_match("/[+-<>()~*]/", $kw) ? ' IN BOOLEAN MODE' : '').")";
+ $table = $table.' i,'.$table_data.' d';
+ $fds = 'i.'.str_replace(',', ',i.', $fds);
+ } else {
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($pptsql) $condition .= $pptsql;//PPT
+ $condition = "status=3".$condition;
+ }
+ $pagesize = $MOD['pagesize'];
+ $offset = ($page-1)*$pagesize;
+ $items = $db->count($table, $condition, $DT['cache_search']);
+ $pages = pages($items, $page, $pagesize);
+ if($items) {
+ $order = $dorder[$order] ? " ORDER BY $dorder[$order]" : '';
+ $result = $db->query("SELECT {$fds} FROM {$table} WHERE {$condition}{$order} LIMIT {$offset},{$pagesize}", ($DT['cache_search'] && $page == 1) ? 'CACHE' : '', $DT['cache_search']);
+ if($kw) {
+ $replacef = explode(' ', $kw);
+ $replacet = array_map('highlight', $replacef);
+ }
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ if($kw) $r['title'] = str_replace($replacef, $replacet, $r['title']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ }
+ if($page == 1 && $kw && $DT['search_kw']) keyword($DT['search_kw'], $_username, $kw, $items, $moduleid);
+ $showpage = 1;
+ $datetype = 5;
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+} else {
+ if($kw) {
+ check_group($_groupid, $MOD['group_search']) or message($L['msg_no_search']);
+ } else if($catid) {
+ $CAT or message($L['msg_not_cate']);
+ if(!check_group($_groupid, $MOD['group_list']) || !check_group($_groupid, $CAT['group_list'])) message($L['msg_no_right']);
+ } else {
+ check_group($_groupid, $MOD['group_index']) or message($L['msg_no_right']);
+ }
+ $head_title = $MOD['name'].$DT['seo_delimiter'].$head_title;
+ if($kw) $head_title = $kw.$DT['seo_delimiter'].$head_title;
+ if(!$areaid && $cityid && strpos($DT_URL, 'areaid') === false) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ }
+ $minprice = isset($minprice) ? dround($minprice) : '';
+ $minprice or $minprice = '';
+ $maxprice = isset($maxprice) ? dround($maxprice) : '';
+ $maxprice or $maxprice = '';
+ $elite = isset($elite) ? intval($elite) : 0;
+ (isset($orderby) && in_array($orderby, array('dcomments', 'dorders', 'dprice', 'aprice'))) or $orderby = '';
+ $tags = array();
+ if($DT_QST) {
+ $condition = "status=3";
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($catid) $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($areaid) $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($elite) $condition .= " AND level>0";
+ if($minprice) $condition .= " AND price>=$minprice";
+ if($maxprice) $condition .= " AND price<=$maxprice";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize);
+ $tags = array();
+ if($items) {
+ $order = $MOD['order'];
+ if($orderby) $order = substr($orderby, 0, 1) == 'd' ? substr($orderby, 1).' DESC' : substr($orderby, 1).' ASC';
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY {$order} LIMIT {$offset},{$pagesize}", $DT['cache_search'] && $page == 1 ? 'CACHE' : '', $DT['cache_search']);
+ while($r = $db->fetch_array($result)) {
+ if($kw) $r['title'] = str_replace($kw, ''.$kw.' ', $r['title']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 3);
+ $r['thumb'] = str_replace('.thumb.', '.middle.', $r['thumb']);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = preg_replace("/(.*)([&?]page=[0-9]*)(.*)/i", "\\1\\3", rewrite($DT_URL, 1)).'&job=ajax';
+ }
+ if($page == 1 && $kw && $DT['search_kw']) keyword($DT['search_kw'], $_username, $kw, $items, $moduleid);
+ }
+ if($job == 'ajax') {
+ if($tags) include template('list-'.$module, 'tag');
+ exit;
+ }
+ $head_title = $MOD['name'].$L['search'];
+}
+$seo_file = 'search';
+include DT_ROOT.'/include/seo.inc.php';
+include template($MOD['template_search'] ? $MOD['template_search'] : 'search', $module);
+?>
\ No newline at end of file
diff --git a/module/mall/show.inc.php b/module/mall/show.inc.php
new file mode 100644
index 0000000..bea910d
--- /dev/null
+++ b/module/mall/show.inc.php
@@ -0,0 +1,165 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if($item['groupid'] == 2) include load('404.inc');
+ if($item && $item['status'] > 2) {
+ if($MOD['show_html'] && is_file(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl'])) d301($MOD['linkurl'].$item['linkurl']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ } else {
+ include load('404.inc');
+ }
+ $CAT = get_cat($catid);
+ if(!check_group($_groupid, $CAT['group_show'])) include load('403.inc');
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ if($lazy) $content = DC::lazy($content);
+ $content = DC::format($content, $DT_PC);
+ }
+ $CP = $MOD['cat_property'] && $CAT['property'];
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+ }
+ $RL = $relate_id ? get_relate($item) : array();
+ $P1 = get_nv($n1, $v1);
+ $P2 = get_nv($n2, $v2);
+ $P3 = get_nv($n3, $v3);
+ if($step) {
+ @extract(unserialize($step), EXTR_SKIP);
+ $mode = 2;
+ } else {
+ $a1 = 1;
+ $p1 = $item['price'];
+ $a2 = $a3 = $p2 = $p3 = '';
+ $mode = $prices ? 1 : 0;
+ }
+ $stocks = '';
+ if($stock) {
+ $stocks = json_encode(get_stocks($stock));
+ $mode = 3;
+ }
+ if($subtext && $sublink) {
+ if(strpos($subtitle, $subtext) === false) {
+ $subtitle .= ''.$subtext.' ';
+ } else {
+ $subtitle = str_replace($subtext, ''.$subtext.' ', $subtitle);
+ }
+ }
+ $unit or $unit = $L['unit'];
+ $adddate = timetodate($addtime, 3);
+ $editdate = timetodate($edittime, 3);
+ $linkurl = $MOD['linkurl'].$linkurl;
+ $albums = get_albums($item);
+ $pics = count($albums);
+ $pics_width = $pics*70;
+ $promos = get_promos($username);
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ $update = '';
+ $sku_amount = get_amount($item);
+ if($sku_amount != $amount) {
+ $amount = $sku_amount;
+ $update .= ",amount=$amount";
+ }
+ if(check_group($_groupid, $MOD['group_contact'])) {
+ if($fee) {
+ $user_status = 4;
+ $destoon_task = "moduleid=$moduleid&html=show&itemid=$itemid";
+ } else {
+ $user_status = 3;
+ $member = $item['username'] ? userinfo($item['username']) : array();
+ if($member) {
+ $update_user = update_user($member, $item);
+ if($update_user) $db->query("UPDATE LOW_PRIORITY {$table} SET ".substr($update_user, 1)." WHERE username='$username'", 'UNBUFFERED');
+ }
+ }
+ } else {
+ $user_status = $_userid ? 1 : 0;
+ if($_username && $item['username'] == $_username) {
+ $member = userinfo($item['username']);
+ $user_status = 3;
+ }
+ }
+ view_log($item);
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $linkurl);
+} else {
+ $itemid or dheader($MOD['mobile']);
+ $item = $db->get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ ($item && $item['status'] > 2) or message($L['msg_not_exist']);
+ if($item['groupid'] == 2) message($L['msg_not_exist']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $CAT = get_cat($catid);
+ if(!check_group($_groupid, $MOD['group_show']) || !check_group($_groupid, $CAT['group_show'])) message($L['msg_no_right']);
+ $member = array();
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ include DT_ROOT.'/mobile/api/contact.inc.php';
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ if($share_icon) $share_icon = DC::icon($thumb, $content);
+ $content = DC::format($content, 0);
+ }
+ $CP = $MOD['cat_property'] && $CAT['property'];
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+ }
+ $RL = $relate_id ? get_relate($item) : array();
+ $P1 = get_nv($n1, $v1);
+ $P2 = get_nv($n2, $v2);
+ $P3 = get_nv($n3, $v3);
+ if($step) {
+ @extract(unserialize($step), EXTR_SKIP);
+ $mode = 2;
+ } else {
+ $a1 = 1;
+ $p1 = $item['price'];
+ $a2 = $a3 = $p2 = $p3 = '';
+ $mode = $prices ? 1 : 0;
+ }
+ $stocks = '';
+ if($stock) {
+ $stocks = json_encode(get_stocks($stock));
+ $mode = 3;
+ }
+ if($subtext && $sublink) {
+ if(strpos($subtitle, $subtext) === false) {
+ $subtitle .= ''.$subtext.' ';
+ } else {
+ $subtitle = str_replace($subtext, ''.$subtext.' ', $subtitle);
+ }
+ }
+ $unit or $unit = $L['unit'];
+ $albums = get_albums($item);
+ $promos = get_promos($username);
+ $editdate = timetodate($edittime, 5);
+ view_log($item);
+ $update = '';
+ $sku_amount = get_amount($item);
+ if($sku_amount != $amount) {
+ $amount = $sku_amount;
+ $update .= ",amount=$amount";
+ }
+ $head_title = $head_name = $CAT['catname'];
+ $js_item = $js_album = 1;
+ $foot = '';
+}
+if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+$seo_file = 'show';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $item['template'] ? $item['template'] : ($CAT['show_template'] ? $CAT['show_template'] : ($MOD['template_show'] ? $MOD['template_show'] : 'show'));
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/mall/task.inc.php b/module/mall/task.inc.php
new file mode 100644
index 0000000..9e37543
--- /dev/null
+++ b/module/mall/task.inc.php
@@ -0,0 +1,73 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3) exit;
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ $currency = $MOD['fee_currency'];
+ $fee_unit = $currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $fee_name = $currency == 'money' ? $DT['money_name'] : $DT['credit_name'];
+ $member = array();
+ if(check_group($_groupid, $MOD['group_contact'])) {
+ if($fee) {
+ if($MG['fee_mode'] && $MOD['fee_mode']) {
+ $user_status = 3;
+ } else {
+ $mid = $moduleid;
+ if($_userid) {
+ $user_status = check_pay($mid, $itemid) ? 3 : 2;
+ } else {
+ $user_status = 0;
+ }
+ }
+ } else {
+ $user_status = 3;
+ }
+ } else {
+ $user_status = $_userid ? 1 : 0;
+ }
+ if($_username && $_username == $item['username']) $user_status = 3;
+ if($user_status == 3 && $item['username']) $member = userinfo($item['username']);
+ $contact = strip_nr(ob_template('contact', 'chip'), true);
+ echo 'Inner("contact", \''.$contact.'\');';
+ if($MOD['hits']) echo 'Inner("hits", \''.$item['hits'].'\');';
+ view_log($item);
+ $update = '';
+ $sku_amount = get_amount($item);
+ if($sku_amount != $amount) {
+ $amount = $sku_amount;
+ $update .= ",amount=$amount";
+ }
+ if($member) {
+ $update_user = update_user($member, $item);
+ if($update_user) $db->query("UPDATE LOW_PRIORITY {$table} SET ".substr($update_user, 1)." WHERE username='$username'", 'UNBUFFERED');
+ }
+ if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+ if($MOD['show_html'] && $task_item && $DT_TIME - @filemtime(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl']) > $task_item) tohtml('show', $module);
+} else if($html == 'list') {
+ $catid or exit;
+ if($MOD['list_html'] && $task_list && $CAT) {
+ $num = 1;
+ $totalpage = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $demo = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, '{DEMO}');
+ $fid = $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $page + 1;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $totalpage + 1 - $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ }
+} else if($html == 'index') {
+ if($DT['cache_hits'] && $MOD['hits']) {
+ $file = DT_CACHE.'/hits-'.$moduleid;
+ if($DT_TIME - @filemtime($file.'.dat') > $DT['cache_hits'] || @filesize($file.'.php') > 102400) update_hits($moduleid, $table);
+ }
+ if($MOD['index_html']) {
+ $file = DT_ROOT.'/'.$MOD['moduledir'].'/'.$DT['index'].'.'.$DT['file_ext'];
+ if($DT_TIME - @filemtime($file) > $task_index) tohtml('index', $module);
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/mall/view.inc.php b/module/mall/view.inc.php
new file mode 100644
index 0000000..277e422
--- /dev/null
+++ b/module/mall/view.inc.php
@@ -0,0 +1,52 @@
+query("DELETE FROM {$table_view} WHERE uid='".$_username.'|'.$itemid."'");
+ } else if(is_date($date)) {
+ $db->query("DELETE FROM {$table_view} WHERE username='$_username' AND lasttime>=".datetotime($date.' 00:00:00')." AND lasttime<=".datetotime($date.' 23:59:59'));
+ } else {
+ $db->query("DELETE FROM {$table_view} WHERE username='$_username'");
+ }
+ dheader('?rand='.$DT_TIME);
+} else {
+ $lists = $tags = $views = $ids = array();
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_view} WHERE username='$_username'");
+ $items = $r['num'];
+ $pages = pages($items, $page, $pagesize);
+ if($items) {
+ $result = $db->query("SELECT * FROM {$table_view} WHERE username='$_username' ORDER BY lasttime DESC LIMIT {$offset},{$pagesize}");
+ while($r = $db->fetch_array($result)) {
+ $ids[] = $r['itemid'];
+ $views[] = $r;
+ }
+ $result = $db->query("SELECT * FROM {$table} WHERE itemid IN (".implode(',', $ids).") ORDER BY addtime DESC");
+ while($r = $db->fetch_array($result)) {
+ if($r['status'] != 3) continue;
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $r['mobile'] = $MOD['mobile'].$r['linkurl'];
+ $tags[$r['itemid']] = $r;
+ }
+ foreach($views as $v) {
+ if(!isset($tags[$v['itemid']])) continue;
+ $date = timetodate($v['lasttime'], 3);
+ $tags[$v['itemid']]['lasttime'] = $v['lasttime'];
+ $lists[$date][] = $tags[$v['itemid']];
+ }
+ }
+}
+$head_title = $L['view_title'].$DT['seo_delimiter'].$MOD['name'];
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+} else {
+ $head_title = $L['view_title'];
+ $foot = '';
+}
+include template($MOD['template_view'] ? $MOD['template_view'] : 'view', $module);
+?>
\ No newline at end of file
diff --git a/module/member/account.inc.php b/module/member/account.inc.php
new file mode 100644
index 0000000..1b49865
--- /dev/null
+++ b/module/member/account.inc.php
@@ -0,0 +1,261 @@
+query("UPDATE {$DT_PRE}member SET online=$online WHERE userid=$_userid");
+ $db->query("UPDATE {$DT_PRE}online SET online=$online WHERE userid=$_userid");
+ dheader($forward);
+ break;
+ case 'login':
+ $DT['login_log'] == 2 or dheader('?action=index');
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}login WHERE username='$_username'");
+ $items = $r['num'];
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}login WHERE username='$_username' ORDER BY logid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['logintime'] = timetodate($r['logintime'], 5);
+ $r['area'] = ip2area($r['loginip']);
+ $lists[] = $r;
+ }
+ $head_title = $L['account_login_title'];
+ break;
+ case 'promo':
+ $code = dhtmlspecialchars(trim($code));
+ if($code) {
+ $p = $db->get_one("SELECT * FROM {$DT_PRE}finance_promo WHERE number='$code' AND totime>$DT_TIME");
+ if($p && ($p['reuse'] || (!$p['reuse'] && !$p['username']))) {
+ if($p['type']) {
+ exit(lang($L['grade_msg_time_promo'], array($p['amount'])));
+ } else {
+ exit(lang($L['grade_msg_money_promo'], array($p['amount'])));
+ }
+ }
+ }
+ exit($L['grade_msg_bad_promo']);
+ break;
+ case 'group':
+ $GROUP = cache_read('group.php');
+ $lists = array();
+ $i = 0;
+ if($_groupid > 4) {
+ foreach($GROUP as $k=>$v) {
+ if($i) {
+ $G = cache_read('group-'.$k.'.php');
+ if($G['grade']) $lists[$k] = $v;
+ }
+ if($k == $_groupid) $i = 1;
+ }
+ }
+ $head_title = $L['grade_title'];
+ break;
+ case 'grade':
+ $GROUP = cache_read('group.php');
+ $groupid = isset($groupid) ? intval($groupid) : 0;
+ $lists = array();
+ $i = 0;
+ if($_groupid > 4) {
+ foreach($GROUP as $k=>$v) {
+ if($i) {
+ $G = cache_read('group-'.$k.'.php');
+ if($G['grade']) $lists[$k] = $v;
+ }
+ if($k == $_groupid) $i = 1;
+ }
+ }
+ isset($lists[$groupid]) or dheader('?action=group');
+ $fee = $GROUP[$groupid]['fee'];
+ $r = $db->get_one("SELECT status FROM {$DT_PRE}member_upgrade WHERE userid=$_userid ORDER BY itemid DESC");
+ if($r && $r['status'] == 2) message($L['grade_msg_success'], '?action=upgrade');
+ $auto = 0;
+ $auth = isset($auth) ? decrypt($auth, DT_KEY.'CG') : '';
+ if($auth && substr($auth, 0, 6) == 'grade|') {
+ $_gid = intval(substr($auth, 6));
+ if($_gid == $groupid) $auto = $submit = 1;
+ }
+ if($submit) {
+ if($fee > 0) {
+ $fee <= $_money or message($L['money_not_enough']);
+ if($fee <= $DT['quick_pay']) $auto = 1;
+ if(!$auto) {
+ is_payword($_username, $password) or message($L['error_payword']);
+ }
+ money_add($_username, -$fee);
+ money_record($_username, -$fee, $L['in_site'], 'system', $L['grade_title'], $GROUP[$groupid]['groupname']);
+ $company = dhtmlspecialchars($_company);
+ } else {
+ if(strlen($company) < 4) message($L['grade_pass_company']);
+ $company = dhtmlspecialchars(trim($company));
+ }
+ $db->query("INSERT INTO {$DT_PRE}member_upgrade (userid,username,gid,groupid,company,addtime,ip,amount,status) VALUES ('$_userid','$_username','$_groupid','$groupid','$company','$DT_TIME', '$DT_IP','$fee','2')");
+ message($L['grade_msg_success'], '?action=upgrade', 5);
+ } else {
+ $head_title = $L['grade_title'];
+ }
+ break;
+ case 'upgrade':
+ $GROUP = cache_read('group.php');
+ $_status = $L['account_upgrade_status'];
+ $condition = "userid=$_userid";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}member_upgrade WHERE $condition");
+ $items = $r['num'];
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}member_upgrade WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = $r['edittime'] ? timetodate($r['edittime'], 3) : 'N/A';
+ $lists[] = $r;
+ }
+ $head_title = $L['account_upgrade_title'];
+ break;
+ case 'renew':
+ $GROUP = cache_read('group.php');
+ $condition = "username='$_username'";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}company_vip WHERE $condition");
+ $items = $r['num'];
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}company_vip WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['fromdate'] = timetodate($r['fromtime'], 3);
+ $r['todate'] = timetodate($r['totime'], 3);
+ $lists[] = $r;
+ }
+ $head_title = $L['account_renew_title'];
+ break;
+ case 'vip':
+ $user = userinfo($_username);
+ if(!$MG['vip'] || !$MG['fee'] || $user['totime'] < $DT_TIME) dheader('?action=index');
+ $auto = 0;
+ $auth = isset($auth) ? decrypt($auth, DT_KEY.'CG') : '';
+ if($auth && substr($auth, 0, 4) == 'vip|') {
+ $auto = $submit = 1;
+ $year = intval(substr($auth, 4));
+ }
+ if($submit) {
+ $year = intval($year);
+ in_array($year, array(1, 2, 3)) or $year = 1;
+ $fee = dround($MG['fee']*$year);
+ $fee > 0 or message($L['vip_msg_fee']);
+ $fee <= $_money or message($L['money_not_enough']);
+ if($fee <= $DT['quick_pay']) $auto = 1;
+ if(!$auto) {
+ is_payword($_username, $password) or message($L['error_payword']);
+ }
+ $totime = $user['totime'] + 365*86400*$year;
+ money_add($_username, -$fee);
+ money_record($_username, -$fee, $L['in_site'], 'system', $L['vip_renew'], lang($L['vip_record'], array($year, timetodate($totime, 3))));
+ $db->query("UPDATE {$DT_PRE}company SET totime=$totime WHERE userid=$_userid");
+ $db->query("INSERT INTO {$DT_PRE}company_vip (username,company,amount,gid,groupid,fromtime,totime,addtime,reason,note,editor) VALUES ('$user[username]','".addslashes($user['company'])."','$fee','$user[groupid]','$user[groupid]','$user[totime]','$totime','$DT_TIME', '$L[account_vip_renew]','','$_username')");
+ dmsg($L['vip_msg_success'], '?action=renew');
+ } else {
+ $havedays = ceil(($user['totime'] - $DT_TIME)/86400);
+ $todate = timetodate($user['totime'], 3);
+ $year = 1;
+ if($sum > 1 && $sum < 4) $year = $sum;
+ $fee = dround($MG['fee']*$year);
+ $head_title = $L['vip_renew'];
+ }
+ break;
+ case 'username':
+ $edit_username = substr($_username, 0, 4) == 'uid-' ? 1 : 0;
+ if(!$edit_username && $MOD['edit_username']) {
+ $condition = "username='$_username' AND type='username'";
+ if($MOD['edit_username'] == 2) $condition .= "AND addtime>".datetotime(timetodate($DT_TIME, 'Y').'-01-01 00:00:00');
+ $t = $db->get_one("SELECT itemid FROM {$DT_PRE}validate WHERE {$condition} ORDER BY itemid DESC");
+ if(!$t) $edit_username = 1;
+ }
+ $edit_username or dheader('?action=index');
+
+ if($submit) {
+ isset($nusername) or $nusername = '';
+ require DT_ROOT.'/module/'.$module.'/member.class.php';
+ $do = new member;
+ $do->userid = $_userid;
+ if($do->rename($_username, $nusername)) {
+ dmsg($L['op_edit_success'], '?action=index');
+ } else {
+ message($do->errmsg);
+ }
+ } else {
+ $linkurl = $MG['homepage'] ? userurl(''.$_username.' ') : '';
+ $head_title = $L['account_username_title'];
+ }
+ break;
+ case 'passport':
+ $edit_passport = (substr($_passport, 0, 4) == 'uid-' || $_passport == $_username) ? 1 : 0;
+ if(!$edit_passport && $MOD['edit_passport']) {
+ $condition = "username='$_username' AND type='passport'";
+ if($MOD['edit_username'] == 2) $condition .= "AND addtime>".datetotime(timetodate($DT_TIME, 'Y').'-01-01 00:00:00');
+ $t = $db->get_one("SELECT itemid FROM {$DT_PRE}validate WHERE {$condition} ORDER BY itemid DESC");
+ if(!$t) $edit_passport = 1;
+ }
+ $edit_passport or dheader('?action=index');
+
+ if($submit) {
+ isset($npassport) or $npassport = '';
+ require DT_ROOT.'/module/'.$module.'/member.class.php';
+ $do = new member;
+ $do->userid = $_userid;
+ if($do->rename_passport($_passport, $npassport, $_username)) {
+ dmsg($L['op_edit_success'], '?action=index');
+ } else {
+ message($do->errmsg);
+ }
+ } else {
+ $head_title = $L['account_passport_title'];
+ }
+ break;
+ case 'close':
+ ($MOD['account_close'] && $_groupid > 1) or dheader('?action=index');
+ $t = $db->get_one("SELECT itemid FROM {$DT_PRE}validate WHERE username='$_username' AND type='close' AND status=2 ORDER BY itemid DESC");
+ if($t) message($L['account_close_msg'], '?action=index', 5);
+ if($submit) {
+ $reason = strip_tags(trim($reason));
+ strlen($reason) > 2 or message($L['pass_content']);
+ $db->query("INSERT INTO {$DT_PRE}validate (title,history,type,username,ip,addtime,status,editor,edittime) VALUES ('$reason','','close','$_username','$DT_IP','$DT_TIME','2','$_username','$DT_TIME')");
+ dmsg($L['account_close_msg'], '?action=index');
+ } else {
+ $head_title = $L['account_close_title'];
+ }
+ break;
+ default:
+ $user = userinfo($_username);
+ extract($user);
+ $expired = $totime && $totime < $DT_TIME ? true : false;
+ $havedays = $expired ? 0 : ceil(($totime-$DT_TIME)/86400);
+
+ $edit_username = substr($_username, 0, 4) == 'uid-' ? 1 : 0;
+ if(!$edit_username && $MOD['edit_username']) {
+ $condition = "username='$_username' AND type='username'";
+ if($MOD['edit_username'] == 2) $condition .= "AND addtime>".datetotime(timetodate($DT_TIME, 'Y').'-01-01 00:00:00');
+ $t = $db->get_one("SELECT itemid FROM {$DT_PRE}validate WHERE {$condition} ORDER BY itemid DESC");
+ if(!$t) $edit_username = 1;
+ }
+
+ $edit_passport = (substr($_passport, 0, 4) == 'uid-' || $_passport == $_username) ? 1 : 0;
+ if(!$edit_passport && $MOD['edit_passport']) {
+ $condition = "username='$_username' AND type='passport'";
+ if($MOD['edit_username'] == 2) $condition .= "AND addtime>".datetotime(timetodate($DT_TIME, 'Y').'-01-01 00:00:00');
+ $t = $db->get_one("SELECT itemid FROM {$DT_PRE}validate WHERE {$condition} ORDER BY itemid DESC");
+ if(!$t) $edit_passport = 1;
+ }
+
+ $head_title = $L['account_title'];
+ break;
+}
+if($DT_PC) {
+ //
+} else {
+ if((!$action || $action == 'index') && !$kw) $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : '');
+ $head_name = $head_title;
+}
+include template('account', $module);
+?>
\ No newline at end of file
diff --git a/module/member/ad.inc.php b/module/member/ad.inc.php
new file mode 100644
index 0000000..ac475e2
--- /dev/null
+++ b/module/member/ad.inc.php
@@ -0,0 +1,158 @@
+get_one("SELECT * FROM {$DT_PRE}ad_place WHERE pid=$pid");
+ $p or message($L['not_ad_place'], $adurl);
+ $typeid = $p['typeid'];
+ $price = $p['price'];
+ $months = array(1, 2, 3, 6, 12, 24);
+ $t = $db->get_one("SELECT MAX(totime) AS totime FROM {$DT_PRE}ad WHERE pid=$pid AND totime>$DT_TIME");
+ $fromtime = ($t['totime'] && $typeid < 5) ? $t['totime'] : $DT_TIME + 86400;
+ $fromdate = timetodate($fromtime, 3);
+ if($submit) {
+ (is_date($post['fromtime']) && $post['fromtime'] >= $fromdate) or message($L['pass_ad_from']);
+ in_array($month, $months) or message($L['pass_ad_month']);
+ $amount = $price*$month;
+ if($amount) {
+ if($currency == 'money') {
+ if($amount > $_money) message($L['money_not_enough']);
+ is_payword($_username, $password) or message($L['error_payword']);
+ } else {
+ if($amount > $_credit) message($L['credit_not_enough']);
+ }
+ }
+ $ad = array();
+ $ad['image_src'] = $ad['video_src'] = $ad['code'] = '';
+ if($typeid == 1 || $typeid == 7) {
+ if(strlen($post['code']) < 10) message($L['pass_ad_code']);
+ $ad['code'] = $post['code'];
+ } else if($typeid == 2) {
+ if(strlen($post['text_name']) < 2) message($L['pass_ad_text_name']);
+ if(strlen($post['text_url']) < 10) message($L['pass_ad_text_url']);
+ $ad['text_name'] = $post['text_name'];
+ $ad['text_url'] = fix_link($post['text_url']);
+ $ad['text_title'] = $post['text_title'];
+ } else if($typeid == 3 || $typeid == 5) {
+ if(strlen($post['image_src']) < 15) message($L['pass_ad_image_src']);
+ $ad['image_src'] = $post['image_src'];
+ $ad['image_url'] = fix_link($post['image_url']);
+ $ad['image_alt'] = $post['image_alt'];
+ } else if($typeid == 4) {
+ if(strlen($post['video_src']) < 15 || strpos($post['video_src'], '.mp4') === false) message($L['pass_ad_video_src']);
+ $ad['video_src'] = $post['video_src'];
+ $ad['video_auto'] = $post['video_auto'] ? 1 : 0;
+ $ad['video_loop'] = $post['video_loop'] ? 1 : 0;
+ $ad['video_url'] = fix_link($post['video_url']);
+ } else if($typeid == 6) {
+ $post['key_id'] = intval($post['key_id']);
+ $post['key_id'] or message($L['pass_ad_infoid']);
+ $ad['key_id'] = $post['key_id'];
+ }
+ if($typeid == 6 || $typeid == 7) {
+ $ad['key_moduleid'] = $p['moduleid'];
+ $ad['key_catid'] = $post['catid'];
+ $ad['key_word'] = trim(strip_tags($post['word']));
+ }
+ $ad['addtime'] = $ad['edittime'] = $DT_TIME;
+ $ad['fromtime'] = datetotime($post['fromtime']);
+ $ad['totime'] = datetotime($post['fromtime']) + 86400*30*$month;
+ $ad['pid'] = $pid;
+ $ad['typeid'] = $typeid;
+ $ad['amount'] = $amount;
+ $ad['currency'] = $currency;
+ $ad['title'] = $post['fromtime'].'('.$_username.')';
+ $ad['introduce'] = timetodate($DT_TIME, 5).' '.$L['ad_buy_paid'].$amount.$unit;
+ $ad['note'] = $post['note'].' - '.$L['ad_buy_note'].'('.$DT_IP.')';
+ $ad['status'] = 2;
+ $ad['username'] = $_username;
+ $ad = dhtmlspecialchars($ad);
+ if($amount) {
+ if($currency == 'money') {
+ money_add($_username, -$amount);
+ money_record($_username, -$amount, $L['in_site'], 'system', $L['pay_in_site'], $p['name'].$L['ad_buy_title'].$month.$L['month']);
+ } else {
+ credit_add($_username, -$amount);
+ credit_record($_username, -$amount, 'system', $p['name'].$L['ad_buy_title'], $month.$L['month']);
+ }
+ }
+ $sqlk = $sqlv = '';
+ foreach($ad as $k=>$v) {
+ $sqlk .= ','.$k; $sqlv .= ",'$v'";
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ $db->query("INSERT INTO {$DT_PRE}ad ($sqlk) VALUES ($sqlv)");
+ $db->query("UPDATE {$DT_PRE}ad_place SET ads=ads+1 WHERE pid=$pid");
+ dmsg($L['ad_buy_success'], '?status=2');
+ }
+ } else {
+ dheader('?action=list');
+ }
+} else if($action == 'list') {
+ $currency = $EXT['ad_currency'];
+ $unit = $currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $condition = "open=1";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}ad_place WHERE $condition");
+ $items = $r['num'];
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}ad_place WHERE $condition ORDER BY listorder DESC,pid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['alt'] = $r['name'];
+ $r['name'] = set_style($r['name'], $r['style']);
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['width'] or $r['width'] = '--';
+ $r['height'] or $r['height'] = '--';
+ $r['typename'] = $TYPE[$r['typeid']];
+ $lists[] = $r;
+ }
+} else {
+ $status = isset($status) ? intval($status) : 3;
+ in_array($status, array(2, 3)) or $status = 3;
+ $condition = "username='$_username' AND status=$status";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}ad WHERE $condition");
+ $items = $r['num'];
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}ad WHERE $condition ORDER BY aid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ if($r['totime'] < $DT_TIME) {
+ $r['process'] = $L['status_expired'];
+ } else if($r['fromtime'] > $DT_TIME) {
+ $r['process'] = $L['status_not_start'];
+ } else {
+ $r['process'] = $L['status_displaying'];
+ }
+ $r['days'] = $r['totime'] > $DT_TIME ? intval(($r['totime']-$DT_TIME)/86400) : 0;
+ $lists[] = $r;
+ }
+}
+$head_title = $L['ad_buy_title'];
+$nums = array();
+for($i = 2; $i < 4; $i++) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}ad WHERE username='$_username' AND status=$i");
+ $nums[$i] = $r['num'];
+}
+if($DT_PC) {
+ //
+} else {
+ if((!$action || $action == 'index') && !$kw) $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : 'biz.php');
+ $head_name = $head_title;
+}
+include template('ad', $module);
+?>
\ No newline at end of file
diff --git a/module/member/address.class.php b/module/member/address.class.php
new file mode 100644
index 0000000..29b7c1b
--- /dev/null
+++ b/module/member/address.class.php
@@ -0,0 +1,109 @@
+table = DT_PRE.'address';
+ $this->fields = array('areaid','address','postcode','truename','telephone','mobile','username','addtime','editor','edittime','listorder','note');
+ }
+
+ function address() {
+ $this->__construct();
+ }
+
+ function pass($post) {
+ global $L;
+ if(!is_array($post)) return false;
+ if(!$post['areaid']) return $this->_($L['pass_areaid']);
+ if(!$post['address']) return $this->_($L['pass_address']);
+ if(!$post['postcode']) return $this->_($L['pass_postcode']);
+ if(!$post['truename']) return $this->_($L['pass_truename']);
+ if(!$post['mobile']) return $this->_($L['pass_mobile']);
+ return true;
+ }
+
+ function set($post) {
+ global $_username, $_cname;
+ $pos = area_pos($post['areaid'], '');
+ if(substr($post['address'], 0, strlen($pos)) == $pos) $post['address'] = substr($post['address'], strlen($pos));
+ $post['editor'] = $_cname ? $_cname : $_username;
+ $post['edittime'] = DT_TIME;
+ $post['listorder'] = intval($post['listorder']);
+ if($this->itemid) {
+ //
+ } else {
+ $post['addtime'] = DT_TIME;
+ }
+ $post = dhtmlspecialchars($post);
+ return array_map("trim", $post);
+ }
+
+ function get_one($condition = '') {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$this->itemid $condition");
+ }
+
+ function get_list($condition, $order = 'listorder ASC,itemid ASC') {
+ global $MOD, $pages, $page, $pagesize, $offset, $items, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['addr'] = $r['address'];
+ if($r['areaid']) $r['address'] = area_pos($r['areaid'], '').$r['address'];
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ return true;
+ }
+
+ function delete($itemid, $all = true) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->delete($v); }
+ } else {
+ $this->itemid = $itemid;
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ }
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/member/address.inc.php b/module/member/address.inc.php
new file mode 100644
index 0000000..52ff1c4
--- /dev/null
+++ b/module/member/address.inc.php
@@ -0,0 +1,82 @@
+ -1 or dheader(($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).'account.php?action=group&itemid=1');
+require DT_ROOT.'/include/post.func.php';
+require DT_ROOT.'/module/'.$module.'/address.class.php';
+$do = new address();
+include load('message.lang');
+switch($action) {
+ case 'add':
+ if($MG['address_limit']) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}address WHERE username='$_username'");
+ if($r['num'] >= $MG['address_limit']) dalert(lang($L['limit_add'], array($MG['address_limit'], $r['num'])), 'goback');
+ }
+ if($submit) {
+ if($do->pass($post)) {
+ $post['username'] = $_username;
+ $do->add($post);
+ dmsg($L['op_add_success'], '?action=index');
+ } else {
+ message($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ $$v = '';
+ }
+ $head_title = $L['address_title_add'];
+ }
+ break;
+ case 'edit':
+ $itemid or message();
+ $do->itemid = $itemid;
+ $r = $do->get_one();
+ if(!$r || $r['username'] != $_username) message();
+ if($submit) {
+ if($do->pass($post)) {
+ $post['username'] = $_username;
+ $do->edit($post);
+ dmsg($L['op_edit_success'], $forward);
+ } else {
+ message($do->errmsg);
+ }
+ } else {
+ extract($r);
+ $head_title = $L['address_title_edit'];
+ }
+ break;
+ case 'delete':
+ $itemid or message($L['address_msg_choose']);
+ $itemids = is_array($itemid) ? $itemid : array($itemid);
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if($item && $item['username'] == $_username) $do->delete($itemid);
+ }
+ dmsg($L['op_del_success'], $forward);
+ break;
+ default:
+ $condition = "username='$_username'";
+ if($keyword) $condition .= match_kw('address', $keyword);
+ $lists = $do->get_list($condition);
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}address WHERE username='$_username'");
+ $limit_used = $r['num'];
+ $limit_free = $MG['address_limit'] && $MG['address_limit'] > $limit_used ? $MG['address_limit'] - $limit_used : 0;
+ $head_title = $L['address_title'];
+ break;
+}
+if($DT_PC) {
+ //
+} else {
+ if(isset($lists)) {
+ $time = 'addtime';
+ foreach($lists as $k=>$v) {
+ $lists[$k]['date'] = timetodate($v[$time], 5);
+ }
+ }
+ if((!$action || $action == 'index') && !$kw) $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : '');
+ $head_name = $head_title;
+}
+include template('address', $module);
+?>
\ No newline at end of file
diff --git a/module/member/admin/address.inc.php b/module/member/admin/address.inc.php
new file mode 100644
index 0000000..2d2b89d
--- /dev/null
+++ b/module/member/admin/address.inc.php
@@ -0,0 +1,54 @@
+itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($do->get_one());
+ include tpl('address_edit', $module);
+ }
+ break;
+ case 'delete':
+ $itemid or msg('请选择地址');
+ $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ default:
+ $sfields = array('按条件', '姓名', '地址', '邮编', '手机', '电话', '会员', '备注');
+ $dfields = array('address', 'truename', 'address', 'postcode', 'mobile', 'telephone', 'username', 'note');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+
+ (isset($username) && check_name($username)) or $username = '';
+ isset($datetype) && in_array($datetype, array('addtime', 'edittime')) or $datetype = 'addtime';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+
+ $condition = '1';
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($username) $condition .= " AND username='$username'";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+ $lists = $do->get_list($condition, 'itemid DESC');
+ include tpl('address', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/member/admin/alert.inc.php b/module/member/admin/alert.inc.php
new file mode 100644
index 0000000..e5ab72e
--- /dev/null
+++ b/module/member/admin/alert.inc.php
@@ -0,0 +1,232 @@
+ 4 && isset($MODULE[$v])) $mids[] = $v;
+}
+if(in_array($action, array('', 'check'))) {
+ $sfields = array('按条件', '关键词', '会员名', '邮箱');
+ $dfields = array('word', 'word', 'username', 'email');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $sorder = array('结果排序方式', '添加时间降序', '添加时间升序', '发送时间降序', '发送时间升序', '发送频率降序', '发送频率升序');
+ $dorder = array('addtime DESC', 'addtime DESC', 'addtime ASC', 'sendtime DESC', 'sendtime ASC', 'rate DESC', 'rate ASC');
+ isset($order) && isset($dorder[$order]) or $order = 0;
+
+ $areaid = isset($areaid) ? intval($areaid) : 0;
+ isset($datetype) && in_array($datetype, array('sendtime', 'addtime')) or $datetype = 'addtime';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ (isset($username) && check_name($username)) or $username = '';
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+
+ $condition = '';
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($mid) $condition .= " AND mid=$mid";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+ if($username) $condition .= " AND username='$username'";
+}
+switch($action) {
+ case 'send':
+ if(isset($send)) {
+ if(isset($first)) {
+ $item = array();
+ $item['title'] = $title;
+ $item['total'] = $total;
+ $item['num'] = $num;
+ $item['sql'] = $sql;
+ $item['ord'] = $ord;
+ $item['template'] = $template;
+ cache_write('alert-'.$_userid.'.php', $item);
+ } else {
+ $item = cache_read('alert-'.$_userid.'.php');
+ extract($item);
+ }
+ if(!isset($num)) {
+ $num = 5;
+ }
+ if(!isset($fid)) {
+ $r = $db->get_one("SELECT min(itemid) AS fid FROM {$DT_PRE}alert");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ }
+ isset($sid) or $sid = $fid;
+ if(!isset($tid)) {
+ $r = $db->get_one("SELECT max(itemid) AS tid FROM {$DT_PRE}alert");
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ }
+ if($fid <= $tid) {
+ $result = $db->query("SELECT * FROM {$DT_PRE}alert WHERE itemid>=$fid AND status=3 ORDER BY itemid LIMIT 0,$num");
+ $_MOD = $MOD;
+ if($db->affected_rows($result)) {
+ while($r = $db->fetch_array($result)) {
+ $itemid = $r['itemid'];
+ $rate = $r['rate'];
+ if($rate && $r['sendtime'] && $DT_TIME - $rate*86400 < $r['sendtime']) continue;
+ $kw = $r['word'];
+ $mid = $r['mid'];
+ $catid = $r['catid'];
+ $areaid = $r['areaid'];
+ $MOD = cache_read('module-'.$mid.'.php');
+ $CAT = get_cat($catid);
+ $condition = "status=3 AND addtime>$r[sendtime]";
+ if($kw) $condition .= match_kw('keyword', $keyword);
+ if($areaid) $condition .= $AREA[$areaid]['child'] ? " AND areaid IN (".$AREA[$areaid]['arrchildid'].")" : " AND areaid=$areaid";
+ if($catid) $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($sql) $condition .= ' '.$sql;
+ if($ord) $condition .= ' ORDER BY '.$ord;
+ $lists = array();
+ $results = $db->query("SELECT * FROM ".get_table($mid)." WHERE $condition LIMIT 0,$total");
+ while($rs = $db->fetch_array($results)) {
+ if(strpos($rs['linkurl'], '://') === false) $rs['linkurl'] = $MOD['linkurl'].$rs['linkurl'];
+ $lists[] = $rs;
+ }
+ $content = ob_template($template ? $template : 'alert', 'mail');
+ send_mail($r['email'], $title, $content);
+ $db->query("UPDATE {$DT_PRE}alert SET sendtime=$DT_TIME WHERE itemid=$itemid");
+ }
+ $itemid += 1;
+ } else {
+ $itemid = $fid + $num;
+ }
+ $MOD = $_MOD;
+ } else {
+ dmsg('发送成功', "?moduleid=$moduleid&file=$file");
+ }
+ msg('ID从'.$fid.'至'.($itemid-1).'发送成功'.progress($sid, $fid, $tid), "?moduleid=$moduleid&file=$file&action=$action&sid=$sid&fid=$itemid&tid=$tid&num=$num&send=1");
+ } else {
+ $item = cache_read('alert-'.$_userid.'.php');
+ if($item) {
+ extract($item);
+ } else {
+ $title = $DT['sitename'].'[贸易提醒]';
+ $total = 30;
+ $num = 5;
+ $template = '';
+ $sql = 'AND vip>0';
+ $ord = 'addtime DESC';
+ }
+ include tpl('alert_send', $module);
+ }
+ break;
+ case 'add':
+ if($submit) {
+ $usernames = explode("\n", trim($post['username']));
+ foreach($usernames as $username) {
+ $username = trim($username);
+ if(!$username) continue;
+ $user = userinfo($username);
+ if(!$user) continue;
+ $post['username'] = $username;
+ $post['email'] = $user['email'];
+ $post['addtime'] = $DT_TIME;
+ if($do->pass($post)) {
+ $do->add($post);
+ } else {
+ msg($do->errmsg);
+ }
+ }
+ dmsg('添加成功', '?moduleid='.$moduleid.'&file='.$file);
+ } else {
+ $mid or $mid = $mids[0];
+ $mid or msg();
+ isset($username) or $username = '';
+ if(isset($userid)) {
+ if($userid) {
+ $userids = is_array($userid) ? implode(',', $userid) : $userid;
+ $result = $db->query("SELECT username FROM {$DT_PRE}member WHERE userid IN ($userids)");
+ while($r = $db->fetch_array($result)) {
+ $username .= $r['username']."\n";
+ }
+ }
+ }
+ $word = '';
+ $catid = $areaid = $rate = 0;
+ $status = 3;
+ $menuid = 0;
+ include tpl('alert_edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ $r = $do->get_one();
+ if(!$r) msg();
+ if($submit) {
+ if($do->pass($post)) {
+ $user = userinfo($post['username']);
+ if($user) {
+ $email = $post['email'] = $user['email'];
+ $do->edit($post);
+ $db->query("UPDATE {$DT_PRE}alert SET email='$email' WHERE username='$post[username]'");
+ dmsg('修改成功', $forward);
+ } else {
+ msg('会员不存在');
+ }
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($r);
+ $menuid = 1;
+ include tpl('alert_edit', $module);
+ }
+ break;
+ case 'reject':
+ $itemid or msg('请选择贸易提醒');
+ $do->check($itemid, 2);
+ dmsg('撤销成功', $forward);
+ break;
+ case 'delete':
+ $itemid or msg('请选择贸易提醒');
+ $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'check':
+ if($itemid && !$psize) {
+ $do->check($itemid);
+ dmsg('审核成功', $forward);
+ } else {
+ $lists = $do->get_list('status=2'.$condition, $dorder[$order]);
+ if($lists) {
+ $tmp = $MOD['linkurl'];
+ foreach($lists as $k=>$v) {
+ if($v['catid']) {
+ $lists[$k]['cate'] = cat_pos(get_cat($v['catid']), '-', 1);
+ }
+ }
+ $MOD['linkurl'] = $tmp;
+ }
+ $menuid = 2;
+ include tpl('alert', $module);
+ }
+ break;
+ default:
+ $lists = $do->get_list('status=3'.$condition, $dorder[$order]);
+ if($lists) {
+ $tmp = $MOD['linkurl'];
+ foreach($lists as $k=>$v) {
+ if($v['catid']) {
+ $lists[$k]['cate'] = cat_pos(get_cat($v['catid']), '-', 1);
+ }
+ }
+ $MOD['linkurl'] = $tmp;
+ }
+ $menuid = 1;
+ include tpl('alert', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/member/admin/card.inc.php b/module/member/admin/card.inc.php
new file mode 100644
index 0000000..fff453d
--- /dev/null
+++ b/module/member/admin/card.inc.php
@@ -0,0 +1,104 @@
+get_one("SELECT itemid FROM {$table} WHERE number='$number'")) {
+ $i--;
+ } else {
+ $t++;
+ $password = random($password_length, '0123456');
+ $db->query("INSERT INTO {$table} (number,password,amount,editor,addtime,totime) VALUES('$number','$password','$amount','$_username','$DT_TIME','$totime')");
+ }
+ }
+ msg('成功生成 '.$t.' 个', '?moduleid='.$moduleid.'&file='.$file);
+ } else {
+ $prefix = mt_rand(1000, 9999);
+ $totime = (timetodate($DT_TIME, "Y") + 3).timetodate($DT_TIME, '-m-d');
+ include tpl('card_add', $module);
+ }
+ break;
+ case 'delete':
+ $itemid or msg('未选择记录');
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ $db->query("DELETE FROM {$table} WHERE itemid IN ($itemids)");
+ dmsg('删除成功', $forward);
+ break;
+ default:
+ $print = isset($print) ? 1 : 0;
+ $sfields = array('按条件', '卡号', '密码', '面额', '会员', 'IP', '操作人');
+ $dfields = array('number', 'number', 'password', 'amount', 'username', 'ip', 'editor');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $sorder = array('排序方式', '面额降序', '面额升序', '充值时间降序', '充值时间升序', '到期时间降序', '到期时间升序', '制卡时间降序', '制卡时间升序');
+ $dorder = array('itemid DESC', 'amount DESC', 'amount ASC', 'updatetime DESC', 'updatetime ASC', 'totime DESC', 'totime ASC', 'addtime DESC', 'addtime ASC');
+ isset($order) && isset($dorder[$order]) or $order = 0;
+
+ (isset($username) && check_name($username)) or $username = '';
+ (isset($editor) && check_name($editor)) or $editor = '';
+ isset($datetype) && in_array($datetype, array('updatetime', 'totime', 'addtime')) or $datetype = 'updatetime';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ isset($type) or $type = 0;
+ isset($minamount) or $minamount = '';
+ isset($maxamount) or $maxamount = '';
+ isset($status) or $status = 0;
+ isset($number) or $number = '';
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+
+ $condition = '1';
+ if($keyword) $condition .= " AND $dfields[$fields]='$keyword'";
+ if($print) $condition .= " AND updatetime=0 AND totime>$DT_TIME";
+ if($fromtime) $condition .= " AND $datetype>=$fromtime";
+ if($totime) $condition .= " AND $datetype<=$totime";
+ if($username) $condition .= " AND username='$username'";
+ if($editor) $condition .= " AND editor='$editor'";
+ if($number) $condition .= " AND number='$number'";
+ if($minamount != '') $condition .= " AND amount>=$minamount";
+ if($maxamount != '') $condition .= " AND amount<=$maxamount";
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table} WHERE $condition ORDER BY $dorder[$order] LIMIT $offset,$pagesize");
+ $income = $expense = 0;
+ while($r = $db->fetch_array($result)) {
+ $r['addtime'] = timetodate($r['addtime'], 5);
+ $r['totime'] = timetodate($r['totime'], 3);
+ $r['updatetime'] = $r['updatetime'] ? timetodate($r['updatetime'], 5) : '未使用';
+ $lists[] = $r;
+ }
+ include tpl('card', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/member/admin/charge.inc.php b/module/member/admin/charge.inc.php
new file mode 100644
index 0000000..e981127
--- /dev/null
+++ b/module/member/admin/charge.inc.php
@@ -0,0 +1,152 @@
+ 1) { $xd .= ','; $y0 .= ','; $y1 .= ','; $y2 .= ','; $y3 .= ','; }
+ $xd .= "'".$i."日'";
+ $F = datetotime($year.'-'.$month.'-'.$i.' 00:00:00');
+ $T = datetotime($year.'-'.$month.'-'.$i.' 23:59:59');
+ $t = $db->get_one("SELECT SUM(`amount`) AS num FROM {$table} WHERE sendtime>=$F AND sendtime<=$T AND status>2");
+ $num = $t['num'] ? dround($t['num']) : 0;
+ $y0 .= $num; $t0 += $num;
+ $t = $db->get_one("SELECT SUM(`amount`) AS num FROM {$table} WHERE sendtime>=$F AND sendtime<=$T AND status=0");
+ $num = $t['num'] ? dround($t['num']) : 0;
+ $y1 .= $num; $t1 += $num;
+ $t = $db->get_one("SELECT SUM(`amount`) AS num FROM {$table} WHERE sendtime>=$F AND sendtime<=$T AND status=1");
+ $num = $t['num'] ? dround($t['num']) : 0;
+ $y2 .= $num; $t2 += $num;
+ $t = $db->get_one("SELECT SUM(`amount`) AS num FROM {$table} WHERE sendtime>=$F AND sendtime<=$T AND status=2");
+ $num = $t['num'] ? dround($t['num']) : 0;
+ $y3 .= $num; $t3 += $num;
+ }
+ $title = $year.'年'.$month.'月会员支付统计报表(单位:'.$DT['money_unit'].')';
+ } else {
+ for($i = 1; $i < 13; $i++) {
+ if($i > 1) { $xd .= ','; $y0 .= ','; $y1 .= ','; $y2 .= ','; $y3 .= ','; }
+ $xd .= "'".$i."月'";
+ $F = datetotime($year.'-'.$i.'-01 00:00:00');
+ $T = datetotime($year.'-'.$i.'-'.date('t', $F).' 23:59:59');
+ $t = $db->get_one("SELECT SUM(`amount`) AS num FROM {$table} WHERE sendtime>=$F AND sendtime<=$T AND status>2");
+ $num = $t['num'] ? dround($t['num']) : 0;
+ $y0 .= $num; $t0 += $num;
+ $t = $db->get_one("SELECT SUM(`amount`) AS num FROM {$table} WHERE sendtime>=$F AND sendtime<=$T AND status=0");
+ $num = $t['num'] ? dround($t['num']) : 0;
+ $y1 .= $num; $t1 += $num;
+ $t = $db->get_one("SELECT SUM(`amount`) AS num FROM {$table} WHERE sendtime>=$F AND sendtime<=$T AND status=1");
+ $num = $t['num'] ? dround($t['num']) : 0;
+ $y2 .= $num; $t2 += $num;
+ $t = $db->get_one("SELECT SUM(`amount`) AS num FROM {$table} WHERE sendtime>=$F AND sendtime<=$T AND status=2");
+ $num = $t['num'] ? dround($t['num']) : 0;
+ $y3 .= $num; $t3 += $num;
+ }
+ $title = $year.'年会员支付统计报表(单位:'.$DT['money_unit'].')';
+ }
+ include tpl('charge_stats', $module);
+ break;
+ case 'check':
+ $itemid or msg('请选择记录');
+ $itemid = implode(',', $itemid);
+ $result = $db->query("SELECT * FROM {$table} WHERE itemid IN ($itemid) AND status<2");
+ $i = 0;
+ while($r = $db->fetch_array($result)) {
+ $money = $r['amount'] + $r['fee'];
+ money_add($r['username'], $r['amount']);
+ money_record($r['username'], $r['amount'], $PAY[$r['bank']]['name'], $_username, '在线支付', '人工');
+ $db->query("UPDATE {$table} SET money='$money',status=4,editor='$_username',receivetime=$DT_TIME WHERE itemid=$r[itemid]");
+ $i++;
+ }
+ dmsg('审核成功'.$i.'条记录', $forward);
+ break;
+ case 'recycle':
+ $itemid or msg('请选择记录');
+ $itemid = implode(',', $itemid);
+ $db->query("UPDATE {$table} SET status=2,editor='$_username',receivetime=$DT_TIME WHERE itemid IN ($itemid) AND status=0");
+ dmsg('作废成功'.$db->affected_rows().'条记录', $forward);
+ break;
+ case 'delete':
+ $itemid or msg('请选择记录');
+ $itemid = implode(',', $itemid);
+ $db->query("DELETE FROM {$table} WHERE itemid IN ($itemid) AND status=0");
+ dmsg('删除成功'.$db->affected_rows().'条记录', $forward);
+ break;
+ default:
+ $_status = array('等待支付 ', '支付失败 ', '记录作废 ', '支付成功 ', '人工审核 ');
+ $sfields = array('按条件', '会员名', '支付金额', '手续费', '实收金额', '事由', '备注', '操作人');
+ $dfields = array('username', 'username', 'amount', 'fee', 'money', 'reason', 'note', 'editor');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $sorder = array('结果排序方式', '支付金额降序', '支付金额升序', '手续费降序', '手续费升序', '实收金额降序', '实收金额升序', '下单时间降序', '下单时间升序', '支付时间降序', '支付时间升序', '流水号降序', '流水号升序');
+ $dorder = array('itemid DESC', 'amount DESC', 'amount ASC', 'fee DESC', 'fee ASC', 'money DESC', 'money ASC', 'sendtime DESC', 'sendtime ASC', 'receivetime DESC', 'receivetime ASC', 'itemid DESC', 'itemid ASC');
+ isset($order) && isset($dorder[$order]) or $order = 0;
+
+ (isset($username) && check_name($username)) or $username = '';
+ (isset($editor) && check_name(strtolower($editor))) or $editor = '';
+ isset($datetype) && in_array($datetype, array('sendtime', 'receivetime')) or $datetype = 'sendtime';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ isset($bank) or $bank = '';
+ isset($mtype) && in_array($mtype, array('amount', 'fee', 'money')) or $mtype = 'amount';
+ isset($minamount) or $minamount = '';
+ isset($maxamount) or $maxamount = '';
+ $status = isset($status) && isset($dstatus[$status]) ? intval($status) : '';
+ $itemid or $itemid = '';
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $status_select = dselect($dstatus, 'status', '状态', $status, '', 1, '', 1);
+ $order_select = dselect($sorder, 'order', '', $order);
+
+ $condition = '1';
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($bank) $condition .= " AND bank='$bank'";
+ if($fromtime) $condition .= " AND $datetype>=$fromtime";
+ if($totime) $condition .= " AND $datetype<=$totime";
+ if($status !== '') $condition .= " AND status=$status";
+ if($username) $condition .= " AND username='$username'";
+ if($editor) $condition .= " AND editor='$editor'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ if($minamount != '') $condition .= " AND $mtype>=$minamount";
+ if($maxamount != '') $condition .= " AND $mtype<=$maxamount";
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $amount = $fee = $money = 0;
+ $result = $db->query("SELECT * FROM {$table} WHERE $condition ORDER BY $dorder[$order] LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['sendtime'] = timetodate($r['sendtime'], 5);
+ $r['receivetime'] = $r['receivetime'] ? timetodate($r['receivetime'], 5) : '--';
+ $r['editor'] or $r['editor'] = 'system';
+ $r['dstatus'] = $_status[$r['status']];
+ $amount += $r['amount'];
+ $fee += $r['fee'];
+ $money += $r['money'];
+ $lists[] = $r;
+ }
+ $amount = dround($amount, 2, 1);
+ $fee = dround($fee, 2, 1);
+ $money = dround($money, 2, 1);
+ include tpl('charge', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/member/admin/chat.inc.php b/module/member/admin/chat.inc.php
new file mode 100644
index 0000000..cbb1765
--- /dev/null
+++ b/module/member/admin/chat.inc.php
@@ -0,0 +1,132 @@
+query("DELETE FROM {$table} WHERE lasttime<$time");
+ for($i = 0; $i < 10; $i++) {
+ $db->query("DELETE FROM {$table}_data_{$i} WHERE addtime<$time");
+ }
+ dmsg('清理成功', $forward);
+ break;
+ case 'del':
+ if(is_array($chatid)) {
+ foreach($chatid as $cid) {
+ if(is_md5($cid)) $db->query("DELETE FROM {$table} WHERE chatid='$cid'");
+ }
+ } else {
+ if(is_md5($chatid)) $db->query("DELETE FROM {$table} WHERE chatid='$chatid'");
+ }
+ dmsg('删除成功', $forward);
+ break;
+ case 'delete':
+ $itemid or msg('未选择记录');
+ is_md5($chatid) or msg('未指定聊天ID');
+ $table = get_chat_tb($chatid);
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ $db->query("DELETE FROM {$table} WHERE itemid IN ($itemids)");
+ dmsg('删除成功', $forward);
+ break;
+ case 'view':
+ $lists = array();
+ if(is_md5($chatid)) {
+ $table = get_chat_tb($chatid);
+ $sfields = array('按条件', '内容', '会员', '昵称');
+ $dfields = array('content', 'content', 'username', 'nickname');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $sorder = array('结果排序方式', '发言时间降序', '发言时间升序');
+ $dorder = array('addtime DESC', 'addtime DESC', 'addtime ASC');
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ (isset($username) && check_name($username)) or $username = '';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+ $condition = "chatid='$chatid'";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($username) $condition .= " AND username='$username'";
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table} WHERE $condition ORDER BY $dorder[$order] LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $word = $r['content'];
+ if($MOD['chat_url'] || $MOD['chat_img']) {
+ if(preg_match_all("/([http|https]+)\:\/\/([a-z0-9\/\-\_\.\,\?\&\#\=\%\+\;]{4,})/i", $word, $m)) {
+ foreach($m[0] as $u) {
+ if($MOD['chat_img'] && preg_match("/^(jpg|jpeg|gif|png|bmp)$/i", file_ext($u)) && !preg_match("/([\?\&\=]{1,})/i", $u)) {
+ $word = str_replace($u, ' ', $word);
+ } else if($MOD['chat_img'] && preg_match("/^(mp4)$/i", file_ext($u)) && !preg_match("/([\?\&\=]{1,})/i", $u)) {
+ $word = str_replace($u, ' ', $word);
+ } else if($MOD['chat_url']) {
+ $word = str_replace($u, ''.$u.' ', $word);
+ }
+ }
+ }
+ }
+ if(strpos($word, ')') !== false) $word = parse_face($word);
+ if(strpos($word, '[emoji]') !== false) $word = emoji_decode($word);
+ $r['word'] = $word;
+ $r['date'] = timetodate($r['addtime'], 6);
+ $lists[] = $r;
+ }
+ }
+ include tpl('chat_view', $module);
+ break;
+ default:
+ $sfields = array('按条件', '发起人', '接收人', '来源');
+ $dfields = array('fromuser', 'fromuser', 'touser', 'forward');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $sorder = array('结果排序方式', '开始时间降序', '开始时间升序');
+ $dorder = array('freadtime DESC', 'freadtime DESC', 'freadtime ASC');
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ isset($datetype) && in_array($datetype, array('freadtime', 'fgettime', 'treadtime', 'tgettime')) or $datetype = 'freadtime';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ (isset($fromuser) && check_name($fromuser)) or $fromuser = '';
+ (isset($touser) && check_name($touser)) or $touser = '';
+ (isset($username) && check_name($username)) or $username = '';
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+
+ $condition = '1';
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+ if($fromuser) $condition .= " AND fromuser='$fromuser'";
+ if($touser) $condition .= " AND touser='$touser'";
+ if($username) $condition .= " AND (fromuser='$username' OR touser='$username')";
+
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table} WHERE $condition ORDER BY $dorder[$order] LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ if($r['forward'] && strpos($r['forward'], '://') === false) $r['forward'] = 'http://'.$r['forward'];
+ $lists[] = $r;
+ }
+ include tpl('chat', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/member/admin/child.inc.php b/module/member/admin/child.inc.php
new file mode 100644
index 0000000..d04ce8c
--- /dev/null
+++ b/module/member/admin/child.inc.php
@@ -0,0 +1,103 @@
+ 4 && is_file(DT_ROOT.'/module/'.$m['module'].'/my.inc.php')) {
+ $MENUMODS[] = $m['moduleid'];
+ }
+ }
+ return $MENUMODS;
+}
+function is_parent($username) {
+ if(!check_name($username)) return false;
+ return userinfo($username);
+}
+switch($action) {
+ case 'add':
+ if($submit) {
+ if($do->pass($post)) {
+ is_parent($post['parent']) or msg('所属会员不存在');
+ $do->parent = $post['parent'];
+ $do->add($post);
+ dmsg('添加成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $gender = 1;
+ $status = 3;
+ $permission = array();
+ $MENUMODS = get_menumods();
+ $menuid = 0;
+ include tpl('child_edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ is_parent($post['parent']) or msg('所属会员不存在');
+ $do->parent = $post['parent'];
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($do->get_one());
+ $permission = explode(',', $permission);
+ $MENUMODS = get_menumods();
+ $menuid = 1;
+ include tpl('child_edit', $module);
+ }
+ break;
+ case 'delete':
+ $itemid or msg('请选择账号');
+ isset($recycle) ? $do->recycle($itemid) : $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ default:
+ $sfields = array('按条件', '所属会员', '会员名', '昵称', '角色', '部门', '姓名', '手机', '权限');
+ $dfields = array('parent', 'parent', 'username', 'nickname', 'role', 'department', 'truename', 'mobile', 'permission');
+ $sorder = array('结果排序方式', '添加时间降序', '添加时间升序', '修改时间降序', '修改时间升序', '登录时间降序', '登录时间升序', '登录次数降序', '登录次数升序');
+ $dorder = array('itemid DESC', 'addtime DESC', 'addtime ASC', 'edittime DESC', 'edittime ASC', 'logintime DESC', 'logintime ASC', 'logintimes DESC', 'logintimes ASC');
+
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ (isset($username) && check_name($username)) or $username = '';
+ isset($datetype) && in_array($datetype, array('addtime', 'edittime', 'logintime')) or $datetype = 'addtime';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ $status = isset($status) ? intval($status) : 0;
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+
+ $condition = '1';
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($username) $condition .= " AND parent='$username'";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+ if($username) $condition .= " AND parent='$username'";
+ if($status) $condition .= " AND status=$status";
+ $lists = $do->get_list($condition, $dorder[$order]);
+ $menuid = 1;
+ include tpl('child', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/member/admin/contact.inc.php b/module/member/admin/contact.inc.php
new file mode 100644
index 0000000..0b3b727
--- /dev/null
+++ b/module/member/admin/contact.inc.php
@@ -0,0 +1,154 @@
+0" : " AND m.edittime=0";
+if($vemail) $condition .= $vemail == 1 ? " AND m.vemail>0" : " AND m.vemail=0";
+if($vmobile) $condition .= $vmobile == 1 ? " AND m.vmobile>0" : " AND m.vmobile=0";
+if($vtruename) $condition .= $vtruename == 1 ? " AND m.vtruename>0" : " AND m.vtruename=0";
+if($vbank) $condition .= $vbank == 1 ? " AND m.vbank>0" : " AND m.vbank=0";
+if($vcompany) $condition .= $vcompany == 1 ? " AND m.vcompany>0" : " AND m.vcompany=0";
+if($fromtime) $condition .= " AND $timetype>=$fromtime";
+if($totime) $condition .= " AND $timetype<=$totime";
+if($minmoney) $condition .= " AND m.money>=$minmoney";
+if($maxmoney) $condition .= " AND m.money<=$maxmoney";
+if($mincredit) $condition .= " AND m.credit>=$mincredit";
+if($maxcredit) $condition .= " AND m.credit<=$maxcredit";
+if($minsms) $condition .= " AND m.sms>=$minsms";
+if($maxsms) $condition .= " AND m.sms<=$maxsms";
+if($valid) $condition .= $valid == 1 ? " AND c.validated=1" : " AND c.validated=0";
+if($catid) $condition .= " AND c.catids LIKE '%,".$catid.",%'";
+if($areaid) $condition .= ($ARE['child']) ? " AND c.areaid IN (".$ARE['arrchildid'].")" : " AND c.areaid=$areaid";
+if($mode) $condition .= " AND c.mode LIKE '%$modes[$mode]%'";
+if($type) $condition .= " AND c.type='$types[$type]'";
+if($size) $condition .= " AND c.size='$sizes[$size]'";
+if($thumb) $condition .= " AND c.thumb<>''";
+if($mincapital) $condition .= " AND c.capital>$mincapital";
+if($maxcapital) $condition .= " AND c.capital<$maxcapital";
+if($export) {
+ $data = '会员ID,会员名,会员组,公司名,姓名,职位,性别,电话,手机,详细地址,邮编,电子邮件';
+ if($DT['im_qq']) $data .= ',QQ';
+ if($DT['im_wx']) $data .= ',微信';
+ if($DT['im_ali']) $data .= ',阿里旺旺';
+ if($DT['im_skype']) $data .= ',Skype';
+ $data .= "\n";
+ $result = $db->query("SELECT * FROM {$DT_PRE}member m,{$DT_PRE}company c WHERE $condition ORDER BY $dorder[$order]");
+ while($r = $db->fetch_array($result)) {
+ $data .= $r['userid'].',';
+ $data .= $r['username'].',';
+ $data .= $GROUP[$r['groupid']]['groupname'].',';
+ $data .= $r['company'].',';
+ $data .= $r['truename'].',';
+ $data .= $r['career'].',';
+ $data .= gender($r['gender']).',';
+ $data .= $r['telephone'].',';
+ $data .= $r['mobile'].',';
+ $data .= $r['address'].',';
+ $data .= $r['postcode'].',';
+ $data .= $r['email'].',';
+ if($DT['im_qq']) $data .= $r['qq'].',';
+ if($DT['im_wx']) $data .= $r['wx'].',';
+ if($DT['im_ali']) $data .= $r['ali'].',';
+ if($DT['im_skype']) $data .= $r['skype'].',';
+ $data .= "\n";
+ }
+ $data = convert($data, DT_CHARSET, 'GBK');
+ file_down('', 'contact.csv', $data);
+}
+if($page > 1 && $sum) {
+ $items = $sum;
+} else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}member m,{$DT_PRE}company c WHERE $condition");
+ $items = $r['num'];
+}
+$pages = pages($items, $page, $pagesize);
+$members = array();
+$result = $db->query("SELECT * FROM {$DT_PRE}member m,{$DT_PRE}company c WHERE $condition ORDER BY $dorder[$order] LIMIT $offset,$pagesize");
+while($r = $db->fetch_array($result)) {
+ $r['logindate'] = timetodate($r['logintime'], 5);
+ $r['regdate'] = timetodate($r['regtime'], 5);
+ $members[] = $r;
+}
+include tpl('contact', $module);
+?>
\ No newline at end of file
diff --git a/module/member/admin/credit.inc.php b/module/member/admin/credit.inc.php
new file mode 100644
index 0000000..3877c1d
--- /dev/null
+++ b/module/member/admin/credit.inc.php
@@ -0,0 +1,117 @@
+query("DELETE FROM {$table} WHERE addtime<$time");
+ dmsg('清理成功', $forward);
+ break;
+ case 'add':
+ if($submit) {
+ $username or msg('请填写会员名');
+ $amount or msg('请填写分值');
+ $reason or msg('请填写事由');
+ $amount = intval($amount);
+ if($amount <= 0) msg('分值格式错误');
+ if(!$type) $amount = -$amount;
+ $error = '';
+ $success = 0;
+ $usernames = explode("\n", trim($username));
+ foreach($usernames as $username) {
+ $username = trim($username);
+ if(!$username) continue;
+ $r = $db->get_one("SELECT username,credit FROM {$DT_PRE}member WHERE username='$username'");
+ if(!$r) {
+ $error .= ' 会员['.$username.']不存在';
+ continue;
+ }
+ if(!$type && $r['credit'] < abs($amount)) {
+ $error .= ' 会员['.$username.']'.$DT['credit_name'].'不足,当前'.$DT['credit_name'].'为:'.$r['credit'];
+ continue;
+ }
+ $reason or $reason = '奖励';
+ $note or $note = '手工';
+ credit_add($username, $amount);
+ credit_record($username, $amount, $_username, $reason, $note);
+ }
+ if($error) msg('操作成功 '.$success.' 位会员,发生以下错误:'.$error);
+ dmsg('操作成功', '?moduleid='.$moduleid.'&file='.$file);
+ } else {
+ if(isset($userid)) {
+ if($userid) {
+ $userids = is_array($userid) ? implode(',', $userid) : $userid;
+ $result = $db->query("SELECT username FROM {$DT_PRE}member WHERE userid IN ($userids)");
+ while($r = $db->fetch_array($result)) {
+ $username .= $r['username']."\n";
+ }
+ }
+ }
+ include tpl('credit_add', $module);
+ }
+ break;
+ case 'delete':
+ $itemid or msg('未选择记录');
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ $db->query("DELETE FROM {$table} WHERE itemid IN ($itemids)");
+ dmsg('删除成功', $forward);
+ break;
+ default:
+ $sfields = array('按条件', '会员名', '金额', '事由', '备注', '操作人');
+ $dfields = array('username', 'username', 'amount', 'reason', 'note', 'editor');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $sorder = array('排序方式', '金额降序', '金额升序', '余额降序', '余额升序', '时间降序', '时间升序', '流水降序', '流水升序');
+ $dorder = array('itemid DESC', 'amount DESC', 'amount ASC', 'balance DESC', 'balance ASC', 'addtime DESC', 'addtime ASC', 'itemid DESC', 'itemid ASC');
+ isset($order) && isset($dorder[$order]) or $order = 0;
+
+ (isset($username) && check_name($username)) or $username = '';
+ (isset($editor) && check_name($editor)) or $editor = '';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ isset($type) or $type = 0;
+ isset($mtype) && in_array($mtype, array('amount', 'balance')) or $mtype = 'amount';
+ $minamount = isset($minamount) ? intval($minamount) : '';
+ $minamount or $minamount = '';
+ $maxamount = isset($maxamount) ? intval($maxamount) : '';
+ $maxamount or $maxamount = '';
+ $itemid or $itemid = '';
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+
+ $condition = '1';
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($type) $condition .= $type == 1 ? " AND amount>0" : " AND amount<0";
+ if($username) $condition .= " AND username='$username'";
+ if($editor) $condition .= " AND editor='$editor'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ if($minamount != '') $condition .= " AND $mtype>=$minamount";
+ if($maxamount != '') $condition .= " AND $mtype<=$maxamount";
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table} WHERE $condition ORDER BY $dorder[$order] LIMIT $offset,$pagesize");
+ $income = $expense = 0;
+ while($r = $db->fetch_array($result)) {
+ $r['addtime'] = timetodate($r['addtime'], 5);
+ $r['amount'] > 0 ? $income += $r['amount'] : $expense += $r['amount'];
+ $lists[] = $r;
+ }
+ include tpl('credit', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/member/admin/deposit.inc.php b/module/member/admin/deposit.inc.php
new file mode 100644
index 0000000..58cfc8f
--- /dev/null
+++ b/module/member/admin/deposit.inc.php
@@ -0,0 +1,105 @@
+get_one("SELECT username,deposit FROM {$DT_PRE}member WHERE username='$username'");
+ if(!$r) {
+ $error .= ' 会员['.$username.']不存在';
+ continue;
+ }
+ if(!$type && $r['deposit'] < abs($amount)) {
+ $error .= ' 会员['.$username.']保证金余额不足,当前余额为:'.$r['deposit'];
+ continue;
+ }
+ $db->query("INSERT INTO {$DT_PRE}finance_deposit (username,amount,addtime,editor,reason,note) VALUES ('$username','$amount','$DT_TIME','$_username','$reason','$note')");
+ $db->query("UPDATE {$DT_PRE}member SET deposit=deposit+$amount WHERE username='$username'");
+ $success++;
+ }
+ if($error) msg('操作成功 '.$success.' 位会员,发生以下错误:'.$error);
+ dmsg('操作成功', '?moduleid='.$moduleid.'&file='.$file);
+ } else {
+ if(isset($userid)) {
+ if($userid) {
+ $userids = is_array($userid) ? implode(',', $userid) : $userid;
+ $result = $db->query("SELECT username FROM {$DT_PRE}member WHERE userid IN ($userids)");
+ while($r = $db->fetch_array($result)) {
+ $username .= $r['username']."\n";
+ }
+ }
+ }
+ include tpl('deposit_add', $module);
+ }
+ break;
+ default:
+ $sfields = array('按条件', '会员名', '金额', '事由', '备注', '操作人');
+ $dfields = array('username', 'username', 'amount', 'reason', 'note', 'editor');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $sorder = array('排序方式', '金额降序', '金额升序', '时间降序', '时间升序', '流水降序', '流水升序');
+ $dorder = array('itemid DESC', 'amount DESC', 'amount ASC', 'addtime DESC', 'addtime ASC', 'itemid DESC', 'itemid ASC');
+ isset($order) && isset($dorder[$order]) or $order = 0;
+
+ (isset($username) && check_name($username)) or $username = '';
+ (isset($editor) && check_name($editor)) or $editor = '';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ isset($type) or $type = 0;
+ isset($minamount) or $minamount = '';
+ isset($maxamount) or $maxamount = '';
+ $itemid or $itemid = '';
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+
+ $condition = '1';
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($type) $condition .= $type == 1 ? " AND amount>0" : " AND amount<0";
+ if($username) $condition .= " AND username='$username'";
+ if($editor) $condition .= " AND editor='$editor'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ if($minamount != '') $condition .= " AND amount>=$minamount";
+ if($maxamount != '') $condition .= " AND amount<=$maxamount";
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table} WHERE $condition ORDER BY $dorder[$order] LIMIT $offset,$pagesize");
+ $income = $expense = 0;
+ while($r = $db->fetch_array($result)) {
+ $r['addtime'] = timetodate($r['addtime'], 5);
+ $r['amount'] > 0 ? $income += $r['amount'] : $expense += $r['amount'];
+ $lists[] = $r;
+ }
+ $income = dround($income, 2, 1);
+ $expense = dround($expense, 2, 1);
+ include tpl('deposit', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/member/admin/friend.inc.php b/module/member/admin/friend.inc.php
new file mode 100644
index 0000000..aa570b1
--- /dev/null
+++ b/module/member/admin/friend.inc.php
@@ -0,0 +1,55 @@
+itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($do->get_one());
+ include tpl('friend_edit', $module);
+ }
+ break;
+ case 'delete':
+ $itemid or msg('请选择商友');
+ $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ default:
+ $sfields = array('按条件', '姓名', '公司', '职位', '电话', '手机', '主页', 'Email', 'QQ', '微信', '会员', '备注');
+ $dfields = array('company', 'truename', 'company', 'career', 'telephone', 'mobile', 'homepage', 'email', 'qq', 'wx', 'username', 'note');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+
+ $userid = isset($userid) ? intval($userid) : '';
+ $userid or $userid = '';
+ (isset($username) && check_name($username)) or $username = '';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+
+ $condition = '1';
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($userid) $condition .= " AND userid=$userid";
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($username) $condition .= " AND username='$username'";
+ $lists = $do->get_list($condition);
+ include tpl('friend', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/member/admin/grade.inc.php b/module/member/admin/grade.inc.php
new file mode 100644
index 0000000..b2a03d6
--- /dev/null
+++ b/module/member/admin/grade.inc.php
@@ -0,0 +1,218 @@
+已拒绝 ', '待处理 ', '已通过 ');
+$dstatus = array('状态', '已拒绝', '待处理', '已通过');
+if(in_array($action, array('', 'check', 'reject'))) {
+ $sfields = array('按条件', '公司名', '会员名', '操作人', '操作原因', '备注');
+ $dfields = array('company', 'company', 'username', 'editor', 'reason', 'note');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $sorder = array('结果排序方式', '申请时间降序', '申请时间升序', '受理时间降序', '受理时间升序', '支付费用降序', '支付费用升序', '申请状态降序', '申请状态升序', '原会员组ID降序', '原会员组ID升序', '新会员组ID降序', '新会员组ID升序');
+ $dorder = array('addtime DESC', 'addtime DESC', 'addtime ASC', 'edittime DESC', 'edittime ASC', 'amount DESC', 'amount ASC', 'status DESC', 'status ASC', 'gid DESC', 'gid ASC', 'groupid DESC', 'groupid ASC');
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ isset($datetype) && in_array($datetype, array('addtime', 'edittime')) or $datetype = 'addtime';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ (isset($username) && check_name($username)) or $username = '';
+ (isset($editor) && check_name($editor)) or $editor = '';
+ $gid = isset($gid) ? intval($gid) : 0;
+ $groupid = isset($groupid) ? intval($groupid) : 0;
+ $minamount = isset($minamount) ? dround($minamount) : '';
+ $minamount or $minamount = '';
+ $maxamount = isset($maxamount) ? dround($maxamount) : '';
+ $maxamount or $maxamount = '';
+ $status = isset($status) ? intval($status) : 0;
+ if($action == 'check') $status = 2;
+ if($action == 'reject') $status = 1;
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+ $status_select = dselect($dstatus, 'status', '', $status);
+ $fgroup_select = group_select('gid', '原会员组', $gid);
+ $tgroup_select = group_select('groupid', '新会员组', $groupid);
+
+ $condition = '1';
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+ if($minamount) $condition .= " AND amount>=$minamount";
+ if($maxamount) $condition .= " AND amount<=$maxamount";
+ if($gid) $condition .= " AND gid=$gid";
+ if($groupid) $condition .= " AND groupid=$groupid";
+ if($editor) $condition .= " AND editor='$editor'";
+ if($username) $condition .= " AND username='$username'";
+ if($status) $condition .= " AND status=$status";
+}
+$menuon = array('4', '2', '1', '0');
+switch($action) {
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->edit($post)) {
+ dmsg('操作成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($do->get_one());
+ $user = $username ? userinfo($username) : array();
+ $addtime = timetodate($addtime);
+ $edittime = timetodate($edittime);
+ $fromtime = timetodate($DT_TIME, 3);
+ $days = 364;
+ $totime = timetodate($DT_TIME + 86400*$days, 3);
+ $UG = cache_read('group-'.$groupid.'.php');
+ $fee = $UG['fee'];
+ $pay = $fee - $amount;
+ $menuid = $menuon[$status];
+ include tpl('grade_edit', $module);
+ }
+ break;
+ case 'delete':
+ $itemid or msg('请选择记录');
+ $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'reject':
+ $menuid = 2;
+ $lists = $do->get_list($status.$condition, $dorder[$order]);
+ include tpl('grade', $module);
+ break;
+ case 'check':
+ $menuid = 1;
+ $lists = $do->get_list($status.$condition, $dorder[$order]);
+ include tpl('grade', $module);
+ break;
+ default:
+ $menuid = 0;
+ $lists = $do->get_list($condition, $dorder[$order]);
+ include tpl('grade', $module);
+ break;
+}
+
+class grade {
+ var $itemid;
+ var $table;
+ var $errmsg = errmsg;
+
+ function __construct() {
+ $this->table = DT_PRE.'member_upgrade';
+ }
+
+ function grade() {
+ $this->__construct();
+ }
+
+ function get_one($condition = '') {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid='$this->itemid' $condition");
+ }
+
+ function get_list($condition = 'status=3', $order = 'addtime DESC') {
+ global $MOD, $pages, $page, $pagesize, $offset, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = $r['edittime'] ? timetodate($r['edittime'], 5) : 'N/A';
+ $r['linkurl'] = userurl($r['username']);
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function edit($post) {
+ global $DT, $GROUP, $L, $_username;
+ $item = $this->get_one();
+ $user = $item['username'] ? userinfo($item['username']) : array();
+ $msg = isset($post['msg']) ? 1 : 0;
+ $eml = isset($post['eml']) ? 1 : 0;
+ $sms = isset($post['sms']) ? 1 : 0;
+ $wec = isset($post['wec']) ? 1 : 0;
+ $message = ($msg || $eml || $sms || $wec) ? 1 : 0;
+ $post['status'] = intval($post['status']);
+ $post['reason'] = strip_tags($post['reason']);
+ $post['note'] = strip_tags($post['note']);
+ $gsql = $msql = $csql = '';
+ $gsql = "edittime=".DT_TIME.",editor='$_username',status=$post[status],message='$message',reason='$post[reason]',note='$post[note]'";
+ if($post['status'] == 1) {
+ //reject
+ if($user) {
+ if($item['amount']) {
+ money_add($user['username'], $item['amount']);
+ money_record($user['username'], $item['amount'], $L['in_site'], 'system', $L['grade_title'], $L['grade_return']);
+ }
+ $subject = '您的'.$GROUP[$item['groupid']]['groupname'].'升级审核未通过';
+ $body = '尊敬的会员: 您的'.$GROUP[$item['groupid']]['groupname'].'升级审核未通过! ';
+ if($post['reason']) $body .= '操作原因: '.$post['reason'].' ';
+ $body .= '如果您对此操作有异议,请及时与网站联系。';
+ if($msg) send_message($user['username'], $subject, $body);
+ if($wec) send_weixin($user['username'], $subject);
+ if($eml) send_mail($user['email'], $subject, $body);
+ if($sms) send_sms($user['mobile'], $subject.$DT['sms_sign']);
+ }
+ } else if($post['status'] == 2) {
+ //
+ } else if($post['status'] == 3) {
+ if($user) {
+ if($GROUP[$item['groupid']]['type']) {
+ $t = DB::get_one("SELECT userid FROM ".DT_PRE."company WHERE company='$post[company]' AND userid<>$user[userid]");
+ if($t) msg('公司名称已存在');
+ }
+ $msql = $csql = "groupid=$item[groupid],company='$post[company]'";
+ $gsql .= ",company='$post[company]'";
+ $vip = $GROUP[$item['groupid']]['vip'];
+ $csql .= ",vip=$vip,vipt=$vip";
+ if(isset($post['fromtime'])) {
+ $validtime = datetotime($post['validtime']);
+ $fromtime = datetotime($post['fromtime']);
+ $totime = datetotime($post['totime'].' 23:59:59');
+ $csql .= ",fromtime=$fromtime,totime=$totime,validtime=$validtime,validator='$post[validator]',validated=$post[validated]";
+ DB::query("INSERT INTO ".DT_PRE."company_vip (username,company,amount,gid,groupid,fromtime,totime,addtime,reason,note,editor) VALUES ('$user[username]','$post[company]','$item[amount]','$item[gid]','$item[groupid]','$fromtime','$totime','".DT_TIME."', '升级','$post[note]','$_username')");
+ }
+ $subject = '您的'.$GROUP[$item['groupid']]['groupname'].'升级审核已通过';
+ $body = '尊敬的会员: 您的'.$GROUP[$item['groupid']]['groupname'].'升级审核已通过! ';
+ if($post['reason']) $body .= '操作原因: '.$post['reason'].' ';
+ $body .= '感谢您的支持!';
+ if($msg) send_message($user['username'], $subject, $body);
+ if($wec) send_weixin($user['username'], $subject);
+ if($eml) send_mail($user['email'], $subject, $body);
+ if($sms) send_sms($user['mobile'], $subject.$DT['sms_sign']);
+ }
+ }
+ DB::query("UPDATE {$this->table} SET $gsql WHERE itemid=$this->itemid");
+ if($msql) DB::query("UPDATE ".DT_PRE."member SET $msql WHERE userid=$item[userid]");
+ if($csql) DB::query("UPDATE ".DT_PRE."company SET $csql WHERE userid=$item[userid]");
+ if($msql || $csql) userclean($user['username']);
+ return true;
+ }
+
+ function delete($itemid, $all = true) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->delete($v); }
+ } else {
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ }
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/member/admin/index.inc.php b/module/member/admin/index.inc.php
new file mode 100644
index 0000000..657f730
--- /dev/null
+++ b/module/member/admin/index.inc.php
@@ -0,0 +1,382 @@
+0" : " AND edittime=0";
+ if($vemail) $condition .= $vemail == 1 ? " AND vemail>0" : " AND vemail=0";
+ if($vmobile) $condition .= $vmobile == 1 ? " AND vmobile>0" : " AND vmobile=0";
+ if($vtruename) $condition .= $vtruename == 1 ? " AND vtruename>0" : " AND vtruename=0";
+ if($vbank) $condition .= $vbank == 1 ? " AND vbank>0" : " AND vbank=0";
+ if($vcompany) $condition .= $vcompany == 1 ? " AND vcompany>0" : " AND vcompany=0";
+ if($vshop) $condition .= $vshop == 1 ? " AND vshop>0" : " AND vshop=0";
+ if($fromtime) $condition .= " AND $timetype>=$fromtime";
+ if($totime) $condition .= " AND $timetype<=$totime";
+ if($minmoney) $condition .= " AND money>=$minmoney";
+ if($maxmoney) $condition .= " AND money<=$maxmoney";
+ if($mincredit) $condition .= " AND credit>=$mincredit";
+ if($maxcredit) $condition .= " AND credit<=$maxcredit";
+ if($minsms) $condition .= " AND sms>=$minsms";
+ if($maxsms) $condition .= " AND sms<=$maxsms";
+ if($mindeposit) $condition .= " AND deposit>=$mindeposit";
+ if($maxdeposit) $condition .= " AND deposit<=$maxdeposit";
+}
+if(in_array($action, array('add', 'edit'))) {
+ $COM_TYPE = explode('|', $MOD['com_type']);
+ $COM_SIZE = explode('|', $MOD['com_size']);
+ $COM_MODE = explode('|', $MOD['com_mode']);
+ $MONEY_UNIT = explode('|', $MOD['money_unit']);
+ $BANKS = explode('|', trim($MOD['cash_banks']));
+}
+switch($action) {
+ case 'add':
+ if($submit) {
+ $post['groupid'] = $post['regid'];
+ if($GROUP[$post['groupid']]['type'] == 0) $post['company'] = $post['truename'];
+ $post['passport'] = $post['passport'] ? $post['passport'] : $post['username'];
+ $post['edittime'] = $post['edittime'] ? $DT_TIME : 0;
+ if($MFD) fields_check($post_fields, $MFD);
+ if($CFD) fields_check($post_fields, $CFD);
+ if(!$post['pass'] || $do->pass($post)) {
+ $do->add($post);
+ if($MFD) fields_update($post_fields, $do->table_member, $do->userid, 'userid', $MFD);
+ if($CFD) fields_update($post_fields, $do->table_company, $do->userid, 'userid', $CFD);
+ if($MOD['welcome_sms'] && $DT['sms'] && is_mobile($post['mobile'])) {
+ $message = lang('sms->wel_reg', array($post['truename'], $DT['sitename'], $post['username'], $post['password']));
+ $message = strip_sms($message);
+ send_sms($post['mobile'], $message);
+ }
+ if($MOD['welcome_message'] || $MOD['welcome_email']) {
+ $username = $post['username'];
+ $email = $post['email'];
+ $title = $L['register_msg_welcome'];
+ $content = ob_template('welcome', 'mail');
+ if($MOD['welcome_message']) send_message($username, $title, $content);
+ if($MOD['welcome_email'] && $DT['mail_type'] != 'close') send_mail($email, $title, $content);
+ }
+ dmsg('添加成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ include tpl('member_add', $module);
+ }
+ break;
+ case 'edit':
+ $userid or msg();
+ $do->userid = $userid;
+ $user = $do->get_one();
+ if(!$_founder && $userid != $_userid && $user['groupid'] == 1) msg('您无权修改其他管理员资料');
+ if($submit) {
+ if($userid == $_userid && $post['password']) msg('系统检查到您要修改密码,正在进入密码修改界面...', '?action=password', 3);
+ $post['passport'] = $user['passport'];
+ $post['edittime'] = $post['edittime'] ? $DT_TIME : 0;
+ $post['validtime'] = $post['validtime'] ? datetotime($post['validtime']) : 0;
+ if($userid == 1 || is_founder($userid)) $post['groupid'] = 1;
+ if($MFD) fields_check($post_fields, $MFD);
+ if($CFD) fields_check($post_fields, $CFD);
+ $status = 0;
+ if($gid != $post['groupid']) {
+ $groupid = $post['groupid'];
+ if($groupid == 1) {
+ $status = 1;
+ $post['groupid'] = $gid;
+ } else if($GROUP[$groupid]['vip']) {
+ $status = 2;
+ $post['groupid'] = $gid;
+ }
+ }
+ if(!$post['pass'] || $do->pass($post)) {
+ $do->edit($post);
+ if($MFD) fields_update($post_fields, $do->table_member, $do->userid, 'userid', $MFD);
+ if($CFD) fields_update($post_fields, $do->table_company, $do->userid, 'userid', $CFD);
+ if($status == 1) msg('会员资料修改成功,如果需要添加管理员,请进入管理员管理...', '?file=admin&action=add&username='.$username, 5);
+ if($status == 2) msg('会员资料修改成功,如果需要添加'.VIP.'会员,请进入'.VIP.'管理...', '?moduleid=4&action=add&username='.$username, 5);
+ dmsg('会员资料修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($user);
+ $content_table = content_table(4, $userid, is_file(DT_CACHE.'/4.part'), $DT_PRE.'company_data');
+ $t = $db->get_one("SELECT * FROM {$content_table} WHERE userid=$userid");
+ if($t) {
+ $content = $t['content'];
+ } else {
+ $content = '';
+ $db->query("REPLACE INTO {$content_table} (userid,content) VALUES ('$userid','')");
+ }
+ $cates = $catid ? explode(',', substr($catid, 1, -1)) : array();
+ $validtime = $validtime ? timetodate($validtime, 3) : '';
+ $is_company = $GROUP[$groupid]['type'] || ($groupid == 4 && $GROUP[$regid]['type']);
+ include tpl('member_edit', $module);
+ }
+ break;
+ case 'show':
+ if(isset($mobile)) {
+ $r = $db->get_one("SELECT username FROM {$table} WHERE mobile='$mobile'");
+ if($r) $username = $r['username'];
+ }
+ if(isset($email)) {
+ $r = $db->get_one("SELECT username FROM {$table} WHERE email='$email'");
+ if($r) $username = $r['username'];
+ }
+ $username = isset($username) ? $username : '';
+ ($userid || $username) or msg('会员不存在');
+ if($userid) $do->userid = $userid;
+ $user = $do->get_one($username);
+ $user or msg('会员不存在');
+ if(!$_founder && $userid != $_userid && $user['groupid'] == 1) msg('您无权查看其他管理员资料');
+ extract($user);
+ include tpl('member_show', $module);
+ break;
+ case 'delete':
+ $userid or msg('请选择会员');
+ $db->halt = 0;
+ if(!$_founder) {
+ if(is_array($userid)) {
+ foreach($userid as $uid) {
+ $do->userid = $uid;
+ $user = $do->get_one();
+ if($user['groupid'] == 1) dalert('您无权删除管理员', '?file=logout');
+ }
+ } else {
+ $do->userid = $userid;
+ $user = $do->get_one();
+ if($user['groupid'] == 1) dalert('您无权删除管理员', '?file=logout');
+ }
+ }
+ if($do->delete($userid)) {
+ dmsg('删除成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ break;
+ case 'move':
+ $userid or msg('请选择会员');
+ $gid = isset($groupids) ? $groupids : $groupid;
+ if($gid == 1) msg('操作失败! 如果需要添加管理员请点这里进入管理员管理... ');
+ if($GROUP[$gid]['vip']) msg('操作失败! 如果需要添加'.VIP.'会员请点这里进入'.VIP.'管理... ');
+ $do->move($userid, $gid);
+ dmsg('移动成功', $forward);
+ break;
+ case 'check':
+ if($userid) {
+ if(is_array($userid)) {
+ $userids = $userid;
+ } else {
+ $userids[0] = $userid;
+ }
+ foreach($userids as $userid) {
+ $do->userid = $userid;
+ $post = $do->get_one();
+ $groupid = $post['regid'];
+ $db->query("UPDATE {$DT_PRE}member SET groupid=$groupid WHERE userid=$userid");
+ $db->query("UPDATE {$DT_PRE}company SET groupid=$groupid WHERE userid=$userid");
+ if($MOD['welcome_message'] || $MOD['welcome_email']) {
+ unset($post['password']);
+ $username = $post['username'];
+ $email = $post['email'];
+ $title = $L['register_msg_welcome'];
+ $content = ob_template('welcome', 'mail');
+ if($MOD['welcome_message']) send_message($username, $title, $content);
+ if($MOD['welcome_email'] && $DT['mail_type'] != 'close') send_mail($email, $title, $content);
+ }
+ }
+ dmsg('审核成功', $forward);
+ } else {
+ $members = $do->get_list($condition, $dorder[$order]);
+ include tpl('member_check', $module);
+ }
+ break;
+ case 'edit_username':
+ $userid = intval($userid);
+ $userid or dalert('未指定会员', 'goback');
+ $do->userid = $userid;
+ $user = $do->get_one();
+ $username = $user['username'];
+ if($submit) {
+ $cusername = $username;
+ check_name($nusername) or dalert('新会员名格式错误', 'goback');
+ if($nusername == $cusername) dalert('新会员名与旧会员名不能相同', 'goback');
+ if(!$_founder && $cusername != $_username) {
+ if($user['groupid'] == 1) dalert('您无权修改其他管理员用户名', 'goback');
+ }
+ if($do->rename($cusername, $nusername)) {
+ $linkurl = userurl($nusername, $user['domain']);
+ $db->query("UPDATE {$DT_PRE}company SET linkurl='$linkurl' WHERE userid=$userid");
+ userclean($cusername);
+ userclean($nusername);
+ dmsg('修改成功', '?moduleid='.$moduleid.'&action='.$action.'&userid='.$userid.'&success=1');
+ } else {
+ dalert($do->errmsg, 'goback');
+ }
+ } else {
+ include tpl('member_edit_username', $module);
+ }
+ break;
+ case 'edit_passport':
+ $userid = intval($userid);
+ $userid or dalert('未指定会员', 'goback');
+ $do->userid = $userid;
+ $user = $do->get_one();
+ $username = $user['username'];
+ $passport = $user['passport'];
+ if($submit) {
+ $cpassport = $passport;
+ $npassport or dalert('会员昵称不能为空', 'goback');
+ if($npassport == $cpassport) dalert('新昵称与旧昵称不能相同', 'goback');
+ if(!$_founder && $username != $_username) {
+ if($user['groupid'] == 1) dalert('您无权修改其他管理员昵称', 'goback');
+ }
+ if($do->rename_passport($cpassport, $npassport, $username)) {
+ dmsg('修改成功', '?moduleid='.$moduleid.'&action='.$action.'&userid='.$userid.'&success=1');
+ } else {
+ dalert($do->errmsg, 'goback');
+ }
+ } else {
+ include tpl('member_edit_passport', $module);
+ }
+ break;
+ case 'login':
+ if($userid) {
+ if($_userid == $userid) msg('', $MODULE[2]['linkurl']);
+ if(!$_founder) {
+ $do->userid = $userid;
+ $user = $do->get_one();
+ if($user['groupid'] == 1) msg('您无权登入其他管理员会员中心');
+ if($_admin > 1 && $user['support'] && $user['support'] != $_username) msg('您无权登入该会员的会员中心');
+ }
+ $auth = encrypt($userid.'|'.$_username, DT_KEY.'ADMIN');
+ set_cookie('admin_user', $auth);
+ msg('授权成功,正在转入会员商务中心...', $MODULE[2]['linkurl'].'?reload='.$DT_TIME);
+ } else {
+ msg();
+ }
+ break;
+ case 'unlock':
+ $ip or msg('请填写需要解锁的IP');
+ $ipfile = DT_CACHE.'/ban/'.$ip.'.php';
+ if(is_file($ipfile)) {
+ cache_delete($ip.'.php', 'ban');
+ msg('IP:'.$ip.' 已经成功解除锁定', $forward);
+ } else {
+ msg('IP:'.$ip.' 未被系统锁定');
+ }
+ break;
+ case 'note_add':
+ $userid or msg('请选择会员');
+ $note = str_replace(array('|', '-'), array('/', '_'), strip_tags(trim($note)));
+ strlen($note) > 3 or msg('请填写备注内容');
+ $do->userid = $userid;
+ $member = $do->get_one();
+ $member or msg('会员不存在');
+ if($member['note']) {
+ $note = timetodate($DT_TIME, 5)."|".$_username."|".$note."\n--------------------\n".addslashes($member['note']);
+ } else {
+ $note = timetodate($DT_TIME, 5)."|".$_username."|".$note;
+ }
+ $db->query("UPDATE {$table} SET note='$note' WHERE userid=$userid");
+ dmsg('追加成功', '?moduleid='.$moduleid.'&action=show&userid='.$userid);
+ break;
+ case 'note_edit':
+ $_admin == 1 or msg();
+ $userid or msg('请选择会员');
+ $do->userid = $userid;
+ $member = $do->get_one();
+ $member or msg('会员不存在');
+ $note = strip_tags($note);
+ $db->query("UPDATE {$table} SET note='$note' WHERE userid=$userid");
+ dmsg('修改成功', '?moduleid='.$moduleid.'&action=show&userid='.$userid);
+ break;
+ default:
+ $members = $do->get_list($condition, $dorder[$order]);
+ include tpl('member', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/member/admin/link.inc.php b/module/member/admin/link.inc.php
new file mode 100644
index 0000000..89a7932
--- /dev/null
+++ b/module/member/admin/link.inc.php
@@ -0,0 +1,91 @@
+=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+}
+switch($action) {
+ case 'add':
+ if($submit) {
+ if($do->pass($post)) {
+ $do->add($post);
+ dmsg('添加成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ $title = $linkurl = $style = $username = '';
+ $status = 3;
+ $history = 0;
+ $menuid = 0;
+ include tpl('link_edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($do->get_one());
+ $history = history($moduleid, $file.'-'.$itemid);
+ $menuid = $status == 3 ? 1 : 2;
+ include tpl('link_edit', $module);
+ }
+ break;
+ case 'check':
+ if($itemid) {
+ //$status = $status == 3 ? 3 : 2;
+ $status = 3;
+ $do->check($itemid, $status);
+ dmsg($status == 3 ? '审核成功' : '取消成功', $forward);
+ } else {
+ $lists = $do->get_list("username<>'' AND status=2".$condition, $dorder[$order]);
+ $menuid = 2;
+ include tpl('link', $module);
+ }
+ break;
+ case 'delete':
+ $itemid or msg('请选择链接');
+ isset($recycle) ? $do->recycle($itemid) : $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ default:
+ $lists = $do->get_list("username<>'' AND status=3".$condition, $dorder[$order]);
+ $menuid = 1;
+ include tpl('link', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/member/admin/loginlog.inc.php b/module/member/admin/loginlog.inc.php
new file mode 100644
index 0000000..c8e2587
--- /dev/null
+++ b/module/member/admin/loginlog.inc.php
@@ -0,0 +1,49 @@
+query("DELETE FROM {$DT_PRE}login WHERE logintime<$time");
+ dmsg('清理成功', $forward);
+ break;
+ default:
+ include DT_ROOT.'/include/client.func.php';
+ $sfields = array('按条件', '结果', '会员', '密码', 'IP', '端口', '客户端');
+ $dfields = array('message', 'message', 'username', 'password', 'loginip', 'loginport', 'agent');
+ isset($admin) or $admin = -1;
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $ip = isset($ip) ? $ip : '';
+ (isset($username) && check_name($username)) or $username = '';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $condition = '1';
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND logintime>=$fromtime";
+ if($totime) $condition .= " AND logintime<=$totime";
+ if($ip) $condition .= " AND loginip='$ip'";
+ if($username) $condition .= " AND username='$username'";
+ if($admin > -1) $condition .= " AND admin='$admin'";
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}login WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}login WHERE $condition ORDER BY logid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['password'] = substr($r['password'], 0, 10).'************'.substr($r['password'], 20);
+ $r['logintime'] = timetodate($r['logintime'], 6);
+ $lists[] = $r;
+ }
+ include tpl('loginlog', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/member/admin/menu.inc.php b/module/member/admin/menu.inc.php
new file mode 100644
index 0000000..e133837
--- /dev/null
+++ b/module/member/admin/menu.inc.php
@@ -0,0 +1,38 @@
+
\ No newline at end of file
diff --git a/module/member/admin/message.inc.php b/module/member/admin/message.inc.php
new file mode 100644
index 0000000..6c99f13
--- /dev/null
+++ b/module/member/admin/message.inc.php
@@ -0,0 +1,178 @@
+_send($message)) {
+ dmsg('发送成功', $this_forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ isset($touser) or $touser = '';
+ $tousers = '';
+ if(isset($userid)) {
+ if($userid) {
+ $userids = is_array($userid) ? implode(',', $userid) : $userid;
+ $result = $db->query("SELECT username FROM {$DT_PRE}member WHERE userid IN ($userids)");
+ while($r = $db->fetch_array($result)) {
+ if($r['username']) $tousers .= $r['username']."\n";
+ }
+ }
+ }
+ if($touser) {
+ if(strpos($touser, ',') !== false) $touser = explode(',', $touser);
+ $tousers .= is_array($touser) ? implode("\n", $touser) : $touser."\n";
+ }
+ if($tousers) $touser = str_replace("\n", ' ', trim($tousers));
+ include tpl('message_send', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ $do->_edit($message);
+ dmsg('修改成功', '?moduleid='.$moduleid.'&file='.$file.'&action=system');
+ } else {
+ extract($do->get_one());
+ include tpl('message_edit', $module);
+ }
+ break;
+ case 'clear':
+ if($submit) {
+ if($do->_clear($message)) {
+ dmsg('清理成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ $todate = timetodate(datetotime('-1 year'), 3).' 23:23:59';
+ include tpl('message_clear', $module);
+ }
+ break;
+ case 'mail':
+ if(isset($send)) {
+ isset($num) or $num = 0;
+ $hour = intval($hour);
+ if(!$hour) $hour = 48;
+ $pernum = intval($pernum);
+ if(!$pernum) $pernum = 10;
+ $pagesize = $pernum;
+ $offset = ($page-1)*$pagesize;
+ $time = $DT_TIME - $hour*3600;
+ $result = $db->query("SELECT * FROM {$DT_PRE}message WHERE isread=0 AND issend=0 AND addtime<$time AND status=3 ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ $i = false;
+ while($r = $db->fetch_array($result)) {
+ $m = $db->get_one("SELECT email FROM {$DT_PRE}member WHERE username='$r[touser]' AND groupid>4");
+ if(!$m) continue;
+ $linkurl = $MODULE[2]['linkurl'].'message.php?action=show&itemid='.$r['itemid'];
+ $r['fromuser'] or $r['fromuser'] = '系统信使';
+ $r['content'] = $r['fromuser'].' 于 '.timetodate($r['addtime'], 5).' 向您发送一封站内信,内容如下: '.$r['content'].' 原始地址:'.$linkurl.' 此邮件通过 '.$DT['sitename'].' 邮件系统发出 如果您不希望收到类似邮件,请经常登录网站查收站内信件或将未读信件标记为已读 ';
+ send_mail($m['email'], $r['title'], $r['content']);
+ $db->query("UPDATE {$DT_PRE}message SET issend=1 WHERE itemid=$r[itemid]");
+ $i = true;
+ $num++;
+ }
+ if($i) {
+ $page++;
+ msg('已发送 '.$num.' 封邮件,系统将自动继续,请稍候...', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&page='.$page.'&hour='.$hour.'&pernum='.$pernum.'&num='.$num.'&send=1');
+ } else {
+ file_put(DT_CACHE.'/message.dat', $DT_TIME);
+ msg('邮件发送成功 共发送 '.$num.' 封邮件', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action, 5);
+ }
+ } else {
+ $lasttime = is_file(DT_CACHE.'/message.dat') ? file_get(DT_CACHE.'/message.dat') : 0;
+ $lasttime = $lasttime ? timetodate($lasttime, 5) : '';
+ include tpl('message_mail', $module);
+ }
+ break;
+ case 'system_delete':
+ $itemid or msg();
+ $do->_delete($itemid);
+ dmsg('删除成功', $this_forward);
+ break;
+ case 'system':
+ $messages = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}message WHERE groupids<>'' ORDER BY itemid DESC");
+ while($r = $db->fetch_array($result)) {
+ $r['addtime'] = timetodate($r['addtime'], 5);
+ $r['group'] = '';
+ $groupids = explode(',', $r['groupids']);
+ foreach($groupids as $groupid) {
+ $r['group'] .= ''.$GROUP[$groupid]['groupname'].' ';
+ }
+ $r['group'] .= ' ';
+ $messages[] = $r;
+ }
+ include tpl('message_system', $module);
+ break;
+ case 'delete':
+ if(!$itemid) msg();
+ $do->itemid = $itemid;
+ $do->delete();
+ dmsg('删除成功', $forward);
+ break;
+ case 'show':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ $item or msg();
+ extract($item);
+ include tpl('message_show', $module);
+ break;
+ default:
+ $sfields = array('标题', '发件人', '收件人', 'IP', '内容');
+ $dfields = array('title', 'fromuser', 'touser', 'ip', 'content');
+ $S = array('状态', '草稿箱', '发件箱', '收件箱', '回收站');
+
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $typeid = isset($typeid) ? intval($typeid) : -1;
+ $read = isset($read) ? intval($read) : -1;
+ $send = isset($send) ? intval($send) : -1;
+ $status = isset($status) ? intval($status) : 0;
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ (isset($fromuser) && check_name($fromuser)) or $fromuser = '';
+ (isset($touser) && check_name($touser)) or $touser = '';
+ (isset($username) && check_name($username)) or $username = '';
+ $tid = isset($tid) ? intval($tid) : 0;
+ $tid or $tid = '';
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $status_select = dselect($S, 'status', '', $status);
+
+ $condition = "groupids=''";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($status) $condition .= " AND status=$status";
+ if($typeid > -1) $condition .= " AND typeid=$typeid";
+ if($read > -1) $condition .= " AND isread=$read";
+ if($send > -1) $condition .= " AND issend=$send";
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($fromuser) $condition .= " AND fromuser='$fromuser'";
+ if($touser) $condition .= " AND touser='$touser'";
+ if($username) $condition .= " AND (fromuser='$username' OR touser='$username')";
+ if($mid) $condition .= " AND mid=$mid";
+ if($tid) $condition .= " AND tid=$tid";
+
+ $lists = $do->get_list($condition);
+ include tpl('message', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/member/admin/news.inc.php b/module/member/admin/news.inc.php
new file mode 100644
index 0000000..9033610
--- /dev/null
+++ b/module/member/admin/news.inc.php
@@ -0,0 +1,189 @@
+''";
+ if($username) $condition .= " AND username='$username'";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+}
+switch($action) {
+ case 'add':
+ if($submit) {
+ if($do->pass($post)) {
+ $do->add($post);
+ dmsg('添加成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catid='.$post['catid']);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $content = '';
+ $username = $_username;
+ $status = 3;
+ $addtime = timetodate($DT_TIME);
+ $history = 0;
+ $menuid = 0;
+ include tpl('news_edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($do->get_one());
+ $history = history($moduleid, $file.'-'.$itemid);
+ $addtime = timetodate($addtime);
+ $menuon = array('4', '3', '2', '1');
+ $menuid = $menuon[$status];
+ include tpl('news_edit', $module);
+ }
+ break;
+ case 'push':
+ $MODULE[$aid]['module'] == 'article' or msg('请选择文章模型');
+ if($submit) {
+ $catid or msg('请选择分类');
+ $tb = get_table($aid);
+ $tb_data = get_table($aid, 1);
+ $split = is_file(DT_CACHE.'/'.$aid.'.part') ? 1 : 0;
+ $result = $db->query("SELECT * FROM {$DT_PRE}news WHERE itemid IN ($ids)");
+ $i = 0;
+ while($r = $db->fetch_array($result)) {
+ $r = daddslashes($r);
+ $t = $db->get_one("SELECT itemid FROM {$tb} WHERE linkurl='$r[linkurl]'");
+ if($t) continue;
+ $db->query("INSERT INTO {$tb} (catid,title,linkurl,islink,addtime,username,edittime,editor,status) VALUES ('$catid', '$r[title]', '$r[linkurl]', '1', '$r[addtime]', '$r[username]', '$DT_TIME', '$_username','3')");
+ $itemid = $db->insert_id();
+ $content_table = content_table($aid, $itemid, $split, $tb_data);
+ $db->query("REPLACE INTO {$content_table} (itemid) VALUES ('$itemid')");
+ $i++;
+ }
+ dmsg('推送成功'.$i.'条新闻', "?moduleid=$moduleid&file=$file");
+ } else {
+ $itemid or msg('请选择新闻');
+ $ids = implode(',', $itemid);
+ include tpl('news_push', $module);
+ }
+ break;
+ case 'update':
+ if(!isset($num)) {
+ $num = 500;
+ }
+ if(!isset($fid)) {
+ $r = $db->get_one("SELECT min(itemid) AS fid FROM {$DT_PRE}news");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ }
+ if(!isset($tid)) {
+ $r = $db->get_one("SELECT max(itemid) AS tid FROM {$DT_PRE}news");
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ }
+ isset($sid) or $sid = $fid;
+ if($fid <= $tid) {
+ $result = $db->query("SELECT itemid FROM {$DT_PRE}news WHERE itemid>=$fid ORDER BY itemid LIMIT 0,$num");
+ if($db->affected_rows($result)) {
+ while($r = $db->fetch_array($result)) {
+ $itemid = $r['itemid'];
+ $do->update($itemid);
+ }
+ $itemid += 1;
+ } else {
+ $itemid = $fid + $num;
+ }
+ } else {
+ dmsg('更新成功', "?moduleid=$moduleid&file=$file");
+ }
+ msg('ID从'.$fid.'至'.($itemid-1).'更新成功'.progress($sid, $fid, $tid), "?moduleid=$moduleid&file=$file&action=$action&sid=$sid&fid=$itemid&tid=$tid&num=$num");
+ break;
+ case 'delete':
+ $itemid or msg('请选择新闻');
+ isset($recycle) ? $do->recycle($itemid) : $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'restore':
+ $itemid or msg('请选择新闻');
+ $do->restore($itemid);
+ dmsg('还原成功', $forward);
+ break;
+ case 'clear':
+ $do->clear();
+ dmsg('清空成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择新闻');
+ $level = intval($level);
+ $do->level($itemid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ case 'recycle':
+ $lists = $do->get_list('status=0'.$condition, $dorder[$order]);
+ $menuid = 4;
+ include tpl('news', $module);
+ break;
+ case 'reject':
+ if($itemid && !$psize) {
+ $do->reject($itemid);
+ dmsg('拒绝成功', $forward);
+ } else {
+ $lists = $do->get_list('status=1'.$condition, $dorder[$order]);
+ $menuid = 3;
+ include tpl('news', $module);
+ }
+ break;
+ case 'check':
+ if($itemid && !$psize) {
+ $do->check($itemid);
+ dmsg('审核成功', $forward);
+ } else {
+ $lists = $do->get_list('status=2'.$condition, $dorder[$order]);
+ $menuid = 2;
+ include tpl('news', $module);
+ }
+ break;
+ default:
+ $lists = $do->get_list('status=3'.$condition, $dorder[$order]);
+ $menuid = 1;
+ include tpl('news', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/member/admin/oauth.inc.php b/module/member/admin/oauth.inc.php
new file mode 100644
index 0000000..33080a9
--- /dev/null
+++ b/module/member/admin/oauth.inc.php
@@ -0,0 +1,87 @@
+query("UPDATE {$DT_PRE}oauth SET username='' WHERE itemid IN ($itemids)");
+ dmsg('解除成功', $forward);
+ break;
+ case 'delete':
+ $itemid or msg('请选择记录');
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ $db->query("DELETE FROM {$DT_PRE}oauth WHERE itemid IN ($itemids)");
+ dmsg('删除成功', $forward);
+ break;
+ case 'edit':
+ $itemid or msg('请选择记录');
+ $user = $db->get_one("SELECT * FROM {$DT_PRE}oauth WHERE itemid=$itemid");
+ $user or msg('记录不存在');
+ if($submit) {
+ if(check_name($name)) {
+ $name != $user['username'] or msg('会员名'.$name.'未修改');
+ $u = userinfo($name);
+ $u or msg('会员'.$name.'不存在');
+ $u['groupid'] > 4 or msg('会员'.$name.'所在组不可修改');
+ $db->query("UPDATE {$DT_PRE}oauth SET username='' WHERE username='$name' AND site='$user[site]'");
+ }
+ $db->query("UPDATE {$DT_PRE}oauth SET username='$name' WHERE itemid=$itemid");
+ dmsg('修改成功', $forward);
+ } else {
+ include tpl('oauth_edit', $module);
+ }
+ break;
+ default:
+ $sfields = array('按条件', '会员名', '昵称', '平台', '头像', '网址', 'OpenID');
+ $dfields = array('username', 'username', 'nickname', 'site', 'avatar', 'url', 'openid');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $sorder = array('结果排序方式', '绑定时间降序', '绑定时间升序', '登录时间降序', '登录时间升序', '登录次数降序', '登录次数升序');
+ $dorder = array('itemid DESC', 'addtime DESC', 'addtime ASC', 'logintime DESC', 'logintime ASC', 'logintimes DESC', 'logintimes ASC');
+ isset($order) && isset($dorder[$order]) or $order = 0;
+
+ isset($site) or $site = '';
+ $thumb = isset($thumb) ? intval($thumb) : 0;
+ $link = isset($link) ? intval($link) : 0;
+ isset($datetype) && in_array($datetype, array('addtime', 'logintime')) or $datetype = 'addtime';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ (isset($username) && check_name($username)) or $username = '';
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+
+ $condition = '1';
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($username) $condition .= " AND username='$username'";
+ if($site) $condition .= " AND site='$site'";
+ if($thumb) $condition .= " AND avatar<>''";
+ if($link) $condition .= " AND url<>''";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}oauth WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $members = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}oauth WHERE $condition ORDER BY $dorder[$order] LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['logindate'] = timetodate($r['logintime'], 5);
+ $r['avatar'] or $r['avatar'] = DT_PATH.'api/oauth/avatar.png';
+ $members[] = $r;
+ }
+ include tpl('oauth', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/member/admin/page.inc.php b/module/member/admin/page.inc.php
new file mode 100644
index 0000000..2ac3b66
--- /dev/null
+++ b/module/member/admin/page.inc.php
@@ -0,0 +1,151 @@
+=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+}
+switch($action) {
+ case 'add':
+ if($submit) {
+ if($do->pass($post)) {
+ $do->add($post);
+ dmsg('添加成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catid='.$post['catid']);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $content = '';
+ $username = $_username;
+ $status = 3;
+ $addtime = timetodate($DT_TIME);
+ $listorder = 0;
+ $history = 0;
+ $menuid = 0;
+ include tpl('page_edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($do->get_one());
+ $history = history($moduleid, $file.'-'.$itemid);
+ $menuon = array('4', '3', '2', '1');
+ $menuid = $menuon[$status];
+ include tpl('page_edit', $module);
+ }
+ break;
+ case 'update':
+ if(!isset($num)) {
+ $num = 500;
+ }
+ if(!isset($fid)) {
+ $r = $db->get_one("SELECT min(itemid) AS fid FROM {$DT_PRE}page");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ }
+ if(!isset($tid)) {
+ $r = $db->get_one("SELECT max(itemid) AS tid FROM {$DT_PRE}page");
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ }
+ isset($sid) or $sid = $fid;
+ if($fid <= $tid) {
+ $result = $db->query("SELECT itemid FROM {$DT_PRE}page WHERE itemid>=$fid ORDER BY itemid LIMIT 0,$num");
+ if($db->affected_rows($result)) {
+ while($r = $db->fetch_array($result)) {
+ $itemid = $r['itemid'];
+ $do->update($itemid);
+ }
+ $itemid += 1;
+ } else {
+ $itemid = $fid + $num;
+ }
+ } else {
+ dmsg('更新成功', "?moduleid=$moduleid&file=$file");
+ }
+ msg('ID从'.$fid.'至'.($itemid-1).'更新成功'.progress($sid, $fid, $tid), "?moduleid=$moduleid&file=$file&action=$action&sid=$sid&fid=$itemid&tid=$tid&num=$num");
+ break;
+ case 'delete':
+ $itemid or msg('请选择单页');
+ isset($recycle) ? $do->recycle($itemid) : $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'restore':
+ $itemid or msg('请选择单页');
+ $do->restore($itemid);
+ dmsg('还原成功', $forward);
+ break;
+ case 'clear':
+ $do->clear();
+ dmsg('清空成功', $forward);
+ break;
+ case 'recycle':
+ $lists = $do->get_list('status=0'.$condition, $dorder[$order]);
+ $menuid = 4;
+ include tpl('page', $module);
+ break;
+ case 'reject':
+ if($itemid && !$psize) {
+ $do->reject($itemid);
+ dmsg('拒绝成功', $forward);
+ } else {
+ $lists = $do->get_list('status=1'.$condition, $dorder[$order]);
+ $menuid = 3;
+ include tpl('page', $module);
+ }
+ break;
+ case 'check':
+ if($itemid && !$psize) {
+ $do->check($itemid);
+ dmsg('审核成功', $forward);
+ } else {
+ $lists = $do->get_list('status=2'.$condition, $dorder[$order]);
+ $menuid = 2;
+ include tpl('page', $module);
+ }
+ break;
+ default:
+ $lists = $do->get_list('status=3'.$condition, $dorder[$order]);
+ $menuid = 1;
+ include tpl('page', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/member/admin/pay.inc.php b/module/member/admin/pay.inc.php
new file mode 100644
index 0000000..a3cf5d7
--- /dev/null
+++ b/module/member/admin/pay.inc.php
@@ -0,0 +1,108 @@
+ 1) { $xd .= ','; $y0 .= ','; $y1 .= ','; }
+ $xd .= "'".$i."日'";
+ $F = datetotime($year.'-'.$month.'-'.$i.' 00:00:00');
+ $T = datetotime($year.'-'.$month.'-'.$i.' 23:59:59');
+ $t = $db->get_one("SELECT SUM(`fee`) AS num FROM {$table} WHERE paytime>=$F AND paytime<=$T AND currency='money'");
+ $num = $t['num'] ? dround($t['num']) : 0;
+ $y0 .= $num; $t0 += $num;
+ $t = $db->get_one("SELECT SUM(`fee`) AS num FROM {$table} WHERE paytime>=$F AND paytime<=$T AND currency='credit'");
+ $num = $t['num'] ? intval($t['num']) : 0;
+ $y1 .= $num; $t1 += $num;
+ }
+ $title = $year.'年'.$month.'月会员信息支付统计报表';
+ } else {
+ for($i = 1; $i < 13; $i++) {
+ if($i > 1) { $xd .= ','; $y0 .= ','; $y1 .= ','; }
+ $xd .= "'".$i."月'";
+ $F = datetotime($year.'-'.$i.'-01 00:00:00');
+ $T = datetotime($year.'-'.$i.'-'.date('t', $F).' 23:59:59');
+ $t = $db->get_one("SELECT SUM(`fee`) AS num FROM {$table} WHERE paytime>=$F AND paytime<=$T AND currency='money'");
+ $num = $t['num'] ? dround($t['num']) : 0;
+ $y0 .= $num; $t0 += $num;
+ $t = $db->get_one("SELECT SUM(`fee`) AS num FROM {$table} WHERE paytime>=$F AND paytime<=$T AND currency='credit'");
+ $num = $t['num'] ? intval($t['num']) : 0;
+ $y1 .= $num; $t1 += $num;
+ }
+ $title = $year.'年会员信息支付统计报表';
+ }
+ include tpl('pay_stats', $module);
+ break;
+ case 'delete':
+ $itemid or msg('未选择记录');
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ $db->query("DELETE FROM {$table} WHERE itemid IN ($itemids)");
+ dmsg('删除成功', $forward);
+ break;
+ default:
+ $sfields = array('按条件', '标题', '会员名', '金额', 'IP');
+ $dfields = array('title', 'title', 'fee', 'ip');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $sorder = array('排序方式', '金额降序', '金额升序', '时间降序', '时间升序', '流水降序', '流水升序');
+ $dorder = array('itemid DESC', 'fee DESC', 'fee ASC', 'paytime DESC', 'paytime ASC', 'itemid DESC', 'itemid ASC');
+ isset($order) && isset($dorder[$order]) or $order = 0;
+
+ (isset($username) && check_name($username)) or $username = '';
+ (isset($editor) && check_name($editor)) or $editor = '';
+ $tid = isset($tid) ? intval($tid) : 0;
+ $tid or $tid = '';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ isset($currency) or $currency = '';
+ isset($minamount) or $minamount = '';
+ isset($maxamount) or $maxamount = '';
+ $itemid or $itemid = '';
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $module_select = module_select('mid', '模块', $mid);
+ $order_select = dselect($sorder, 'order', '', $order);
+
+ $condition = '1';
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND paytime>=$fromtime";
+ if($totime) $condition .= " AND paytime<=$totime";
+ if($mid) $condition .= " AND mid=$mid";
+ if($currency) $condition .= " AND currency='$currency'";
+ if($username) $condition .= " AND username='$username'";
+ if($editor) $condition .= " AND editor='$editor'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ if($minamount != '') $condition .= " AND fee>=$minamount";
+ if($maxamount != '') $condition .= " AND fee<=$maxamount";
+ if($tid) $condition .= " AND tid=$tid";
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table} WHERE $condition ORDER BY $dorder[$order] LIMIT $offset,$pagesize");
+ $fee = 0;
+ while($r = $db->fetch_array($result)) {
+ $r['paytime'] = timetodate($r['paytime'], 5);
+ $fee += $r['fee'];
+ $lists[] = $r;
+ }
+ include tpl('pay', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/member/admin/sendmail.inc.php b/module/member/admin/sendmail.inc.php
new file mode 100644
index 0000000..7a6cf23
--- /dev/null
+++ b/module/member/admin/sendmail.inc.php
@@ -0,0 +1,314 @@
+$mailfile) {
+ $tmp = basename($mailfile);
+ $mail['filename'] = $tmp;
+ $mail['filesize'] = round(filesize($mailfile)/(1024), 2);
+ $mail['mtime'] = timetodate(filemtime($mailfile), 5);
+ $mail['count'] = substr_count(file_get($mailfile), "\n") + 1;
+ $mails[] = $mail;
+ }
+ }
+ include tpl('sendmail_list', $module);
+ break;
+ case 'make':
+ if(isset($make)) {
+ if(isset($first)) {
+ $tb or $tb = $DT_PRE.'member';
+ $tb = strip_sql($tb, 0);
+ $num or $num = 1000;
+ $sql or $sql = 'groupid>4';
+ $title = $title ? file_vname('-'.$title) : '';
+ $random = strtolower(random(10));
+ $item = array();
+ $item['tb'] = $tb;
+ $item['num'] = $num;
+ $item['sql'] = $sql;
+ $item['title'] = $title;
+ $item['random'] = $random;
+ cache_write('mail-list-'.$_userid.'.php', $item);
+ } else {
+ $item = cache_read('mail-list-'.$_userid.'.php');
+ $item or msg();
+ extract($item);
+ }
+ $pagesize = $num;
+ $offset = ($page-1)*$pagesize;
+ $data = '';
+ $query = "SELECT email FROM $tb WHERE $sql AND email<>'' LIMIT $offset,$pagesize";
+ $result = $db->query($query);
+ while($r = $db->fetch_array($result)) {
+ if(is_email($r['email'])) $data .= $r['email']."\r\n";
+ }
+ if($data) {
+ $filename = timetodate($DT_TIME, 'YmdHis').$title.'-'.$random.'-'.$page.'.txt';
+ file_put(DT_ROOT.'/file/email/'.$filename, trim($data));
+ $page++;
+ msg('文件'.$filename.'获取成功。 请稍候,程序将自动继续...', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&page='.$page.'&make=1');
+ } else {
+ cache_delete('mail-list-'.$_userid.'.php');
+ msg('列表获取成功', '?moduleid='.$moduleid.'&file='.$file.'&action=list');
+ }
+ } else {
+ include tpl('sendmail_make', $module);
+ }
+ break;
+ case 'download':
+ $file_ext = file_ext($filename);
+ $file_ext == 'txt' or msg('只能下载TxT文件');
+ file_down(DT_ROOT.'/file/email/'.$filename);
+ break;
+ case 'upload':
+ require DT_ROOT.'/include/upload.class.php';
+ $do = new upload($_FILES, 'file/email/', $uploadfile_name, 'txt');
+ $do->adduserid = false;
+ if($do->save()) msg('上传成功', '?moduleid='.$moduleid.'&file='.$file.'&action=list');
+ msg($do->errmsg);
+ break;
+ case 'delete':
+ if(is_array($filenames)) {
+ foreach($filenames as $filename) {
+ if(file_ext($filename) == 'txt') @unlink(DT_ROOT.'/file/email/'.$filename);
+ }
+ } else {
+ if(file_ext($filenames) == 'txt') @unlink(DT_ROOT.'/file/email/'.$filenames);
+ }
+ dmsg('删除成功', '?moduleid='.$moduleid.'&file='.$file.'&action=list');
+ break;
+ case 'record':
+ $sfields = array('按条件', '标题', '邮箱', '内容', '备注');
+ $dfields = array('title', 'title', 'email', 'content', 'note');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+
+ (isset($email) && is_email($email)) or $email = '';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ isset($type) or $type = 0;
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+
+ $condition = '1';
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($type) $condition .= $type == 1 ? " AND status=3" : " AND status=2";
+ if($email) $condition .= " AND email='$email'";
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}mail_log WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $records = array();
+ $result = $db->query("SELECT itemid,email,title,addtime,status,note FROM {$DT_PRE}mail_log WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['addtime'] = timetodate($r['addtime'], 5);
+ $records[] = $r;
+ }
+ include tpl('sendmail_record', $module);
+ break;
+ case 'show':
+ $itemid or msg();
+ $item = $db->get_one("SELECT * FROM {$DT_PRE}mail_log WHERE itemid=$itemid");
+ $item or msg();
+ extract($item);
+ include tpl('sendmail_show', $module);
+ break;
+ case 'resend':
+ $itemid or msg('未选择记录');
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ $DT['mail_log'] = $i = 0;
+ $result = $db->query("SELECT * FROM {$DT_PRE}mail_log WHERE itemid IN ($itemids)");
+ while($r = $db->fetch_array($result)) {
+ if($r['status'] == 3) continue;
+ if(send_mail($r['email'], $r['title'], $r['content'])) {
+ $db->query("UPDATE {$DT_PRE}mail_log SET status=3,edittime='".DT_TIME."',editor='$_username',note='' WHERE itemid=$r[itemid]");
+ $i++;
+ }
+ }
+ dmsg('成功发送('.$i.')封', $forward);
+ break;
+ case 'delete_record':
+ $itemid or msg('未选择记录');
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ $db->query("DELETE FROM {$DT_PRE}mail_log WHERE itemid IN ($itemids)");
+ dmsg('删除成功', $forward);
+ break;
+ case 'clear':
+ $time = $DT_TODAY - 30*86400;
+ $db->query("DELETE FROM {$DT_PRE}mail_log WHERE addtime<$time");
+ dmsg('清理成功', $forward);
+ break;
+ default:
+ if(isset($send)) {
+ if(isset($preview) && $preview) {
+ $content = stripslashes($content);
+ if($template) {
+ if($sendtype == 2) {
+ $emails = explode("\n", $emails);
+ $email = trim($emails[0]);
+ } else if($sendtype == 3) {
+ $emails = explode("\n", file_get(DT_ROOT.'/file/email/'.$mail));
+ $email = trim($emails[0]);
+ }
+ $user = _userinfo($fields, $email);
+ if($user && _safecheck($title)) eval("\$title = \"$title\";");
+ $content = ob_template($template, 'mail');
+ }
+ echo '邮件标题: '.$title.' ';
+ echo '邮件正文: ';
+ echo $content;
+ exit;
+ }
+ if($sendtype == 1) {
+ $title or msg('请填写邮件标题');
+ is_email($email) or msg('请填写邮件地址');
+ ($template || $content) or msg('请填写邮件内容');
+ $email = trim($email);
+ $content = save_local(stripslashes($content));
+ clear_upload($content, $_userid, 'sendmail');
+ $DT['mail_name'] = $name;
+ if($template) {
+ $user = _userinfo($fields, $email);
+ if($user && _safecheck($title)) eval("\$title = \"$title\";");
+ $content = ob_template($template, 'mail');
+ }
+ send_mail($email, $title, $content, $sender);
+ } else if($sendtype == 2) {
+ $title or msg('请填写邮件标题');
+ $emails or msg('请填写邮件地址');
+ ($template || $content) or msg('请填写邮件内容');
+ $emails = explode("\n", $emails);
+ $content = save_local(stripslashes($content));
+ clear_upload($content, $_userid, 'sendmail');
+ $DT['mail_name'] = $name;
+ $_content = $content;
+ foreach($emails as $email) {
+ $email = trim($email);
+ if(is_email($email)) {
+ $content = $_content;
+ if($template) {
+ $user = _userinfo($fields, $email);
+ if($user && _safecheck($title)) eval("\$title = \"$title\";");
+ $content = ob_template($template, 'mail');
+ }
+ send_mail($email, $title, $content, $sender);
+ }
+ }
+ } else if($sendtype == 3) {
+ if(isset($id)) {
+ $data = cache_read($_username.'_sendmail.php');
+ $title = $data['title'];
+ $content = $data['content'];
+ $sender = $data['sender'];
+ $name = $data['name'];
+ $template = $data['template'];
+ $maillist = $data['maillist'];
+ $fields = $data['fields'];
+ } else {
+ $id = 0;
+ $title or msg('请填写邮件标题');
+ $maillist or msg('请选择邮件列表');
+ ($template || $content) or msg('请填写邮件内容');
+ $content = save_local(stripslashes($content));
+ clear_upload($content, $_userid, 'sendmail');
+ $data = array();
+ $data['title'] = $title;
+ $data['content'] = $content;
+ $data['sender'] = $sender;
+ $data['name'] = $name;
+ $data['template'] = $template;
+ $data['maillist'] = $maillist;
+ $data['fields'] = $fields;
+ cache_write($_username.'_sendmail.php', $data);
+ }
+ $_content = $content;
+ $pernum = intval($pernum);
+ if(!$pernum) $pernum = 5;
+ $pertime = intval($pertime);
+ if(!$pertime) $pertime = 5;
+ $DT['mail_name'] = $name;
+ $emails = file_get(DT_ROOT.'/file/email/'.$maillist);
+ $emails = explode("\n", $emails);
+ for($i = 1; $i <= $pernum; $i++) {
+ $email = trim($emails[$id++]);
+ if(is_email($email)) {
+ $content = $_content;
+ if($template) {
+ $user = _userinfo($fields, $email);
+ if($user && _safecheck($title)) eval("\$title = \"$title\";");
+ $content = ob_template($template, 'mail');
+ }
+ send_mail($email, $title, $content, $sender);
+ }
+ }
+ if($id < count($emails)) {
+ msg('已发送 '.$id.' 封邮件,系统将自动继续,请稍候...', '?moduleid='.$moduleid.'&file='.$file.'&sendtype=3&id='.$id.'&pernum='.$pernum.'&pertime='.$pertime.'&send=1', $pertime);
+ }
+ cache_delete($_username.'_sendmail.php');
+ $forward = '?moduleid='.$moduleid.'&file='.$file;
+ }
+ dmsg('邮件发送成功', $forward);
+ } else {
+ $sendtype = isset($sendtype) ? intval($sendtype) : 1;
+ isset($email) or $email = '';
+ $emails = '';
+ if(isset($userid)) {
+ if($userid) {
+ $userids = is_array($userid) ? implode(',', $userid) : $userid;
+ $result = $db->query("SELECT email FROM {$DT_PRE}member WHERE userid IN ($userids)");
+ while($r = $db->fetch_array($result)) {
+ $emails .= $r['email']."\n";
+ }
+ }
+ }
+ if($email) {
+ if(strpos($email, ',') === false) {
+ is_email($email) or $email = '';
+ } else {
+ $tmp = explode(',', $email);
+ foreach($tmp as $eml) {
+ if(is_email($eml)) $emails .= $eml."\n";
+ }
+ $email = '';
+ }
+ }
+ if($emails && strpos($emails, "\n") !== false) $sendtype = 2;
+ include tpl('sendmail', $module);
+ }
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/member/admin/setting.inc.php b/module/member/admin/setting.inc.php
new file mode 100644
index 0000000..3b8336b
--- /dev/null
+++ b/module/member/admin/setting.inc.php
@@ -0,0 +1,78 @@
+$v) {
+ $pay[$k] = array_map('trim', $v);
+ }
+ foreach($oauth as $k=>$v) {
+ $oauth[$k] = array_map('trim', $v);
+ }
+ if($setting['deposit'] < 100) $setting['deposit'] = 100;
+ $DT['sms'] or $setting['login_sms'] = 0;
+ ($DT['sms'] && $setting['login_sms']) or $setting['verify_login'] = 0;
+ $P = cache_read('pay.php');
+ $pay['tenpay']['keycode'] = pass_decode($pay['tenpay']['keycode'], $P['tenpay']['keycode']);
+ $pay['weixin']['keycode'] = pass_decode($pay['weixin']['keycode'], $P['weixin']['keycode']);
+ $pay['alipay']['keycode'] = pass_decode($pay['alipay']['keycode'], $P['alipay']['keycode']);
+ $pay['alipay']['public'] = pass_decode($pay['alipay']['public'], $P['alipay']['public']);
+ $pay['aliwap']['keycode'] = pass_decode($pay['aliwap']['keycode'], $P['aliwap']['keycode']);
+ $pay['aliwap']['public'] = pass_decode($pay['aliwap']['public'], $P['aliwap']['public']);
+ $pay['chinabank']['keycode'] = pass_decode($pay['chinabank']['keycode'], $P['chinabank']['keycode']);
+ $pay['yeepay']['keycode'] = pass_decode($pay['yeepay']['keycode'], $P['yeepay']['keycode']);
+ $pay['paypal']['keycode'] = pass_decode($pay['paypal']['keycode'], $P['paypal']['keycode']);
+ $setting['uc_dbpwd'] = pass_decode($setting['uc_dbpwd'], $MOD['uc_dbpwd']);
+ $setting['ex_pass'] = pass_decode($setting['ex_pass'], $MOD['ex_pass']);
+ $setting['edit_check'] = implode(',', $setting['edit_check']);
+ $setting['login_time'] = $setting['login_time'] >= 86400 ? $setting['login_time'] : 0;
+ foreach($pay as $k=>$v) {
+ update_setting('pay-'.$k, strip_sql($v, 0));
+ }
+ $setting['oauth'] = 0;
+ foreach($oauth as $k=>$v) {
+ if($v['enable']) $setting['oauth'] = 1;
+ update_setting('oauth-'.$k, $v);
+ }
+ update_setting($moduleid, $setting);
+ cache_module($moduleid);
+ $ext_oauth = $setting['oauth'];
+ if($oauth['sina']['enable'] && $oauth['sina']['sync']) $ext_oauth .= ',sina';
+ if($oauth['qq']['enable'] && $oauth['qq']['sync']) $ext_oauth .= ',qq';
+ $db->query("UPDATE {$DT_PRE}setting SET item_value='$ext_oauth' WHERE item_key='oauth' AND item='3'");
+ cache_module(3);
+ dmsg('设置保存成功', '?moduleid='.$moduleid.'&file='.$file.'&tab='.$tab);
+} else {
+ $GROUP = cache_read('group.php');
+ extract(dhtmlspecialchars($MOD));
+ cache_pay();
+ $P = cache_read('pay.php');
+ extract($P);
+ cache_oauth();
+ $O = cache_read('oauth.php');
+ extract($O);
+ $tenpay['keycode'] = pass_encode($tenpay['keycode']);
+ $weixin['keycode'] = pass_encode($weixin['keycode']);
+ $alipay['keycode'] = pass_encode($alipay['keycode']);
+ $alipay['public'] = pass_encode($alipay['public']);
+ $aliwap['keycode'] = pass_encode($aliwap['keycode']);
+ $aliwap['public'] = pass_encode($aliwap['public']);
+ $chinabank['keycode'] = pass_encode($chinabank['keycode']);
+ $yeepay['keycode'] = pass_encode($yeepay['keycode']);
+ $paypal['keycode'] = pass_encode($paypal['keycode']);
+ $uc_dbpwd = pass_encode($uc_dbpwd);
+ $ex_pass = pass_encode($ex_pass);
+ if($kw) {
+ $all = 1;
+ ob_start();
+ }
+ include tpl('setting', $module);
+ if($kw) {
+ $data = $content = ob_get_contents();
+ ob_clean();
+ $data = preg_replace('\'(?!((<.*?)|(]*?)>)|([^>]*?)|([^>]*?))\'si', ''.$kw.' ', $data);
+ $data = preg_replace('//', '', $data, 1);
+ echo $data ? $data : $content;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/member/admin/stock.inc.php b/module/member/admin/stock.inc.php
new file mode 100644
index 0000000..c1bc359
--- /dev/null
+++ b/module/member/admin/stock.inc.php
@@ -0,0 +1,230 @@
+pass($post)) {
+ $amount = $post['amount'];
+ $post['amount'] = 0;
+ $do->add($post);
+ if($post['username']) stock_update($do->itemid, $post['skuid'], $post['username'], $amount, $_cname ? $_cname : $_username, '商品添加', '');
+ dmsg('添加成功', '?moduleid='.$moduleid.'&file='.$file);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $content = '';
+ $username = $_username;
+ $status = 3;
+ $addtime = timetodate($DT_TIME);
+ $menuid = 0;
+ include tpl('stock_edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ $r = $do->get_one();
+ if($submit) {
+ $amount = $post['amount'];
+ if($post['username']) $post['amount'] = $r['amount'];
+ if($do->pass($post)) {
+ $do->edit($post);
+ if($r['amount'] != $amount && $post['username']) stock_update($do->itemid, $post['skuid'], $post['username'], $amount - $r['amount'], $_cname ? $_cname : $_username, '商品修改', '');
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($r);
+ $addtime = timetodate($addtime);
+ $menuid = $username ? 1 : 5;
+ include tpl('stock_edit', $module);
+ }
+ break;
+ case 'clear':
+ $time = $DT_TODAY - 365*86400;
+ $db->query("DELETE FROM {$DT_PRE}stock_record WHERE addtime<$time");
+ dmsg('清理成功', $forward);
+ break;
+ case 'delete':
+ $itemid or msg('请选择商品');
+ isset($recycle) ? $do->recycle($itemid) : $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择商品');
+ $level = intval($level);
+ $do->level($itemid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ case 'update':
+ (isset($skuid) && is_skuid($skuid)) or $skuid = '';
+ $type = isset($type) && $type ? 1 : 0;
+ $title = '';
+ if($itemid) {
+ $do->itemid = $itemid;
+ $r = $do->get_one();
+ if(!$r) msg();
+ $skuid = $r['skuid'];
+ $title = $r['title'];
+ $username = $r['username'];
+ } else if($skuid) {
+ (isset($username) && check_name($username)) or $username = '';
+ $username or msg('会员名不能为空');
+ $r = $do->get_one("skuid='$skuid' AND username='$username'");
+ if(!$r) msg('条形编码不存在对应商品');
+ $title = $r['title'];
+ }
+ if($submit) {
+ $amount = intval($amount);
+ if($amount < 1) msg('请填写数量');
+ if(!is_skuid($skuid)) msg('请填写条形编码');
+ $forward = $itemid ? '?moduleid='.$moduleid.'&file='.$file.'&action=record' : '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&type='.$type.'&amount='.$amount.'&reason='.urlencode($reason).'¬e='.urlencode($note);
+ $reason = dhtmlspecialchars(trim($reason));
+ $note = dhtmlspecialchars(trim($note));
+ $itemid = $r['itemid'];
+ $username = $r['username'];
+ $editor = $_cname ? $_cname : $_username;
+ if($type) $amount = -$amount;
+ stock_update($itemid, $skuid, $username, $amount, $editor, $reason, $note);
+ dmsg($L['op_success'], $forward);
+ } else {
+ $reason = isset($reason) ? strip_tags($reason) : '';
+ $note = isset($note) ? strip_tags($note) : '';
+ $amount = isset($amount) ? intval($amount) : 1;
+ isset($username) or $username = $_username;
+ $menuid = $type ? 4 : 3;
+ include tpl('stock_update', $module);
+ }
+ break;
+ case 'record':
+ $sfields = array('按条件', '商品名称', '条形编码', '操作事由', '备注信息', '会员名', '操作人');
+ $dfields = array('title', 'title', 'skuid', 'reason', 'note', 'username', 'editor');
+ $sorder = array('排序方式', '数量降序', '数量升序', '库存降序', '库存升序', '时间降序', '时间升序');
+ $dorder = array('itemid DESC', 'amount DESC', 'amount ASC', 'balance DESC', 'balance ASC', 'addtime DESC', 'addtime ASC');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = is_date($fromdate) ? datetotime($fromdate.' 0:0:0') : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = is_date($todate) ? datetotime($todate.' 23:59:59') : 0;
+ isset($type) or $type = 0;
+ $itemid or $itemid = '';
+ (isset($username) && check_name($username)) or $username = '';
+ (isset($editor) && check_name($editor)) or $editor = '';
+ (isset($skuid) && is_skuid($skuid)) or $skuid = '';
+ isset($order) && isset($dorder[$order]) or $order = 0;
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+
+ $condition = "1";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($type) $condition .= $type == 1 ? " AND amount>0" : " AND amount<0";
+ if($itemid) $condition .= " AND stockid=$itemid";
+ if($skuid) $condition .= " AND skuid='$skuid'";
+ if($editor) $condition .= " AND editor='$editor'";
+ if($username) $condition .= " AND username='$username'";
+
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}stock_record WHERE $condition");
+ $items = $r['num'];
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}stock_record WHERE $condition ORDER BY $dorder[$order] LIMIT $offset,$pagesize");
+ $income = $expense = 0;
+ while($r = $db->fetch_array($result)) {
+ $r['addtime'] = timetodate($r['addtime'], 6);
+ $r['amount'] > 0 ? $income += $r['amount'] : $expense += $r['amount'];
+ $lists[] = $r;
+ }
+ $menuid = 2;
+ include tpl('stock_record', $module);
+ break;
+ case 'open':
+ $sfields = array('按条件', '商品名称', '条形编码', '仓储货位', '商品品牌', '计量单位', '属性名1', '属性名2', '属性名3', '属性值1', '属性值2', '属性值3', '备注', '会员名', '操作人');
+ $dfields = array('title', 'title', 'skuid', 'location', 'brand', 'unit', 'n1', 'n2', 'n3', 'v1', 'v2', 'v3', 'note', 'username', 'editor');
+ $sorder = array('排序方式', '复制次数降序', '复制次数升序', '商品售价降序', '商品售价升序', '商品进价降序', '商品进价升序', '添加时间降序', '添加时间升序', '更新时间降序', '更新时间升序');
+ $dorder = array('itemid DESC', 'amount DESC', 'amount ASC', 'price DESC', 'price ASC', 'cost DESC', 'cost ASC', 'addtime DESC', 'addtime ASC', 'edittime DESC', 'edittime ASC');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $level = isset($level) ? intval($level) : 0;
+ $typeid = isset($typeid) ? ($typeid === '' ? -1 : intval($typeid)) : -1;
+ (isset($username) && check_name($username)) or $username = '';
+ (isset($editor) && check_name($editor)) or $editor = '';
+ (isset($skuid) && is_skuid($skuid)) or $skuid = '';
+ isset($datetype) && in_array($datetype, array('addtime', 'edittime')) or $datetype = 'addtime';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ isset($order) && isset($dorder[$order]) or $order = 0;
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+ $level_select = level_select('level', '级别', $level);
+
+ $condition = "username=''";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($typeid > -1) $condition .= " AND typeid=$typeid";
+ if($skuid) $condition .= " AND skuid='$skuid'";
+ if($editor) $condition .= " AND editor='$editor'";
+ if($username) $condition .= " AND username='$username'";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+
+ $lists = $do->get_list($condition, $dorder[$order]);
+ $menuid = 5;
+ include tpl('stock_open', $module);
+ break;
+ default:
+ $sfields = array('按条件', '商品名称', '条形编码', '仓储货位', '商品品牌', '计量单位', '属性名1', '属性名2', '属性名3', '属性值1', '属性值2', '属性值3', '备注', '会员名', '操作人');
+ $dfields = array('title', 'title', 'skuid', 'location', 'brand', 'unit', 'n1', 'n2', 'n3', 'v1', 'v2', 'v3', 'note', 'username', 'editor');
+ $sorder = array('排序方式', '库存数量降序', '库存数量升序', '商品售价降序', '商品售价升序', '商品进价降序', '商品进价升序', '添加时间降序', '添加时间升序', '更新时间降序', '更新时间升序');
+ $dorder = array('itemid DESC', 'amount DESC', 'amount ASC', 'price DESC', 'price ASC', 'cost DESC', 'cost ASC', 'addtime DESC', 'addtime ASC', 'edittime DESC', 'edittime ASC');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $level = isset($level) ? intval($level) : 0;
+ $typeid = isset($typeid) ? ($typeid === '' ? -1 : intval($typeid)) : -1;
+ (isset($username) && check_name($username)) or $username = '';
+ (isset($editor) && check_name($editor)) or $editor = '';
+ (isset($skuid) && is_skuid($skuid)) or $skuid = '';
+ isset($datetype) && in_array($datetype, array('addtime', 'edittime')) or $datetype = 'addtime';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ isset($order) && isset($dorder[$order]) or $order = 0;
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+ $level_select = level_select('level', '级别', $level);
+
+ $condition = "username<>''";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($typeid > -1) $condition .= " AND typeid=$typeid";
+ if($skuid) $condition .= " AND skuid='$skuid'";
+ if($editor) $condition .= " AND editor='$editor'";
+ if($username) $condition .= " AND username='$username'";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+
+ $lists = $do->get_list($condition, $dorder[$order]);
+ $menuid = 1;
+ include tpl('stock', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/member/admin/template/address_edit.tpl.php b/module/member/admin/template/address_edit.tpl.php
new file mode 100644
index 0000000..14ca018
--- /dev/null
+++ b/module/member/admin/template/address_edit.tpl.php
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/alert_edit.tpl.php b/module/member/admin/template/alert_edit.tpl.php
new file mode 100644
index 0000000..45ca47e
--- /dev/null
+++ b/module/member/admin/template/alert_edit.tpl.php
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/alert_send.tpl.php b/module/member/admin/template/alert_send.tpl.php
new file mode 100644
index 0000000..f9dfbb0
--- /dev/null
+++ b/module/member/admin/template/alert_send.tpl.php
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/ask_edit.tpl.php b/module/member/admin/template/ask_edit.tpl.php
new file mode 100644
index 0000000..e6c5d5d
--- /dev/null
+++ b/module/member/admin/template/ask_edit.tpl.php
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/award_stats.tpl.php b/module/member/admin/template/award_stats.tpl.php
new file mode 100644
index 0000000..9d7c742
--- /dev/null
+++ b/module/member/admin/template/award_stats.tpl.php
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+选择年
+= 2000; $i--) { ?>
+>年
+
+
+
+选择月
+
+>月
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/card.tpl.php b/module/member/admin/template/card.tpl.php
new file mode 100644
index 0000000..b5c8e09
--- /dev/null
+++ b/module/member/admin/template/card.tpl.php
@@ -0,0 +1,97 @@
+
+
+
+
+卡号
+密码
+面额
+有效期至
+
+$v) {?>
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/cash_edit.tpl.php b/module/member/admin/template/cash_edit.tpl.php
new file mode 100644
index 0000000..0869e2e
--- /dev/null
+++ b/module/member/admin/template/cash_edit.tpl.php
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/cash_show.tpl.php b/module/member/admin/template/cash_show.tpl.php
new file mode 100644
index 0000000..1d270e1
--- /dev/null
+++ b/module/member/admin/template/cash_show.tpl.php
@@ -0,0 +1,66 @@
+
+
+
+会员名
+
+
+
+实付金额
+
+
+
+手续费
+
+
+
+收款方式
+
+
+
+帐户类型
+
+
+
+开户网点
+
+
+
+收款户名
+
+
+
+收款帐号
+
+
+
+申请时间
+
+
+
+申请IP
+ 来自
+
+
+受理结果
+
+
+
+原因及备注
+
+
+
+受理人
+
+
+
+受理时间
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/charge.tpl.php b/module/member/admin/template/charge.tpl.php
new file mode 100644
index 0000000..87c28c9
--- /dev/null
+++ b/module/member/admin/template/charge.tpl.php
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/chat.tpl.php b/module/member/admin/template/chat.tpl.php
new file mode 100644
index 0000000..5d5a0f8
--- /dev/null
+++ b/module/member/admin/template/chat.tpl.php
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/chat_view.tpl.php b/module/member/admin/template/chat_view.tpl.php
new file mode 100644
index 0000000..1a02a7c
--- /dev/null
+++ b/module/member/admin/template/chat_view.tpl.php
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
\ No newline at end of file
diff --git a/module/member/admin/template/check.tpl.php b/module/member/admin/template/check.tpl.php
new file mode 100644
index 0000000..1b1092e
--- /dev/null
+++ b/module/member/admin/template/check.tpl.php
@@ -0,0 +1,42 @@
+
+
+会员搜索
+
+
+
+
+审核资料
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/child.tpl.php b/module/member/admin/template/child.tpl.php
new file mode 100644
index 0000000..d4f7371
--- /dev/null
+++ b/module/member/admin/template/child.tpl.php
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/child_edit.tpl.php b/module/member/admin/template/child_edit.tpl.php
new file mode 100644
index 0000000..a6c70aa
--- /dev/null
+++ b/module/member/admin/template/child_edit.tpl.php
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/contact.tpl.php b/module/member/admin/template/contact.tpl.php
new file mode 100644
index 0000000..fc2e7fc
--- /dev/null
+++ b/module/member/admin/template/contact.tpl.php
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+
+
+头像
+会员名
+
+公司
+姓名
+职位
+性别
+电话
+手机
+联系方式
+状态
+
+$v) {?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+在线 隐身 离线
+
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/credit.tpl.php b/module/member/admin/template/credit.tpl.php
new file mode 100644
index 0000000..58b2a86
--- /dev/null
+++ b/module/member/admin/template/credit.tpl.php
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/deposit.tpl.php b/module/member/admin/template/deposit.tpl.php
new file mode 100644
index 0000000..c079382
--- /dev/null
+++ b/module/member/admin/template/deposit.tpl.php
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/favorite.tpl.php b/module/member/admin/template/favorite.tpl.php
new file mode 100644
index 0000000..ba95406
--- /dev/null
+++ b/module/member/admin/template/favorite.tpl.php
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/friend.tpl.php b/module/member/admin/template/friend.tpl.php
new file mode 100644
index 0000000..c0cdd0f
--- /dev/null
+++ b/module/member/admin/template/friend.tpl.php
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+ 备注:会员ID代表商友的添加人(拥有者)
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/friend_edit.tpl.php b/module/member/admin/template/friend_edit.tpl.php
new file mode 100644
index 0000000..d536391
--- /dev/null
+++ b/module/member/admin/template/friend_edit.tpl.php
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/grade.tpl.php b/module/member/admin/template/grade.tpl.php
new file mode 100644
index 0000000..e5f5d59
--- /dev/null
+++ b/module/member/admin/template/grade.tpl.php
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/grade_edit.tpl.php b/module/member/admin/template/grade_edit.tpl.php
new file mode 100644
index 0000000..1db7146
--- /dev/null
+++ b/module/member/admin/template/grade_edit.tpl.php
@@ -0,0 +1,162 @@
+
+升级申请
+
+
+
+* 会员名
+
+
+
+* 公司名称
+
+
+
+* 当前组
+
+
+
+
+* 升级为
+
+
+
+
+* 新公司名
+
+
+
+
+* 已付金额
+
+
+
+* 申请时间
+
+
+
+* 申请IP
+ -
+
+
+申请受理
+
+
+
+
+
+
+
+
+
+
+* 受理状态
+
+
+
+* 受理通知
+
+
+
+* 受理人
+
+
+
+* 受理时间
+
+
+
+* 操作原因
+
+
+
+* 备注
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/group.tpl.php b/module/member/admin/template/group.tpl.php
new file mode 100644
index 0000000..76234f3
--- /dev/null
+++ b/module/member/admin/template/group.tpl.php
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+注意事项
+
+
+
+ - 会员组请按服务的范围(服务级别)由低到高依次排序,否则将影响会员的升级
+ - 扣费模式会员组可以注册时选择,包年模式需要会员在线升级
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/group_edit.tpl.php b/module/member/admin/template/group_edit.tpl.php
new file mode 100644
index 0000000..c18747b
--- /dev/null
+++ b/module/member/admin/template/group_edit.tpl.php
@@ -0,0 +1,651 @@
+
+
+
+
+
+
+
+会员权限
+
+
+公司主页
+
+信息发布
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/honor.tpl.php b/module/member/admin/template/honor.tpl.php
new file mode 100644
index 0000000..bff0cfc
--- /dev/null
+++ b/module/member/admin/template/honor.tpl.php
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/honor_edit.tpl.php b/module/member/admin/template/honor_edit.tpl.php
new file mode 100644
index 0000000..e800e43
--- /dev/null
+++ b/module/member/admin/template/honor_edit.tpl.php
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/index.html b/module/member/admin/template/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/member/admin/template/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/member/admin/template/link.tpl.php b/module/member/admin/template/link.tpl.php
new file mode 100644
index 0000000..8b626ab
--- /dev/null
+++ b/module/member/admin/template/link.tpl.php
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/link_edit.tpl.php b/module/member/admin/template/link_edit.tpl.php
new file mode 100644
index 0000000..b83e904
--- /dev/null
+++ b/module/member/admin/template/link_edit.tpl.php
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/mail.tpl.php b/module/member/admin/template/mail.tpl.php
new file mode 100644
index 0000000..f8ffddd
--- /dev/null
+++ b/module/member/admin/template/mail.tpl.php
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+分类
+标题
+添加时间
+发送时间
+订阅人数
+操作
+
+$v) {?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/mail_edit.tpl.php b/module/member/admin/template/mail_edit.tpl.php
new file mode 100644
index 0000000..980ec23
--- /dev/null
+++ b/module/member/admin/template/mail_edit.tpl.php
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/mail_list.tpl.php b/module/member/admin/template/mail_list.tpl.php
new file mode 100644
index 0000000..153e416
--- /dev/null
+++ b/module/member/admin/template/mail_list.tpl.php
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+会员名
+邮件地址
+订阅时间
+更新时间
+订阅类别
+操作
+
+$v) {?>
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/member.tpl.php b/module/member/admin/template/member.tpl.php
new file mode 100644
index 0000000..b48730a
--- /dev/null
+++ b/module/member/admin/template/member.tpl.php
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/member_add.tpl.php b/module/member/admin/template/member_add.tpl.php
new file mode 100644
index 0000000..090a1a0
--- /dev/null
+++ b/module/member/admin/template/member_add.tpl.php
@@ -0,0 +1,348 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/member_check.tpl.php b/module/member/admin/template/member_check.tpl.php
new file mode 100644
index 0000000..fb1663b
--- /dev/null
+++ b/module/member/admin/template/member_check.tpl.php
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/member_edit_passport.tpl.php b/module/member/admin/template/member_edit_passport.tpl.php
new file mode 100644
index 0000000..2a9e508
--- /dev/null
+++ b/module/member/admin/template/member_edit_passport.tpl.php
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/member_edit_username.tpl.php b/module/member/admin/template/member_edit_username.tpl.php
new file mode 100644
index 0000000..ff53369
--- /dev/null
+++ b/module/member/admin/template/member_edit_username.tpl.php
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/member_show.tpl.php b/module/member/admin/template/member_show.tpl.php
new file mode 100644
index 0000000..056406c
--- /dev/null
+++ b/module/member/admin/template/member_show.tpl.php
@@ -0,0 +1,358 @@
+
+会员资料
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+会员名
+
+[在线 隐身 离线 ]
+
+会员ID
+
+
+
+
+昵称
+
+会员组
+
+
+
+
+姓 名
+
+性 别
+
+
+
+指数
+
+登录次数
+
+
+
+
+服务开始日期
+
+服务结束日期
+ [已过期]' : '';?>
+
+
+
+上次登录
+
+登录IP
+ -
+
+
+注册时间
+
+注册IP
+ -
+
+
+余额
+
+保证金
+
+
+
+短信余额
+ 条
+会员
+
+
+
+备注信息
+
+query("SELECT * FROM {$DT_PRE}weixin_user WHERE username='$username' ORDER BY itemid DESC");
+while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['logindate'] = timetodate($r['visittime'], 5);
+ $r['name'] = '微信';
+ $r['avatar'] = $r['headimgurl'];
+ $r['avatar'] or $r['avatar'] = DT_PATH.'api/oauth/avatar.png';
+ $r['url'] = "javascript:Dwidget('?moduleid=2&file=weixin&openid=".$r['openid']."&action=chat', '与[".$r['nickname']."]交谈', 800, 520);";
+ $lists[] = $r;
+}
+$result = $db->query("SELECT * FROM {$DT_PRE}oauth WHERE username='$username' ORDER BY itemid DESC");
+while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['logindate'] = timetodate($r['logintime'], 5);
+ $r['avatar'] or $r['avatar'] = DT_PATH.'api/oauth/avatar.png';
+ $r['name'] = $OAUTH[$r['site']]['name'];
+ if($r['url']) $r['url'] .= '" target="_blank"';
+ $lists[] = $r;
+}
+if($lists) {
+?>
+社交账号
+
+
+平台
+头像
+昵称
+绑定时间
+上次登录
+登录次数
+
+$v) {?>
+
+
+
+
+
+
+
+
+
+
+
+公司资料
+
+
+公司名称
+ 查询
+商铺名称
+
+
+
+公司主页
+
+浏览次数
+
+
+
+公司类型
+
+经营模式
+
+
+
+注册资本
+ 万
+公司规模
+
+
+
+成立年份
+
+公司所在地
+
+
+
+销售的产品 (提供的服务)
+
+采购的产品 (需要的服务)
+
+
+
+主营范围:
+
+
+
+
+
+主营行业:
+
+
+ $c) { ?>
+
+
+
+
+
+
+
+联系方式
+
+
+姓 名
+
+手 机
+
+
+
+部 门
+
+职 位
+
+
+
+电 话
+
+传 真
+
+
+
+Email (不公开)
+
+Email (公开)
+
+
+
+QQ
+
+阿里旺旺
+
+
+
+微信
+
+Skype
+
+
+
+网 址
+
+邮 编
+
+
+
+公司经营地址
+
+
+
+
+财务信息
+
+
+开户银行
+
+
+
+开户网点
+
+
+
+账户性质
+
+
+
+收款户名
+
+
+
+收款帐号
+
+
+
+
+其他信息
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/message.tpl.php b/module/member/admin/template/message.tpl.php
new file mode 100644
index 0000000..da60eb0
--- /dev/null
+++ b/module/member/admin/template/message.tpl.php
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/message_clear.tpl.php b/module/member/admin/template/message_clear.tpl.php
new file mode 100644
index 0000000..66c18f0
--- /dev/null
+++ b/module/member/admin/template/message_clear.tpl.php
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/message_send.tpl.php b/module/member/admin/template/message_send.tpl.php
new file mode 100644
index 0000000..2f135d9
--- /dev/null
+++ b/module/member/admin/template/message_send.tpl.php
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/message_show.tpl.php b/module/member/admin/template/message_show.tpl.php
new file mode 100644
index 0000000..5cc8951
--- /dev/null
+++ b/module/member/admin/template/message_show.tpl.php
@@ -0,0 +1,35 @@
+
+
+
+标题
+
+
+
+发件人
+
+
+
+收件人
+
+
+
+时间
+
+
+
+IP
+
+
+
+内容
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/news.tpl.php b/module/member/admin/template/news.tpl.php
new file mode 100644
index 0000000..80b6f87
--- /dev/null
+++ b/module/member/admin/template/news.tpl.php
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+推送至..
+
+
+
+
+取消', 0, 'onchange="this.form.action=\'?moduleid='.$moduleid.'&file='.$file.'&action=level\';this.form.submit();"');?>
+
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/news_push.tpl.php b/module/member/admin/template/news_push.tpl.php
new file mode 100644
index 0000000..a7ea062
--- /dev/null
+++ b/module/member/admin/template/news_push.tpl.php
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/oauth.tpl.php b/module/member/admin/template/oauth.tpl.php
new file mode 100644
index 0000000..4e2d866
--- /dev/null
+++ b/module/member/admin/template/oauth.tpl.php
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/oauth_edit.tpl.php b/module/member/admin/template/oauth_edit.tpl.php
new file mode 100644
index 0000000..2fe1551
--- /dev/null
+++ b/module/member/admin/template/oauth_edit.tpl.php
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/page.tpl.php b/module/member/admin/template/page.tpl.php
new file mode 100644
index 0000000..233d2b2
--- /dev/null
+++ b/module/member/admin/template/page.tpl.php
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/page_edit.tpl.php b/module/member/admin/template/page_edit.tpl.php
new file mode 100644
index 0000000..bda35f2
--- /dev/null
+++ b/module/member/admin/template/page_edit.tpl.php
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/pay.tpl.php b/module/member/admin/template/pay.tpl.php
new file mode 100644
index 0000000..1669153
--- /dev/null
+++ b/module/member/admin/template/pay.tpl.php
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/pay_stats.tpl.php b/module/member/admin/template/pay_stats.tpl.php
new file mode 100644
index 0000000..88eadef
--- /dev/null
+++ b/module/member/admin/template/pay_stats.tpl.php
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+选择年
+= 2000; $i--) { ?>
+>年
+
+
+
+选择月
+
+>月
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/record_add.tpl.php b/module/member/admin/template/record_add.tpl.php
new file mode 100644
index 0000000..ffc24a3
--- /dev/null
+++ b/module/member/admin/template/record_add.tpl.php
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/sendmail.tpl.php b/module/member/admin/template/sendmail.tpl.php
new file mode 100644
index 0000000..68f6bf4
--- /dev/null
+++ b/module/member/admin/template/sendmail.tpl.php
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/sendmail_list.tpl.php b/module/member/admin/template/sendmail_list.tpl.php
new file mode 100644
index 0000000..1bc7167
--- /dev/null
+++ b/module/member/admin/template/sendmail_list.tpl.php
@@ -0,0 +1,35 @@
+
+
+
+文件
+文件大小(Kb)
+记录数
+获取时间
+操作
+
+$v) {?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/sendmail_make.tpl.php b/module/member/admin/template/sendmail_make.tpl.php
new file mode 100644
index 0000000..b30cf4d
--- /dev/null
+++ b/module/member/admin/template/sendmail_make.tpl.php
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/sendmail_record.tpl.php b/module/member/admin/template/sendmail_record.tpl.php
new file mode 100644
index 0000000..df2e4c7
--- /dev/null
+++ b/module/member/admin/template/sendmail_record.tpl.php
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/sendsms_make.tpl.php b/module/member/admin/template/sendsms_make.tpl.php
new file mode 100644
index 0000000..53fc634
--- /dev/null
+++ b/module/member/admin/template/sendsms_make.tpl.php
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/sendsms_record.tpl.php b/module/member/admin/template/sendsms_record.tpl.php
new file mode 100644
index 0000000..d358e74
--- /dev/null
+++ b/module/member/admin/template/sendsms_record.tpl.php
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/sms_add.tpl.php b/module/member/admin/template/sms_add.tpl.php
new file mode 100644
index 0000000..83edbb8
--- /dev/null
+++ b/module/member/admin/template/sms_add.tpl.php
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/stock_edit.tpl.php b/module/member/admin/template/stock_edit.tpl.php
new file mode 100644
index 0000000..e40f8b7
--- /dev/null
+++ b/module/member/admin/template/stock_edit.tpl.php
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/stock_open.tpl.php b/module/member/admin/template/stock_open.tpl.php
new file mode 100644
index 0000000..48fe38c
--- /dev/null
+++ b/module/member/admin/template/stock_open.tpl.php
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+取消', 0, 'onchange="this.form.action=\'?moduleid='.$moduleid.'&file='.$file.'&action=level\';this.form.submit();"');?>
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/stock_record.tpl.php b/module/member/admin/template/stock_record.tpl.php
new file mode 100644
index 0000000..e109f5f
--- /dev/null
+++ b/module/member/admin/template/stock_record.tpl.php
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/stock_update.tpl.php b/module/member/admin/template/stock_update.tpl.php
new file mode 100644
index 0000000..9da3798
--- /dev/null
+++ b/module/member/admin/template/stock_update.tpl.php
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/style.tpl.php b/module/member/admin/template/style.tpl.php
new file mode 100644
index 0000000..c55901d
--- /dev/null
+++ b/module/member/admin/template/style.tpl.php
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/style_edit.tpl.php b/module/member/admin/template/style_edit.tpl.php
new file mode 100644
index 0000000..a466aa9
--- /dev/null
+++ b/module/member/admin/template/style_edit.tpl.php
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/style_order.tpl.php b/module/member/admin/template/style_order.tpl.php
new file mode 100644
index 0000000..aa00c1c
--- /dev/null
+++ b/module/member/admin/template/style_order.tpl.php
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/validate.tpl.php b/module/member/admin/template/validate.tpl.php
new file mode 100644
index 0000000..1c74fdf
--- /dev/null
+++ b/module/member/admin/template/validate.tpl.php
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+ 操作原因
+ 站内通知
+ 邮件通知
+ 短信通知
+ 微信通知
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/validate_close.tpl.php b/module/member/admin/template/validate_close.tpl.php
new file mode 100644
index 0000000..5be1169
--- /dev/null
+++ b/module/member/admin/template/validate_close.tpl.php
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+ 至
+
+认证类型
+$v) { ?>
+>
+
+
+
+状态
+>已注销
+>未审核
+
+
+
+
+
+
+
+
+
+
+
+ 操作原因
+ 站内通知
+ 邮件通知
+ 短信通知
+ 微信通知
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/validate_show.tpl.php b/module/member/admin/template/validate_show.tpl.php
new file mode 100644
index 0000000..23a1d26
--- /dev/null
+++ b/module/member/admin/template/validate_show.tpl.php
@@ -0,0 +1,126 @@
+
+会员信息
+
+
+
+
+
+
+
+
+ 操作原因
+ 站内通知
+ 邮件通知
+ 短信通知
+ 微信通知
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/weixin.tpl.php b/module/member/admin/template/weixin.tpl.php
new file mode 100644
index 0000000..fe2352c
--- /dev/null
+++ b/module/member/admin/template/weixin.tpl.php
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/weixin_auto.tpl.php b/module/member/admin/template/weixin_auto.tpl.php
new file mode 100644
index 0000000..1e42409
--- /dev/null
+++ b/module/member/admin/template/weixin_auto.tpl.php
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/weixin_edit.tpl.php b/module/member/admin/template/weixin_edit.tpl.php
new file mode 100644
index 0000000..aa150e4
--- /dev/null
+++ b/module/member/admin/template/weixin_edit.tpl.php
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/weixin_menu.tpl.php b/module/member/admin/template/weixin_menu.tpl.php
new file mode 100644
index 0000000..a9616f5
--- /dev/null
+++ b/module/member/admin/template/weixin_menu.tpl.php
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+地址/事件类型说明
+
+
+
+留空:一级菜单包含子菜单时,需要留空
+链接:直接填写http开头的网址,例如
+事件:直接填写自定义事件名称,例如 V_member
+小程序:appid|pagepath|url,例如 wx286b93c14bbf93aa|pages/lunar/index|http://mp.weixin.qq.com
+
+
+
+
+
\ No newline at end of file
diff --git a/module/member/admin/template/weixin_user.tpl.php b/module/member/admin/template/weixin_user.tpl.php
new file mode 100644
index 0000000..18df1f5
--- /dev/null
+++ b/module/member/admin/template/weixin_user.tpl.php
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/member/admin/validate.inc.php b/module/member/admin/validate.inc.php
new file mode 100644
index 0000000..dc44a0c
--- /dev/null
+++ b/module/member/admin/validate.inc.php
@@ -0,0 +1,336 @@
+'资料审核', 'company'=>'公司认证', 'shop'=>'商铺认证', 'truename'=>'实名认证', 'mobile'=>'手机认证', 'email'=>'邮件认证', 'passport'=>'昵称修改', 'username'=>'帐号修改', 'close'=>'账号注销');
+$S = array('member'=>'0', 'company'=>'1', 'shop'=>'2', 'truename'=>'3', 'mobile'=>'4', 'email'=>'5', 'passport'=>'6', 'username'=>'7', 'close'=>'8');
+$reason = isset($reason) ? trim($reason) : '';
+if($reason == '操作原因') $reason = '';
+$msg = isset($msg) ? 1 : 0;
+$eml = isset($eml) ? 1 : 0;
+$sms = isset($sms) ? 1 : 0;
+$wec = isset($wec) ? 1 : 0;
+if(!$DT['sms']) $sms = 0;
+if(!$EXT['weixin']) $wec = 0;
+
+$action or $action = 'member';
+switch($action) {
+ case 'cancel':
+ $itemid or msg('请选择记录');
+ $i = 0;
+ foreach($itemid as $id) {
+ $r = $db->get_one("SELECT * FROM {$table} WHERE itemid='$id' AND status=3");
+ if($r) {
+ $username = $r['username'];
+ $user = userinfo($username);
+ $userid = $user['userid'];
+ $fd = $r['type'];
+ $vfd = 'v'.$r['type'];
+ if($r['thumb']) delete_upload($r['thumb'], $userid);
+ if($r['thumb1']) delete_upload($r['thumb1'], $userid);
+ if($r['thumb2']) delete_upload($r['thumb2'], $userid);
+ $db->query("UPDATE {$DT_PRE}member SET `{$vfd}`=0 WHERE userid=$userid");
+ $db->query("DELETE FROM {$table} WHERE itemid=$id");
+ if($msg || $eml) {
+ $content = $title = '您的'.$V[$fd].'已经被取消,请重新认证';
+ if($reason) $content .= ' 取消原因:'.nl2br($reason);
+ if($msg) send_message($username, $title, $content);
+ if($eml) send_mail($user['email'], $title, $content);
+ }
+ $content = '您的'.$V[$fd].'已经被取消,请重新认证';
+ if($reason) $content .= ',取消原因:'.$reason;
+ if($sms) send_sms($user['mobile'], $content.$DT['sms_sign']);
+ if($wec) send_weixin($user['username'], $content);
+ $i++;
+ }
+ }
+ dmsg('取消认证 '.$i.' 条', $forward);
+ break;
+ case 'reject':
+ $itemid or msg('请选择记录');
+ $i = 0;
+ foreach($itemid as $id) {
+ $r = $db->get_one("SELECT * FROM {$table} WHERE itemid='$id' AND status=2");
+ if($r) {
+ $username = $r['username'];
+ $user = userinfo($username);
+ $userid = $user['userid'];
+ $fd = $r['type'];
+ if($r['thumb']) delete_upload($r['thumb'], $userid);
+ if($r['thumb1']) delete_upload($r['thumb1'], $userid);
+ if($r['thumb2']) delete_upload($r['thumb2'], $userid);
+ $db->query("DELETE FROM {$table} WHERE itemid=$id");
+ if($msg || $eml) {
+ $content = $title = '您的'.$V[$fd].'没有通过审核,请重新认证';
+ if($reason) $content .= ' 失败原因:'.nl2br($reason);
+ if($msg) send_message($username, $title, $content);
+ if($eml) send_mail($user['email'], $title, $content);
+ }
+ $content = '您的'.$V[$fd].'没有通过审核,请重新认证';
+ if($reason) $content .= ',失败原因:'.$reason;
+ if($sms) send_sms($user['mobile'], $content.$DT['sms_sign']);
+ if($wec) send_weixin($user['username'], $content);
+ $i++;
+ }
+ }
+ dmsg('拒绝认证 '.$i.' 条', $forward);
+ break;
+ case 'check':
+ $itemid or msg('请选择记录');
+ $i = 0;
+ foreach($itemid as $id) {
+ $r = $db->get_one("SELECT * FROM {$table} WHERE itemid='$id' AND status=2");
+ if($r) {
+ $value = $r['title'];
+ $username = $r['username'];
+ $user = userinfo($username);
+ $userid = $user['userid'];
+ $fd = $r['type'];
+ $vfd = 'v'.$r['type'];
+ $db->query("UPDATE {$DT_PRE}member SET `{$fd}`='$value',`{$vfd}`=1 WHERE userid=$userid");
+ if($fd == 'company') $db->query("UPDATE {$DT_PRE}company SET `company`='$value' WHERE userid=$userid");
+ $db->query("UPDATE {$table} SET status=3,editor='$_username',edittime='$DT_TIME' WHERE itemid='$id'");
+ if($msg || $eml) {
+ $content = $title = '您的'.$V[$fd].'已经通过审核';
+ if($reason) $content .= ' '.nl2br($reason);
+ if($msg) send_message($username, $title, $content);
+ if($eml) send_mail($user['email'], $title, $content);
+ }
+ $content = '您的'.$V[$fd].'已经通过审核';
+ if($reason) $content .= ','.$reason;
+ if($sms) send_sms($user['mobile'], $content.$DT['sms_sign']);
+ if($wec) send_weixin($user['username'], $content);
+ $i++;
+ }
+ }
+ dmsg('通过认证 '.$i.' 条', $forward);
+ break;
+ case 'close_reject':
+ $itemid or msg('请选择记录');
+ $i = 0;
+ foreach($itemid as $id) {
+ $r = $db->get_one("SELECT * FROM {$table} WHERE itemid='$id' AND status=2 AND type='close'");
+ if($r) {
+ $username = $r['username'];
+ $user = userinfo($username);
+ $userid = $user['userid'];
+ $fd = $r['type'];
+ if($r['thumb']) delete_upload($r['thumb'], $userid);
+ if($r['thumb1']) delete_upload($r['thumb1'], $userid);
+ if($r['thumb2']) delete_upload($r['thumb2'], $userid);
+ $db->query("DELETE FROM {$table} WHERE itemid=$id");
+ if($msg || $eml) {
+ $content = $title = '您的'.$V[$fd].'没有通过审核,请重新申请';
+ if($reason) $content .= ' 失败原因:'.nl2br($reason);
+ if($msg) send_message($username, $title, $content);
+ if($eml) send_mail($user['email'], $title, $content);
+ }
+ $content = '您的'.$V[$fd].'没有通过审核,请重新申请';
+ if($reason) $content .= ',失败原因:'.$reason;
+ if($sms) send_sms($user['mobile'], $content.$DT['sms_sign']);
+ if($wec) send_weixin($user['username'], $content);
+ $i++;
+ }
+ }
+ dmsg('拒绝审核 '.$i.' 条', $forward);
+ break;
+ case 'close_check':
+ $itemid or msg('请选择记录');
+ require DT_ROOT.'/module/'.$module.'/member.class.php';
+ $do = new member;
+ $i = 0;
+ foreach($itemid as $id) {
+ $r = $db->get_one("SELECT * FROM {$table} WHERE itemid='$id' AND status=2 AND type='close'");
+ if($r) {
+ $value = $r['title'];
+ $username = $r['username'];
+ $user = userinfo($username);
+ if($user['groupid'] == 1) continue;
+ $userid = $user['userid'];
+ $fd = $r['type'];
+ $db->query("UPDATE {$table} SET status=3,editor='$_username',edittime='$DT_TIME' WHERE itemid='$id'");
+ if($msg || $eml) {
+ $content = $title = '您的'.$V[$fd].'已经通过';
+ if($reason) $content .= ' '.nl2br($reason);
+ #if($msg) send_message($username, $title, $content);
+ if($eml) send_mail($user['email'], $title, $content);
+ }
+ $content = '您的'.$V[$fd].'已经通过';
+ if($reason) $content .= ','.$reason;
+ if($sms) send_sms($user['mobile'], $content.$DT['sms_sign']);
+ if($wec) send_weixin($user['username'], $content);
+ $do->delete($userid);
+ $i++;
+ }
+ }
+ dmsg('通过审核 '.$i.' 条', $forward);
+ break;
+ case 'member':
+ $sfields = array('按条件', '会员名', '资料内容');
+ $dfields = array('username', 'username', 'content');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ (isset($username) && check_name($username)) or $username = '';
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $condition = '1';
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($username) $condition .= " AND username='$username'";
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}member_check WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}member_check WHERE $condition ORDER BY addtime DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['addtime'] = timetodate($r['addtime'], 6);
+ $lists[] = $r;
+ }
+ include tpl('validate_member', $module);
+ break;
+ case 'show':
+ check_name($username) or msg();
+ $t = $db->get_one("SELECT * FROM {$DT_PRE}member_check WHERE username='$username'");
+ $t or msg('记录不存在');
+ $U = userinfo($username);
+ $U or msg('会员不存在');
+ $E = dstripslashes(unserialize($t['content']));
+ $userid = $U['userid'];
+ $content_table = content_table(4, $userid, is_file(DT_CACHE.'/4.part'), $DT_PRE.'company_data');
+ $t = $db->get_one("SELECT * FROM {$content_table} WHERE userid=$userid");
+ $U['content'] = $t['content'];
+ if(isset($E['regunit']) && !isset($E['capital'])) $E['capital'] = $U['capital'];
+ if($submit) {
+ isset($pass) or $pass = array();
+ $sql1 = $sql2 = $sql3 = '';
+ if(in_array('thumb', $pass) && isset($E['thumb'])) {
+ if($U['thumb']) delete_upload($U['thumb'], $userid);
+ $sql2 .= ",thumb='".addslashes($E['thumb'])."'";
+ }
+ if(in_array('areaid', $pass) && isset($E['areaid'])) {
+ $sql1 .= ",areaid='".addslashes($E['areaid'])."'";
+ $sql2 .= ",areaid='".addslashes($E['areaid'])."'";
+ }
+ if(in_array('type', $pass) && isset($E['type'])) {
+ $sql2 .= ",type='".addslashes($E['type'])."'";
+ }
+ if(in_array('business', $pass) && isset($E['business'])) {
+ $sql2 .= ",business='".addslashes($E['business'])."'";
+ }
+ if(in_array('regyear', $pass) && isset($E['regyear'])) {
+ $sql2 .= ",regyear='".addslashes($E['regyear'])."'";
+ }
+ if(in_array('capital', $pass) && isset($E['capital'])) {
+ $sql2 .= ",capital='".addslashes($E['capital'])."'";
+ if(isset($E['regunit'])) $sql2 .= ",regunit='".addslashes($E['regunit'])."'";
+ }
+ if(in_array('address', $pass) && isset($E['address'])) {
+ $sql2 .= ",address='".addslashes($E['address'])."'";
+ }
+ if(in_array('telephone', $pass) && isset($E['telephone'])) {
+ $sql2 .= ",telephone='".addslashes($E['telephone'])."'";
+ }
+ if(in_array('gzh', $pass) && isset($E['gzh'])) {
+ $sql2 .= ",gzh='".addslashes($E['gzh'])."'";
+ }
+ if(in_array('gzhqr', $pass) && isset($E['gzhqr'])) {
+ if($U['gzhqr']) delete_upload($U['gzhqr'], $userid);
+ $sql2 .= ",gzhqr='".addslashes($E['gzhqr'])."'";
+ }
+ if(in_array('content', $pass) && isset($E['content'])) {
+ delete_diff($E['content'], $U['content']);
+ $sql3 .= ",content='".addslashes($E['content'])."'";
+ }
+ $ECK = array(
+ 'thumb' => '形象图片',
+ 'areaid' => '所在地区',
+ 'type' => '公司类型',
+ 'business' => '经营范围',
+ 'regyear' => '成立年份',
+ 'capital' => '注册资本',
+ 'address' => '公司地址',
+ 'telephone' => '联系电话',
+ 'gzh' => '微信公众号',
+ 'gzhqr' => '公众号二维码',
+ 'content' => '公司介绍',
+ );
+ $title = '会员资料修改审核结果';
+ $content = '尊敬的会员: 您的会员资料修改已经审核,现将结果通知如下: ';
+ foreach($E as $k=>$v) {
+ if(!isset($ECK[$k])) continue;
+ $content .= $ECK[$k].' ---------- '.(in_array($k, $pass) ? '已通过 ' : '未通过 ').' ';
+ }
+ if($reason) $content .= '操作原因:'.nl2br($reason).' ';
+ if($msg) send_message($username, $title, $content);
+ if($eml) send_mail($U['email'], $title, $content);
+ if($sms) send_sms($U['mobile'], '您的会员资料修改审核结果已通过站内信发送,请注意查阅');
+ if($wec) send_weixin($username, '您的会员资料修改审核结果已通过站内信发送,请注意查阅');
+ if($sql1) $db->query("UPDATE {$DT_PRE}member SET ".substr($sql1, 1)." WHERE userid=$userid");
+ if($sql2) $db->query("UPDATE {$DT_PRE}company SET ".substr($sql2, 1)." WHERE userid=$userid");
+ if($sql3) $db->query("UPDATE {$content_table} SET ".substr($sql3, 1)." WHERE userid=$userid");
+ $db->query("DELETE FROM {$DT_PRE}member_check WHERE username='$username'");
+ dmsg('操作成功', '?moduleid='.$moduleid.'&file='.$file.'&action=member');
+ } else {
+ include tpl('validate_show', $module);
+ }
+ break;
+ default:
+ $menuid = $S[$action];
+ $edit = ($action == 'username' || $action == 'passport') ? 1 : 0;
+ $sfields = array('按条件', $edit ? '修改为' : '认证为', $edit ? '修改前' : '认证前', '会员名', '操作人');
+ $dfields = array('title', 'title', 'history', 'username', 'editor');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ isset($type) or $type = '';
+ (isset($username) && check_name($username)) or $username = '';
+ $status = isset($status) ? intval($status) : 0;
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $condition = '1';
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($action) $condition .= " AND type='$action'";
+ if($username) $condition .= " AND username='$username'";
+ if($status) $condition .= " AND status=$status";
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table} WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['addtime'] = timetodate($r['addtime'], 5);
+ $lists[] = $r;
+ }
+ if($action == 'close') {
+ $fields_select = str_replace('认证为', '注销原因', $fields_select);
+ include tpl('validate_close', $module);
+ } else {
+ include tpl('validate', $module);
+ }
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/member/alert.class.php b/module/member/alert.class.php
new file mode 100644
index 0000000..bd98aa4
--- /dev/null
+++ b/module/member/alert.class.php
@@ -0,0 +1,104 @@
+table = DT_PRE.'alert';
+ $this->fields = array('word','email','mid','catid','areaid','rate','username','addtime','editor','edittime','status');
+ }
+
+ function alert() {
+ $this->__construct();
+ }
+
+ function pass($post) {
+ global $L;
+ if(!is_array($post)) return false;
+ if(!$post['word'] && !$post['catid']) return $this->_($L['alert_pass']);
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $_username, $_cname;
+ $post['editor'] = $_cname ? $_cname : $_username;
+ $post['edittime'] = DT_TIME;
+ $post = dhtmlspecialchars($post);
+ return array_map("trim", $post);
+ }
+
+ function get_one() {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$this->itemid");
+ }
+
+ function get_list($condition = 'status=3', $order = 'itemid DESC') {
+ global $MOD, $pages, $page, $pagesize, $offset, $sum, $items;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $MOD;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ return true;
+ }
+
+ function delete($itemid, $all = true) {
+ global $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->delete($v); }
+ } else {
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ }
+ }
+
+ function check($itemid, $status = 3) {
+ global $_username;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->check($v, $status); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=$status,editor='$_username',edittime=".DT_TIME." WHERE itemid=$itemid");
+ return true;
+ }
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/member/alert.inc.php b/module/member/alert.inc.php
new file mode 100644
index 0000000..1557456
--- /dev/null
+++ b/module/member/alert.inc.php
@@ -0,0 +1,114 @@
+ -1 or dheader(($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).'account.php?action=group&itemid=1');
+$menu_id = 2;
+$mids = array();
+$tmp = explode('|', $MOD['alertid']);
+foreach($tmp as $v) {
+ if($v > 4 && isset($MODULE[$v])) $mids[] = $v;
+}
+require DT_ROOT.'/include/post.func.php';
+require DT_ROOT.'/module/'.$module.'/alert.class.php';
+$do = new alert();
+
+switch($action) {
+ case 'add':
+ if($MG['alert_limit']) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}alert WHERE username='$_username' AND status>0");
+ if($r['num'] >= $MG['alert_limit']) dalert(lang($L['limit_add'], array($MG['alert_limit'], $r['num'])), 'goback');
+ }
+ if($submit) {
+ if($do->pass($post)) {
+ $post['username'] = $_username;
+ $post['email'] = $_email;
+ $need_check = $MOD['alert_check'] == 2 ? $MG['check'] : $MOD['alert_check'];
+ $post['status'] = get_status(3, $need_check);
+ $post['addtime'] = $DT_TIME;
+ $do->add($post);
+ $msg = $L['op_add_success'];
+ if($post['status'] == 2) $msg = $msg.' '.$L['op_checking'];
+ dmsg($msg, '?status='.$post['status']);
+ } else {
+ message($do->errmsg);
+ }
+ } else {
+ if(in_array($mid, $mids)) {
+ $_mid = $mid;
+ foreach($do->fields as $v) {
+ $$v = '';
+ }
+ $mid = $_mid;
+ $head_title = $L['alert_add_title'];
+ } else {
+ dheader('?action=list');
+ }
+ }
+ break;
+ case 'list':
+ $head_title = $L['alert_add_title'];
+ break;
+ case 'edit':
+ $itemid or message();
+ $do->itemid = $itemid;
+ $r = $do->get_one();
+ if(!$r || $r['username'] != $_username) message();
+ if($submit) {
+ if($do->pass($post)) {
+ $post['username'] = $_username;
+ $post['email'] = $_email;
+ $need_check = $MOD['alert_check'] == 2 ? $MG['check'] : $MOD['alert_check'];
+ $post['status'] = get_status($r['status'], $need_check);
+ $do->edit($post);
+ dmsg($L['op_edit_success'], $forward);
+ } else {
+ message($do->errmsg);
+ }
+ } else {
+ extract($r);
+ }
+ break;
+ case 'delete':
+ $itemid or message();
+ $itemids = is_array($itemid) ? $itemid : array($itemid);
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if($item && $item['username'] == $_username) $do->delete($itemid);
+ }
+ dmsg($L['op_del_success'], $forward);
+ break;
+ default:
+ $status = isset($status) ? intval($status) : 3;
+ in_array($status, array(2, 3)) or $status = 3;
+ $condition = "username='$_username' AND status=$status";
+ $lists = $do->get_list($condition);
+ if($lists) {
+ foreach($lists as $k=>$v) {
+ if($v['catid']) $lists[$k]['cate'] = $DT_PC ? cat_pos(get_cat($v['catid']), '-', 1) : strip_tags(cat_pos(get_cat($v['catid']), '-'));
+ if($v['email'] != $_email) $db->query("UPDATE {$DT_PRE}alert SET email='$_email' WHERE itemid=$v[itemid]");
+ }
+ }
+ $head_title = $L['alert_title'];
+ break;
+}
+$nums = array();
+$limit_used = 0;
+for($i = 2; $i < 4; $i++) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}alert WHERE username='$_username' AND status=$i");
+ $nums[$i] = $r['num'];
+ $limit_used += $r['num'];
+}
+$limit_free = $MG['alert_limit'] && $MG['alert_limit'] > $limit_used ? $MG['alert_limit'] - $limit_used : 0;
+if($DT_PC) {
+ //
+} else {
+ if((!$action || $action == 'index') && !$kw) $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : 'biz.php');
+ if($pages) $pages = mobile_pages($items, $page, $pagesize);
+ $head_name = $head_title;
+}
+include template('alert', $module);
+?>
\ No newline at end of file
diff --git a/module/member/avatar.inc.php b/module/member/avatar.inc.php
new file mode 100644
index 0000000..d64fd6a
--- /dev/null
+++ b/module/member/avatar.inc.php
@@ -0,0 +1,123 @@
+query("UPDATE {$DT_PRE}member SET avatar=$t WHERE userid=$_userid");
+ dheader('?reload='.$DT_TIME);
+ break;
+ case 'upload':
+ if($_FILES) {
+ if(!$_FILES['file']['size'] || !is_image($_FILES['file']['name'])) exit('{"error":1,"message":"Error FILE"}');
+ require DT_ROOT.'/include/upload.class.php';
+ $ext = file_ext($_FILES['file']['name']);
+ $name = 'avatar'.$_userid.'.'.$ext;
+ $file = DT_ROOT.'/file/temp/'.$name;
+ if(is_file($file)) file_del($file);
+ $upload = new upload($_FILES, 'file/temp/', $name, 'jpg|jpeg|gif|png');
+ $upload->adduserid = false;
+ if(!$upload->save()) exit('{"error":1,"message":"'.$upload->errmsg.'"}');
+ } else {
+ if(strpos($_DPOST['image'], 'data:image/png;base64,') === false) exit('{"error":1,"message":"Error IMAGE"}');
+ $ext = 'png';
+ $name = 'avatar'.$_userid.'.'.$ext;
+ $file = DT_ROOT.'/file/temp/'.$name;
+ if(is_file($file)) file_del($file);
+ $image = $_DPOST['image'];
+ $image = cutstr($image, 'data:image/png;base64,');
+ $image = base64_decode($image);
+ file_put($file, $image);
+ }
+ $img_info = @getimagesize($file);
+ $upload_mime = array('jpg' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'gif' => 'image/gif', 'png' => 'image/png');
+ if(!$img_info || $img_info['mime'] != $upload_mime[$ext] || $img_info[0] < 128 || $img_info[1] < 128) file_del($file);
+ $img_info or exit('{"error":1,"message":"'.$L['avatar_img_t'].'"}');
+ $img_info['mime'] == $upload_mime[$ext] or exit('{"error":1,"message":"'.$L['avatar_img_t'].'"}');
+ $img_info[0] >= 128 or exit('{"error":1,"message":"'.$L['avatar_img_w'].'"}');
+ $img_info[1] >= 128 or exit('{"error":1,"message":"'.$L['avatar_img_h'].'"}');
+ $ani = ($ext == 'gif' && strpos(file_get($file), chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0') !== false && $_FILES['file']['size'] < 200*1024) ? 1 : 0;
+ $md5 = md5($_userid);
+ $dir = DT_ROOT.'/file/avatar/'.substr($md5, 0, 2).'/'.substr($md5, 2, 2).'/'.$_userid;
+ $img = array();
+ $img[1] = $dir.'.jpg';
+ $img[2] = $dir.'x48.jpg';
+ $img[3] = $dir.'x20.jpg';
+ $md5 = md5($_username);
+ $dir = DT_ROOT.'/file/avatar/'.substr($md5, 0, 2).'/'.substr($md5, 2, 2).'/_'.$_username;
+ $img[4] = $dir.'.jpg';
+ $img[5] = $dir.'x48.jpg';
+ $img[6] = $dir.'x20.jpg';
+ require DT_ROOT.'/include/image.class.php';
+ if(!$ani) {
+ $image = new image($file);
+ $image->thumb(128, 128);
+ }
+ file_copy($file, $img[1]);
+ file_copy($file, $img[4]);
+ if(!$ani) {
+ $image = new image($file);
+ $image->thumb(48, 48);
+ }
+ file_copy($file, $img[2]);
+ file_copy($file, $img[5]);
+ if(!$ani) {
+ $image = new image($file);
+ $image->thumb(20, 20);
+ }
+ file_copy($file, $img[3]);
+ file_copy($file, $img[6]);
+ file_del($file);
+ if($DT['ftp_remote'] && $DT['remote_url']) {
+ require DT_ROOT.'/include/ftp.class.php';
+ $ftp = new dftp($DT['ftp_host'], $DT['ftp_user'], $DT['ftp_pass'], $DT['ftp_port'], $DT['ftp_path'], $DT['ftp_pasv'], $DT['ftp_ssl']);
+ if($ftp->connected) {
+ foreach($img as $i) {
+ $t = explode("/file/", $i);
+ $ftp->dftp_put('file/'.$t[1], $t[1]);
+ }
+ }
+ }
+ $db->query("UPDATE {$DT_PRE}member SET avatar=1 WHERE userid=$_userid");
+ exit('{"error":0}');
+ break;
+ case 'delete':
+ if($avatar) {
+ $img = array();
+ $img[1] = useravatar($_userid, 'large', 0, 2);
+ $img[2] = useravatar($_userid, '', 0, 2);
+ $img[3] = useravatar($_userid, 'small', 0, 2);
+ $img[4] = useravatar($_username, 'large', 1, 2);
+ $img[5] = useravatar($_username, '', 1, 2);
+ $img[6] = useravatar($_username, 'small', 1, 2);
+ foreach($img as $i) {
+ file_del($i);
+ }
+ if($DT['ftp_remote'] && $DT['remote_url']) {
+ require DT_ROOT.'/include/ftp.class.php';
+ $ftp = new dftp($DT['ftp_host'], $DT['ftp_user'], $DT['ftp_pass'], $DT['ftp_port'], $DT['ftp_path'], $DT['ftp_pasv'], $DT['ftp_ssl']);
+ if($ftp->connected) {
+ foreach($img as $i) {
+ $t = explode("/file/", $i);
+ $ftp->dftp_delete($t[1]);
+ }
+ }
+ }
+ }
+ $db->query("UPDATE {$DT_PRE}member SET avatar=0 WHERE userid=$_userid");
+ dmsg($L['avatar_delete'], '?reload='.$DT_TIME);
+ break;
+ default:
+ $head_title = $L['avatar_title'];
+ break;
+}
+if($DT_PC) {
+ //
+} else {
+ $head_name = $head_title;
+}
+include template('avatar', $module);
+?>
\ No newline at end of file
diff --git a/module/member/award.inc.php b/module/member/award.inc.php
new file mode 100644
index 0000000..0ce5e8c
--- /dev/null
+++ b/module/member/award.inc.php
@@ -0,0 +1,68 @@
+ 3 && isset($MODULE[$mid]) && !$MODULE[$mid]['islink']) or dheader($DT_PC ? DT_PATH : DT_MOB);
+$awards = $MOD['awards'] ? explode('|', $MOD['awards']) : array();
+$moduleid = $mid;
+$MOD = cache_read('module-'.$mid.'.php');
+$fee_award = min(abs(dround($MOD['fee_award'])), 100);
+($itemid && $fee_award) or dheader($DT_PC ? $MOD['linkurl'] : $MOD['mobile']);
+$table = $MOD['module'] == 'job' ? $DT_PRE.'job_resume_'.$mid : get_table($mid);
+if($mid == 4) {
+ $item = $db->get_one("SELECT * FROM {$table} WHERE userid=$itemid");
+ if(!$item) dheader($DT_PC ? $MOD['linkurl'] : $MOD['mobile']);
+ $title = $item['company'];
+ $username = $item['username'];
+} else {
+ $item = $db->get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3) dheader($DT_PC ? $MOD['linkurl'] : $MOD['mobile']);
+ $title = $item['title'];
+ $username = $item['username'];
+}
+if($MOD['module'] == 'know') {
+ $aid = intval($item['aid']);
+ $best = $aid ? $db->get_one("SELECT * FROM {$DT_PRE}know_answer_{$mid} WHERE itemid=$aid") : array();
+ if($best && $best['username']) $username = $best['username'];
+}
+if($_username == $username) message($L['award_msg_self']);
+$forward = strpos($item['linkurl'], '://') === false ? ($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).$item['linkurl'] : $item['linkurl'];
+$note = $MOD['name'].($MOD['module'] == 'job' ? $L['resume_name'] : '').':'.$itemid;
+$auto = 0;
+$auth = isset($auth) ? decrypt($auth, DT_KEY.'CG') : '';
+if($auth && substr($auth, 0, 6) == 'award|') {
+ $t = explode('|', $auth);
+ $_mid = intval($t[1]);
+ $_itemid = intval($t[2]);
+ $fee = dround($t[3]);
+ if($_mid == $mid && $_itemid == $itemid && $fee > 0) $auto = $submit = 1;
+}
+if($submit) {
+ $fee > 0 or message($L['award_msg_fee']);
+ $fee <= $_money or message($L['money_not_enough']);
+ if($fee <= $DT['quick_pay']) $auto = 1;
+ if(!$auto) {
+ is_payword($_username, $password) or message($L['error_payword']);
+ }
+ money_add($_username, -$fee);
+ money_record($_username, -$fee, $L['in_site'], 'system', $L['award_record_view'], $note);
+ $fee_back = dround($fee*$fee_award/100);
+ if($username && $fee_back) {
+ money_add($username, $fee_back);
+ money_record($username, $fee_back, $L['in_site'], 'system', $L['award_record_back'], $note);
+ }
+ $db->query("INSERT INTO {$DT_PRE}finance_award (mid,tid,username,fee,paytime,ip,title) VALUES ('$mid','$itemid','$_username','$fee','$DT_TIME','$DT_IP','".addslashes($title)."')");
+ $id = $mid == 4 ? 'userid' : 'itemid';
+ $db->query("UPDATE {$table} SET awards=awards+1,award=award+".$fee." WHERE `{$id}`=$itemid");
+ message($L['award_msg_success'], $forward);
+} else {
+ $head_title = $L['award_title'];
+ if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MODULE[2]['linkurl'], $MODULE[2]['mobile'], $DT_URL);
+ } else {
+ $head_name = $head_title;
+ }
+ include template('award', $module);
+}
+?>
\ No newline at end of file
diff --git a/module/member/biz.inc.php b/module/member/biz.inc.php
new file mode 100644
index 0000000..b4337cc
--- /dev/null
+++ b/module/member/biz.inc.php
@@ -0,0 +1,62 @@
+ 1) { $xd .= ','; $y0 .= ','; $y1 .= ','; }
+ $xd .= "'".$i.$L['biz_day']."'";
+ $F = datetotime($year.'-'.$month.'-'.$i.' 00:00:00');
+ $T = datetotime($year.'-'.$month.'-'.$i.' 23:59:59');
+ $condition = "addtime>=$F AND addtime<=$T AND seller='$_username' AND pid=0";
+ $t = $db->get_one("SELECT SUM(`amount`) AS num1,SUM(`fee`) AS num2 FROM {$DT_PRE}order WHERE {$condition} AND status=4");
+ $num1 = $t['num1'] ? dround($t['num1']) : 0;
+ $num2 = $t['num2'] ? dround($t['num2']) : 0;
+ $num = $num1 + $num2;
+ $y0 .= $num; $t0 += $num;
+ $t = $db->get_one("SELECT SUM(`amount`) AS num1,SUM(`fee`) AS num2 FROM {$DT_PRE}order WHERE {$condition} AND status=6");
+ $num1 = $t['num1'] ? dround($t['num1']) : 0;
+ $num2 = $t['num2'] ? dround($t['num2']) : 0;
+ $num = $num1 + $num2;
+ $y1 .= $num; $t1 += $num;
+ }
+ $title = lang($L['biz_title_month'], array($year, $month, $DT['money_unit']));
+ } else {
+ for($i = 1; $i < 13; $i++) {
+ if($i > 1) { $xd .= ','; $y0 .= ','; $y1 .= ','; }
+ $xd .= "'".$i.$L['biz_month']."'";
+ $F = datetotime($year.'-'.$i.'-01 00:00:00');
+ $T = datetotime($year.'-'.$i.'-'.date('t', $F).' 23:59:59');
+ $condition = "addtime>=$F AND addtime<=$T AND seller='$_username' AND pid=0";
+ $t = $db->get_one("SELECT SUM(`amount`) AS num1,SUM(`fee`) AS num2 FROM {$DT_PRE}order WHERE {$condition} AND status=4");
+ $num1 = $t['num1'] ? dround($t['num1']) : 0;
+ $num2 = $t['num2'] ? dround($t['num2']) : 0;
+ $num = $num1 + $num2;
+ $y0 .= $num; $t0 += $num;
+ $t = $db->get_one("SELECT SUM(`amount`) AS num1,SUM(`fee`) AS num2 FROM {$DT_PRE}order WHERE {$condition} AND status=6");
+ $num1 = $t['num1'] ? dround($t['num1']) : 0;
+ $num2 = $t['num2'] ? dround($t['num2']) : 0;
+ $num = $num1 + $num2;
+ $y1 .= $num; $t1 += $num;
+ }
+ $title = lang($L['biz_title_year'], array($year, $DT['money_unit']));
+ }
+ $user = userinfo($_username);
+ $deposit = $user['deposit'];
+ $menu_id = 2;
+} else {
+ $head_name = $head_title;
+ $foot = 'my';
+}
+include template('biz', $module);
+?>
\ No newline at end of file
diff --git a/module/member/cart.class.php b/module/member/cart.class.php
new file mode 100644
index 0000000..a2d0b70
--- /dev/null
+++ b/module/member/cart.class.php
@@ -0,0 +1,170 @@
+userid = $_userid;
+ $this->table = DT_PRE.'cart';
+ }
+
+ function cart() {
+ $this->__construct();
+ }
+
+ function set($cart) {
+ set_cookie('cart', count($cart), DT_TIME + 30*86400);
+ $data = addslashes(serialize($cart));
+ DB::query("REPLACE INTO {$this->table} (userid,data,edittime) VALUES ('$this->userid', '$data', '".DT_TIME."')");
+ }
+
+ function add($cart, $mid, $itemid, $s1, $s2, $s3, $a) {
+ global $_username;
+ if(is_array($itemid) && count($itemid) == 1) {
+ $id = $itemid[0];
+ $itemid = $id;
+ }
+ $id = 0;
+ if(is_array($itemid)) {
+ $tags = array();
+ $itemids = implode(',', $itemid);
+ $result = DB::query("SELECT * FROM ".get_table($mid)." WHERE itemid IN ($itemids)");
+ while($r = DB::fetch_array($result)) {
+ $r['amount'] = get_amount($r);
+ if($r['amount'] < 1) return -5;
+ $tags[$r['itemid']] = $r;
+ }
+ foreach($itemid as $v) {
+ if(!isset($tags[$v])) continue;
+ if($tags[$v]['status'] != 3) continue;
+ if($tags[$v]['username'] == $_username) continue;
+ $k = $mid.'-'.$v.'-0-0-0';
+ if(isset($cart[$k])) {
+ $cart[$k] = $cart[$k] + 1;
+ } else {
+ $cart[$k] = 1;
+ }
+ $id = $v;
+ }
+ if($id == 0) return -3;
+ } else {
+ $r = DB::get_one("SELECT * FROM ".get_table($mid)." WHERE itemid=$itemid");
+ if(!$r) return -1;
+ if($r['status'] != 3) return -1;
+ if($r['username'] == $_username) return -4;
+ $r['amount'] = get_amount($r);
+ if($r['amount'] < 1) return -5;
+ $k = $mid.'-'.$itemid.'-'.$s1.'-'.$s2.'-'.$s3;
+ if(isset($cart[$k])) {
+ $cart[$k] = $cart[$k] + $a;
+ } else {
+ $cart[$k] = $a;
+ }
+ $id = $itemid;
+ }
+ $max = $this->max > 1 ? $this->max : 30;
+ while(count($cart) > $max) {
+ $cart = array_shift($cart);
+ }
+ $this->set($cart);
+ return $id;
+ }
+
+ function get() {
+ $r = DB::get_one("SELECT data FROM {$this->table} WHERE userid=$this->userid");
+ return ($r && $r['data']) ? unserialize($r['data']) : array();
+ }
+
+ function clear() {
+ set_cookie('cart', '0', DT_TIME + 30*86400);
+ DB::query("DELETE FROM {$this->table} WHERE userid=$this->userid");
+ }
+
+ function get_list($cart) {
+ global $MODULE, $_username;
+ $lists = $tags = $ids = $data = $_cart = array();
+ foreach($cart as $k=>$v) {
+ $t = array_map('intval', explode('-', $k));
+ $mid = $t[0];
+ $ids[$mid] = isset($ids[$mid]) ? $ids[$mid].','.$t[1] : $t[1];
+ $r = array();
+ $r['itemid'] = $t[1];
+ $r['s1'] = $t[2];
+ $r['s2'] = $t[3];
+ $r['s3'] = $t[4];
+ $r['a'] = $v;
+ $r['mid'] = $mid;
+ $data[$k] = $r;
+ }
+ if($ids) {
+ foreach($ids as $_mid=>$itemids) {
+ $result = DB::query("SELECT * FROM ".get_table($_mid)." WHERE itemid IN ($itemids)");
+ while($r = DB::fetch_array($result)) {
+ if($r['username'] == $_username || $r['status'] != 3) continue;
+ $r['valid'] = 1;
+ $r['mid'] = $_mid;
+ $r['alt'] = $r['title'];
+ $r['title'] = dsubstr($r['title'], 40, '..');
+ $r['moburl'] = $MODULE[$_mid]['mobile'].$r['linkurl'];
+ $r['linkurl'] = $MODULE[$_mid]['linkurl'].$r['linkurl'];
+ $r['P1'] = get_nv($r['n1'], $r['v1']);
+ $r['P2'] = get_nv($r['n2'], $r['v2']);
+ $r['P3'] = get_nv($r['n3'], $r['v3']);
+ $r['a1'] = 1;
+ if($MODULE[$_mid]['module'] == 'sell') {
+ $r['step'] = $r['stock'] = $r['prices'] = '';
+ $r['cod'] = 0;
+ $r['express_1'] = $r['express_name_1'] = $r['fee_start_1'] = $r['fee_step_1'] = '';
+ $r['express_2'] = $r['express_name_2'] = $r['fee_start_2'] = $r['fee_step_2'] = '';
+ $r['express_3'] = $r['express_name_3'] = $r['fee_start_3'] = $r['fee_step_3'] = '';
+ $r['a1'] = intval($r['minamount']);
+ }
+ if($r['step']) {
+ foreach(unserialize($r['step']) as $k=>$v) {
+ $r[$k] = $v;
+ }
+ } else {
+ $r['p1'] = $r['price'];
+ $r['a2'] = $r['a3'] = 0;
+ $r['p2'] = $r['p3'] = 0.00;
+ }
+ if($r['a1'] < 1) $r['a1'] = 1;
+ $tags[$r['mid'].'-'.$r['itemid']] = $r;
+ }
+ }
+ if($tags) {
+ foreach($data as $k=>$v) {
+ if(isset($tags[$v['mid'].'-'.$v['itemid']])) {
+ $r = $tags[$v['mid'].'-'.$v['itemid']];
+ $r['key'] = $k;
+ $r['s1'] = $v['s1'];
+ $r['s2'] = $v['s2'];
+ $r['s3'] = $v['s3'];
+ $r['a'] = $v['a'];
+ if($r['stock']) {
+ foreach(get_stock($r) as $kk=>$vv) {
+ $r[$kk] = $vv;
+ }
+ }
+ $r['amount'] = get_amount($r);
+ if($r['a'] > $r['amount']) $r['a'] = $r['amount'];
+ if($r['a'] < $r['a1']) $r['a'] = $r['a1'];
+ $r['price'] = $r['p1'] = get_price($r);
+ if($r['amount'] < 1 || $r['price'] < 0.01) $r['valid'] = 0;
+ $r['m1'] = isset($r['P1'][$r['s1']]) ? $r['P1'][$r['s1']] : '';
+ $r['m2'] = isset($r['P2'][$r['s2']]) ? $r['P2'][$r['s2']] : '';
+ $r['m3'] = isset($r['P3'][$r['s3']]) ? $r['P3'][$r['s3']] : '';
+ $_cart[$k] = $r['a'];
+ $lists[$r['username']][] = $r;
+ }
+ }
+ }
+ }
+ if(count($_cart) != count($cart) || count($_cart) != get_cookie('cart')) $this->set($_cart);
+ return $lists;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/member/cart.inc.php b/module/member/cart.inc.php
new file mode 100644
index 0000000..b43ee3f
--- /dev/null
+++ b/module/member/cart.inc.php
@@ -0,0 +1,84 @@
+max = intval($DT['max_cart']);
+ $cart = $do->get();
+ if($itemid) $action = 'add';
+} else {
+ $action = 'guest';
+}
+$lists = array();
+switch($action) {
+ case 'close':
+ break;
+ case 'guest':
+ break;
+ case 'add':
+ $s1 = isset($s1) ? intval($s1) : 0;
+ $s2 = isset($s2) ? intval($s2) : 0;
+ $s3 = isset($s3) ? intval($s3) : 0;
+ $a = isset($a) ? intval($a) : 1;
+ $code = $do->add($cart, $mid, $itemid, $s1, $s2, $s3, $a);
+ $id = is_array($itemid) ? end($itemid) : $itemid;
+ dheader('?action=show&mid='.$mid.'&id='.$id.'&code='.$code);
+ break;
+ case 'show':
+ $code = isset($code) ? intval($code) : 0;
+ $id = isset($id) ? intval($id) : 0;
+ break;
+ case 'clear':
+ $do->clear();
+ dheader('?mid='.$mid.'&rand='.$DT_TIME);
+ break;
+ case 'delete':
+ isset($key) or $key = '';
+ $keys = is_array($key) ? $key : array($key);
+ foreach($keys as $key) {
+ if(isset($cart[$key])) {
+ unset($cart[$key]);
+ $do->set($cart);
+ }
+ }
+ if(isset($ajax)) exit('1');
+ dheader('?mid='.$mid.'&rand='.$DT_TIME);
+ break;
+ default:
+ $lists = $do->get_list($cart);
+ break;
+}
+$CSS = array('cart');
+$head_title = $L['cart_title'];
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MODULE[2]['linkurl'], $MODULE[2]['mobile'], $DT_URL);
+} else {
+ $foot = $lists ? '' : 'cart';
+ $head_name = $head_title;
+ if($sns_app) $seo_title = $site_name;
+}
+include template('cart', 'member');
+?>
\ No newline at end of file
diff --git a/module/member/cash.inc.php b/module/member/cash.inc.php
new file mode 100644
index 0000000..6efba15
--- /dev/null
+++ b/module/member/cash.inc.php
@@ -0,0 +1,104 @@
+=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}finance_cash WHERE $condition");
+ $items = $r['num'];
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}finance_cash WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ $amount = $fee = 0;
+ while($r = $db->fetch_array($result)) {
+ $r['addtime'] = timetodate($r['addtime'], 5);
+ $r['edittime'] = $r['edittime'] ? timetodate($r['edittime'], 5) : '--';
+ $r['dstatus'] = $_status[$r['status']];
+ $amount += $r['amount'];
+ $fee += $r['fee'];
+ $lists[] = $r;
+ }
+ $head_title = $L['cash_title_record'];
+ break;
+ case 'setting':
+ $vbank = $member['vbank'];
+ if($submit && !$vbank) {
+ is_payword($_username, $password) or message($L['error_payword']);
+ in_array($bank, $BANKS) or message($L['cash_pass_bank']);
+ $banktype = $banktype ? 1 : 0;
+ $account = str_replace(array(' ', '-'), array('', ''), $account);
+ (preg_match("/^[0-9]{6,}$/", $account) || is_email($account)) or message($L['cash_pass_account']);
+ $branch = trim(dhtmlspecialchars($branch));
+ strlen($branch) > 8 or message($L['cash_pass_branch']);
+ $db->query("UPDATE {$DT_PRE}member_misc SET bank='$bank',banktype='$banktype',branch='$branch',account='$account' WHERE username='$_username'");
+ userclean($_username);
+ dmsg($L['op_set_success'], '?action=setting');
+ } else {
+ $bank_select = ''.$L['choose'].' ';
+ foreach($BANKS as $k=>$v) {
+ $bank_select .= ''.$v.' ';
+ }
+ $bank_select .= ' ';
+ $head_title = $L['cash_title_setting'];
+ }
+ break;
+ case 'confirm':
+ $amount or message($L['cash_pass_amount']);
+ if($amount > $_money) message($L['cash_pass_amount_large']);
+ if($MOD['cash_min'] && $amount < $MOD['cash_min']) message($L['cash_pass_amount_min'].$MOD['cash_min']);
+ if($MOD['cash_max'] && $amount > $MOD['cash_max']) message($L['cash_pass_amount_max'].$MOD['cash_max']);
+ if($MOD['cash_times']) {
+ $r = $db->get_one("SELECT COUNT(*) as num FROM {$DT_PRE}finance_cash WHERE username='$_username' AND addtime>$DT_TODAY-86400");
+ if($r['num'] >= $MOD['cash_times']) message(lang($L['cash_pass_amount_day'], array($MOD['cash_times'])), '?action=record', 5);
+ }
+ $amount = dround($amount);
+ $fee = 0;
+ if($MOD['cash_fee']) {
+ $fee = dround($amount*$MOD['cash_fee']/100);
+ if($MOD['cash_fee_min'] && $fee < $MOD['cash_fee_min']) $fee = $MOD['cash_fee_min'];
+ if($MOD['cash_fee_max'] && $fee > $MOD['cash_fee_max']) $fee = $MOD['cash_fee_max'];
+ }
+ $money = $amount - $fee;
+ if($submit) {
+ is_payword($_username, $password) or message($L['error_payword']);
+ $member = daddslashes($member);
+ $name = $member['banktype'] ? $member['company'] : $member['truename'];
+ $db->query("INSERT INTO {$DT_PRE}finance_cash (username,bank,banktype,branch,account,truename,amount,fee,addtime,ip) VALUES ('$_username','$member[bank]','$member[banktype]','$member[branch]','$member[account]','$name','$money','$fee','$DT_TIME','$DT_IP')");
+ $cid = $db->insert_id();
+ money_add($_username, -$amount);
+ money_record($_username, -$amount, $L['in_site'], 'system', $L['cash_title'], $L['charge_id'].$cid);
+ message($L['cash_msg_success'], '?action=record', 5);
+ } else {
+ $head_title = $L['cash_title_confirm'];
+ }
+ break;
+ default:
+ $MOD['cash_enable'] or message($L['feature_close'], $DT_PC ? $MOD['linkurl'] : $MOD['mobile'], 3);
+ if(!$member['bank'] || !$member['account']) message($L['cash_msg_account'], '?action=setting');
+ $head_title = $L['cash_title'];
+ break;
+}
+if($DT_PC) {
+ //
+} else {
+ if((!$action || $action == 'index') && !$kw)$back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : '');
+ $head_name = $head_title;
+}
+include template('cash', $module);
+?>
\ No newline at end of file
diff --git a/module/member/chat.inc.php b/module/member/chat.inc.php
new file mode 100644
index 0000000..e2b4832
--- /dev/null
+++ b/module/member/chat.inc.php
@@ -0,0 +1,264 @@
+= 4) {
+ $string .= '[emoji]'.rawurlencode($tmp).'[/emoji]';
+ } else {
+ $string .= $tmp;
+ }
+ }
+ return $string;
+}
+
+switch($action) {
+ case 'send':
+ $chatid or exit('ko');
+ trim($word) or exit('ko');
+ if($MOD['chat_maxlen'] && strlen($word) > $MOD['chat_maxlen']*3) exit('max');
+ $word = stripslashes(trim($word));
+ $word = strip_tags($word);
+ $word = dsafe($word);
+ $word = nl2br($word);
+ $word = strip_nr($word);
+ if(!$DT_PC) $word = emoji_encode($word);
+ $word = str_replace('|', ' ', $word);
+ if($MOD['chat_file'] && $MG['upload']) clear_upload($word, $_userid, $table);
+ $chat = $db->get_one("SELECT * FROM {$table} WHERE chatid='$chatid'");
+ if($chat) {
+ $lastmsg = strip_tags($word);
+ if(!$DT_PC) $lastmsg = preg_replace('/\[emoji\](.+?)\[\/emoji\]/', "(:emoji:)", $lastmsg);
+ $lastmsg = dsubstr($lastmsg, 50);
+ $lastmsg = addslashes($lastmsg);
+ if($chat['touser'] == $_username) {
+ $sql = "fgettime=$DT_TIME,lasttime=$DT_TIME,lastmsg='$lastmsg'";
+ if($DT_TIME - $chat['freadtime'] > $chat_poll) {
+ $db->query("UPDATE {$DT_PRE}member SET chat=chat+1 WHERE username='$chat[fromuser]'");
+ $sql .= ",fnew=fnew+1";
+ }
+ $tonick = $_cid ? $_child['nickname'] : '';
+ $sql .= ",tonick='$tonick'";
+ $db->query("UPDATE {$table} SET {$sql} WHERE chatid='$chatid'");
+ } else if($chat['fromuser'] == $_username) {
+ $sql = "tgettime=$DT_TIME,lasttime=$DT_TIME,lastmsg='$lastmsg'";
+ if($DT_TIME - $chat['treadtime'] > $chat_poll) {
+ $db->query("UPDATE {$DT_PRE}member SET chat=chat+1 WHERE username='$chat[touser]'");
+ $sql .= ",tnew=tnew+1";
+ }
+ $fromnick = $_cid ? $_child['nickname'] : '';
+ $sql .= ",fromnick='$fromnick'";
+ $db->query("UPDATE {$table} SET {$sql} WHERE chatid='$chatid'");
+ } else {
+ exit('ko');
+ }
+ } else {
+ exit('ko');
+ }
+ $font_s = $font_s ? intval($font_s) : 0;
+ $font_c = $font_c ? intval($font_c) : 0;
+ $font_b = $font_b ? 1 : 0;
+ $font_i = $font_i ? 1 : 0;
+ $font_u = $font_u ? 1 : 0;
+ $css = '';
+ if($font_s) $css .= ' s'.$font_s;
+ if($font_c) $css .= ' c'.$font_c;
+ if($font_b) $css .= ' fb';
+ if($font_i) $css .= ' fi';
+ if($font_u) $css .= ' fu';
+ if($css) $word = ''.$word.' ';
+ if($word) {
+ $content = addslashes($word);
+ $nickname = $_cid ? addslashes($_child['nickname']) : '';
+ $db->query("INSERT INTO ".get_chat_tb($chatid)." (chatid,username,nickname,addtime,content) VALUES ('$chatid','$_username','$nickname','$DT_TIME','$content')");
+ exit('ok');
+ }
+ exit('ko');
+ break;
+ case 'load':
+ $chatid or exit;
+ $tb = get_chat_tb($chatid);
+ $chat_nick = '';
+ $chat = $db->get_one("SELECT * FROM {$table} WHERE chatid='$chatid'");
+ if($chat) {
+ if($chat['touser'] == $_username) {
+ $chat_nick = $chat['fromnick'];
+ $db->query("UPDATE {$table} SET treadtime=$DT_TIME,tnew=0 WHERE chatid='$chatid'");
+ } else if($chat['fromuser'] == $_username) {
+ $chat_nick = $chat['tonick'];
+ $db->query("UPDATE {$table} SET freadtime=$DT_TIME,fnew=0 WHERE chatid='$chatid'");
+ if($DT_TIME - $chat['lasttime'] > 86400*7) {
+ $r = $db->get_one("SELECT reply FROM {$DT_PRE}member_misc WHERE username='$chat[touser]'");
+ if($r['reply']) {
+ $content = addslashes(nl2br($r['reply']));
+ $time = $DT_TIME + 10;
+ $db->query("INSERT INTO {$tb} (chatid,username,addtime,content) VALUES ('$chatid','$chat[touser]','$time','$content')");
+ $db->query("UPDATE {$table} SET lasttime=$time WHERE chatid='$chatid'");
+ }
+ }
+ } else {
+ exit('0');
+ }
+ } else {
+ exit('0');
+ }
+ $chatlast = $_chatlast = isset($chatlast) ? intval($chatlast) : 0;
+ $first = isset($first) ? intval($first) : 0;
+ $i = $j = 0;
+ $chat_lastuser = '';
+ $chat_repeat = 0;
+ $json = '';
+ $time1 = 0;
+ if($chatlast < 1 || $chat['lasttime'] > $chatlast) {
+ if($chatlast < 1) {
+ $result = $db->query("SELECT addtime FROM {$tb} WHERE chatid='$chatid' ORDER BY addtime DESC LIMIT $pagesize");
+ while($r = $db->fetch_array($result)) {
+ $chatlast = $r['addtime'];
+ }
+ if($chatlast > 1) $chatlast--;
+ }
+ $result = $db->query("SELECT itemid,addtime,username,nickname,content FROM {$tb} WHERE chatid='$chatid' AND addtime>$chatlast ORDER BY addtime ASC LIMIT $pagesize");
+ while($r = $db->fetch_array($result)) {
+ $id = $r['itemid'];
+ $time = $r['addtime'];
+ $name = $r['username'];
+ $word = $r['content'];
+ if($_username == $name) { $chat_repeat++; } else { $chat_repeat = 0; }
+ $chat_lastuser = $name;
+ $chatlast = $time;
+ $time2 = $time;
+ if($time2 - $time1 < 600) {
+ $date = '';
+ } else {
+ $date = timetodate($time2, 5);
+ $time1 = $time2;
+ }
+ if($MOD['chat_url'] || $MOD['chat_img']) {
+ if(preg_match_all("/([http|https]+)\:\/\/([a-z0-9\/\-\_\.\,\?\&\#\=\%\+\;]{4,})/i", $word, $m)) {
+ foreach($m[0] as $u) {
+ if($MOD['chat_img'] && preg_match("/^(jpg|jpeg|gif|png|bmp)$/i", file_ext($u)) && !preg_match("/([\?\&\=]{1,})/i", $u)) {
+ $word = str_replace($u, ' ', $word);
+ } else if($MOD['chat_img'] && preg_match("/^(mp4)$/i", file_ext($u)) && !preg_match("/([\?\&\=]{1,})/i", $u)) {
+ $word = str_replace($u, ' ', $word);
+ } else if($MOD['chat_url']) {
+ $word = str_replace($u, ''.$u.' ', $word);
+ }
+ }
+ }
+ }
+ if(strpos($word, ')') !== false) $word = parse_face($word);
+ if(strpos($word, '[emoji]') !== false) $word = emoji_decode($word);
+ $word = str_replace(array('"', "\r", "\n"), array('\"', "\\r", "\\n"), $word);
+ $self = $_username == $name ? 1 : 0;
+ if($self) {
+ //$name = 'Me';
+ } else {
+ $j++;
+ }
+ $json .= ($i ? ',' : '').'{id:"'.$id.'",time:"'.$time.'",date:"'.$date.'",name:"'.$name.'",word:"'.$word.'",self:"'.$self.'"}';
+ $i = 1;
+ }
+ }
+ if($_chatlast == 0) $j = 0;
+ $json = '{chat_msg:['.$json.'],chat_new:"'.$j.'",chat_last:"'.$chatlast.'",chat_nick:"'.$chat_nick.'"}';
+ exit($json);
+ break;
+ case 'down':
+ if($data && check_name($username) && is_md5($chatid)) {
+ $chat = $db->get_one("SELECT * FROM {$table} WHERE chatid='$chatid'");
+ if($chat['fromuser'] == $_username) {
+ $chat['touser'] == $username or exit;
+ } else {
+ $chat['fromuser'] == $username or exit;
+ }
+ $data = stripslashes(dsafe($data));
+ $css = file_get('image/chat.css');
+ $css = str_replace('#chat {width:auto;height:366px;overflow:auto;', '#chat {width:700px;margin:auto;', $css);
+ $css = str_replace('margin:100px 0 0 0;', 'margin:0;', $css);
+ $css = str_replace("url('", "url('".$MOD['linkurl']."image/", $css);
+ $data = str_replace(' ', '', $data);
+ $data = ''.lang($L['chat_record'], array($username)).' '.$data.'
';
+ file_down('', 'chat-'.$username.'-'.timetodate($DT_TIME, 'YmdHi').'.html', $data);
+ }
+ exit;
+ break;
+ default:
+ $item = array();
+ if(isset($touser) && check_name($touser)) {
+ if($touser == $_username) dalert($L['chat_msg_self'], 'im.php');
+ $MG['chat'] or dalert($L['chat_msg_no_rights'], 'grade.php');
+ $user = userinfo($touser);
+ $user or dalert($L['chat_msg_user'], 'im.php');
+ $chatid = get_chat_id($_username, $touser);
+ $chat_id = $chatid;
+ if($user['black']) {
+ $black = explode(' ', $user['black']);
+ if(in_array($_username, $black)) {
+ $db->query("DELETE FROM {$table} WHERE chatid='$chatid'");
+ dalert($L['chat_msg_refuse'], 'im.php');
+ }
+ }
+ $online = online($user['userid']);
+ $head_title = lang($L['chat_with'], array($user['company']));
+ $forward = is_url($forward) ? addslashes(dhtmlspecialchars($forward)) : '';
+ if(strpos($forward, $MOD['linkurl']) !== false) $forward = '';
+ $chat = $db->get_one("SELECT * FROM {$table} WHERE chatid='$chatid'");
+ if($chat) {
+ $db->query("UPDATE {$table} SET forward='$forward' WHERE chatid='$chatid'");
+ } else {
+ $db->query("INSERT INTO {$table} (chatid,fromuser,touser,tgettime,forward) VALUES ('$chat_id','$_username','$touser','0','$forward')");
+ }
+ $type = 1;
+ if($mid > 4 && $itemid) {
+ $r = DB::get_one("SELECT * FROM ".get_table($mid)." WHERE itemid=$itemid");
+ if($r && $r['status'] > 2 && $touser==$r['username']) {
+ if(strpos($r['linkurl'], '://') == false) $r['linkurl'] = $MODULE[$mid]['linkurl'].$r['linkurl'];
+ $item = $r;
+ }
+ }
+ } else if(isset($chatid) && is_md5($chatid)) {
+ $chat = $db->get_one("SELECT * FROM {$table} WHERE chatid='$chatid'");
+ if($chat && ($chat['touser'] == $_username || $chat['fromuser'] == $_username)) {
+ if($chat['touser'] == $_username) {
+ $user = userinfo($chat['fromuser']);
+ } else if($chat['fromuser'] == $_username) {
+ $user = userinfo($chat['touser']);
+ }
+ if($user['black']) {
+ $black = explode(' ', $user['black']);
+ if(in_array($_username, $black)) {
+ $db->query("DELETE FROM {$table} WHERE chatid='$chatid'");
+ dalert($L['chat_msg_refuse'], 'im.php');
+ }
+ }
+ $online = online($user['userid']);
+ $chat_id = $chatid;
+ $head_title = lang($L['chat_with'], array($user['company']));
+ } else {
+ dheader('im.php');
+ }
+ $type = 2;
+ } else {
+ dheader('im.php');
+ }
+ $faces = get_face();
+ break;
+}
+if($DT_PC) {
+ //
+} else {
+ $js_pull = 0;
+ $head_name = $head_title;
+ if($sns_app) $seo_title = $L['chat_title'];
+}
+include template('chat', $module);
+?>
\ No newline at end of file
diff --git a/module/member/coupon.inc.php b/module/member/coupon.inc.php
new file mode 100644
index 0000000..6077038
--- /dev/null
+++ b/module/member/coupon.inc.php
@@ -0,0 +1,75 @@
+get_one("SELECT itemid FROM {$DT_PRE}finance_coupon WHERE username='$_username' AND pid=$itemid");
+ if($t) message($L['coupon_msg_got'], '?action=index&pid='.$itemid);
+ $r = $db->get_one("SELECT * FROM {$DT_PRE}finance_promo WHERE itemid=$itemid");
+ if(!$r || !$r['open']) message($L['coupon_msg_exists'], '?action=index');
+ if($r['username'] == $_username) message($L['coupon_msg_self'], '?action=index');
+ if($r['number'] > $r['amount']) message($L['coupon_msg_none'], '?action=index');
+ if($r['fromtime'] > $DT_TIME) message($L['coupon_msg_time'], '?action=index');
+ if($r['totime'] < $DT_TIME) message($L['coupon_msg_timeout'], '?action=index');
+ $title = addslashes($r['title']);
+ $db->query("INSERT INTO {$DT_PRE}finance_coupon (title,username,seller,addtime,fromtime,totime,price,cost,pid) VALUES ('$title','$_username','$r[username]','$DT_TIME','$r[fromtime]','$r[totime]','$r[price]','$r[cost]','$itemid')");
+ $db->query("UPDATE {$DT_PRE}finance_promo SET number=number+1 WHERE itemid=$itemid");
+ if(strpos($forward, 'username=') === false && strpos($forward, 'itemid=') === false) $forward = '?action=my';
+ dmsg($L['coupon_msg_success'], $forward);
+ break;
+ case 'delete':
+ $itemid or message($L['coupon_msg_choose']);
+ $itemids = is_array($itemid) ? $itemid : array($itemid);
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if($item && $item['username'] == $_username) $do->delete($itemid);
+ }
+ dmsg($L['op_del_success'], $forward);
+ break;
+ case 'my':
+ $condition = "username='$_username'";
+ if($keyword) $condition .= match_kw('title', $keyword);
+ if($itemid) $condition .= " AND itemid=$itemid";
+ $lists = $do->get_list($condition);
+ $head_title = $L['coupon_title'];
+ break;
+ default:
+ $condition = "fromtime<$DT_TIME AND totime>$DT_TIME AND numberget_one("SELECT COUNT(*) AS num FROM {$DT_PRE}finance_promo WHERE $condition");
+ $items = $r['num'];
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $lists = $gets = $pids = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}finance_promo WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['left'] = $r['amount'] - $r['number'];
+ $pids[] = $r['itemid'];
+ $lists[] = $r;
+ }
+ if($pids) {
+ $ids = implode(',', $pids);
+ $result = $db->query("SELECT * FROM {$DT_PRE}finance_coupon WHERE pid IN ($ids) AND username='$_username' ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $gets[$r['pid']] = $r;
+ }
+ }
+ $head_title = $L['coupon_promo_title'];
+ break;
+}
+if($DT_PC) {
+ //
+} else {
+ if((!$action || $action == 'index') && !$kw) $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : '');
+ $head_name = $head_title;
+}
+include template('coupon', $module);
+?>
\ No newline at end of file
diff --git a/module/member/credit.inc.php b/module/member/credit.inc.php
new file mode 100644
index 0000000..f588de0
--- /dev/null
+++ b/module/member/credit.inc.php
@@ -0,0 +1,145 @@
+connect($MOD['ex_host'], $MOD['ex_user'], $MOD['ex_pass'], $MOD['ex_data'], $CFG['db_expires'], $CFG['db_charset'], $CFG['pconnect']);
+ $fd = $MOD['ex_fdnm'];
+ $px = $MOD['ex_prex'];
+ if($MOD['ex_type'] == 'PW') {
+ $tb = $px.'memberdata';
+ $r = $ex->get_one("SELECT `uid` FROM `{$px}members` WHERE `username`='$_passport'");
+ if($r) {
+ $uid = $r['uid'];
+ $r = $ex->get_one("SELECT `$fd` FROM `{$tb}` WHERE `uid`=$uid");
+ $num = intval($r[$fd]);
+ } else {
+ message($L['credit_msg_active'], '?action=index');
+ }
+ } elseif($MOD['ex_type'] == 'DZX') {
+ $tb = $px.'common_member_count';
+ $r = $ex->get_one("SELECT `uid` FROM `{$px}common_member` WHERE `username`='$_passport'");
+ if($r) {
+ $uid = $r['uid'];
+ $r = $ex->get_one("SELECT `$fd` FROM `{$tb}` WHERE `uid`=$uid");
+ $num = intval($r[$fd]);
+ } else {
+ message($L['credit_msg_active'], '?action=index');
+ }
+ } else {
+ $tb = $px.'members';
+ $r = $ex->get_one("SELECT `uid`,`$fd` FROM `{$tb}` WHERE `username`='$_passport'");
+ if($r) {
+ $uid = $r['uid'];
+ $num = intval($r[$fd]);
+ } else {
+ message($L['credit_msg_active'], '?action=index');
+ }
+ }
+ if($submit) {
+ $num > 0 or message($L['credit_pass_ex_min']);
+ $amount = intval($amount);
+ if($amount > 0 && $amount <= $num) {
+ $ex->query("UPDATE `{$tb}` SET `{$fd}`=`{$fd}`-{$amount} WHERE `uid`=$uid");
+ $db = new $db_class;
+ $db->halt = DT_DEBUG ? 1 : 0;
+ $db->connect($CFG['db_host'], $CFG['db_user'], $CFG['db_pass'], $CFG['db_name'], $CFG['db_expires'], $CFG['db_charset'], $CFG['pconnect']);
+ credit_add($_username, $amount*$MOD['ex_rate']);
+ credit_record($_username, $amount*$MOD['ex_rate'], 'system', $L['credit_exchange_title'], $amount.$MOD['ex_name']);
+ dmsg($L['credit_msg_exchange'], '?action=index');
+ } else {
+ message($L['credit_pass_ex_max'].$num);
+ }
+ }
+ } else {
+ message($L['feature_close'], '?action=index');
+ }
+ $head_title = $L['credit_exchange_title'];
+ break;
+ case 'buy':
+ if($MOD['credit_buy'] && $MOD['credit_price']) {
+ $C = explode('|', trim($MOD['credit_buy']));
+ $P = explode('|', trim($MOD['credit_price']));
+ $auto = 0;
+ $auth = isset($auth) ? decrypt($auth, DT_KEY.'CG') : '';
+ if($auth && substr($auth, 0, 7) == 'credit|') {
+ $auto = $submit = 1;
+ $type = intval(substr($auth, 7));
+ }
+ if($submit) {
+ array_key_exists($type, $C) or message($L['credit_msg_buy_amount']);
+ $amount = $P[$type];
+ $credit = $C[$type];
+ if($amount > 0) {
+ $amount <= $_money or message($L['money_not_enough']);
+ if($amount <= $DT['quick_pay']) $auto = 1;
+ if(!$auto) {
+ is_payword($_username, $password) or message($L['error_payword']);
+ }
+ money_add($_username, -$amount);
+ money_record($_username, -$amount, $L['in_site'], 'system', $L['buy'].$DT['credit_name'], $credit.$DT['credit_unit']);
+ if($credit > 0) {
+ credit_add($_username, $credit);
+ credit_record($_username, $credit, 'system', $L['buy'].$DT['credit_name'], $amount.$DT['money_unit']);
+ }
+ }
+ dmsg($L['credit_msg_buy_success'], '?action=index');
+ } else {
+ $select = isset($C[$sum]) ? $sum : 0;
+ }
+ } else {
+ message($L['feature_close'], '?action=index');
+ }
+ $head_title = $L['credit_buy_title'];
+ break;
+ case 'invite':
+ $head_title = $L['invite_title'];
+ $url = $MOD['linkurl'].'invite.php?user='.$_username;
+ break;
+ case 'less':
+ if($_credit < 0) message($L['credit_msg_less'], '?action=index');
+ dheader('?action=index');
+ break;
+ default:
+ $sfields = $L['credit_fields'];
+ $dfields = array('reason', 'amount', 'reason', 'note');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = is_date($fromdate) ? datetotime($fromdate.' 0:0:0') : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = is_date($todate) ? datetotime($todate.' 23:59:59') : 0;
+ isset($type) or $type = 0;
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $condition = "username='$_username'";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($type) $condition .= $type == 1 ? " AND amount>0" : " AND amount<0" ;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}finance_credit WHERE $condition");
+ $items = $r['num'];
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}finance_credit WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ $income = $expense = 0;
+ while($r = $db->fetch_array($result)) {
+ $r['addtime'] = timetodate($r['addtime'], 5);
+ $r['amount'] > 0 ? $income += $r['amount'] : $expense += $r['amount'];
+ $lists[] = $r;
+ }
+ $head_title = $L['credit_title'];
+ break;
+}
+if($DT_PC) {
+ //
+} else {
+ if((!$action || $action == 'index') && !$kw) $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : '');
+ $head_name = $head_title;
+}
+include template('credit', $module);
+?>
\ No newline at end of file
diff --git a/module/member/deposit.inc.php b/module/member/deposit.inc.php
new file mode 100644
index 0000000..1711d2d
--- /dev/null
+++ b/module/member/deposit.inc.php
@@ -0,0 +1,76 @@
+= 1 or $num = 1;
+ $money = $MOD['deposit']*$num;
+ $money <= $_money or message($L['money_not_enough']);
+ if($money <= $DT['quick_pay']) $auto = 1;
+ if(!$auto) {
+ is_payword($_username, $password) or message($L['error_payword']);
+ }
+ money_add($_username, -$money);
+ money_record($_username, -$money, $L['in_site'], 'system', $L['deposit_title_add']);
+ $db->query("INSERT INTO {$DT_PRE}finance_deposit (username,amount,addtime,editor) VALUES ('$_username','$money','$DT_TIME','$_username')");
+ $db->query("UPDATE {$DT_PRE}member SET deposit=deposit+$money WHERE userid=$_userid");
+ dmsg($L['op_success'], '?action=index');
+ } else {
+ $amount = $MOD['deposit'];
+ if($sum > 1) $amount = $MOD['deposit']*$sum;
+ $head_title = $L['deposit_title_add'];
+ }
+ break;
+ default:
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = is_date($fromdate) ? datetotime($fromdate.' 0:0:0') : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = is_date($todate) ? datetotime($todate.' 23:59:59') : 0;
+ $condition = "username='$_username'";
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}finance_deposit WHERE $condition");
+ $items = $r['num'];
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}finance_deposit WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ $amount = 0;
+ while($r = $db->fetch_array($result)) {
+ $r['addtime'] = timetodate($r['addtime'], 5);
+ $amount += $r['amount'];
+ $lists[] = $r;
+ }
+ $amount = number_format($amount, 2, '.', ',');
+ $head_title = $L['deposit_title'];
+ break;
+}
+if($DT_PC) {
+ //
+} else {
+ if($action == 'add') {
+ $lists = array();
+ for($i = 1; $i < 20; $i++) {
+ $lists[$i] = $MOD['deposit']*$i;
+ }
+ //
+ } else {
+ $user = userinfo($_username);
+ $_deposit = $user['deposit'];
+ }
+ if((!$action || $action == 'index') && !$kw) $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : 'biz.php');
+ $head_name = $head_title;
+}
+include template('deposit', $module);
+?>
\ No newline at end of file
diff --git a/module/member/edit.inc.php b/module/member/edit.inc.php
new file mode 100644
index 0000000..eeb071f
--- /dev/null
+++ b/module/member/edit.inc.php
@@ -0,0 +1,136 @@
+userid = $_userid;
+$do->username = $_username;
+$user = $do->get_one();
+$GROUP = cache_read('group.php');
+$MFD = cache_read('fields-member.php');
+$CFD = cache_read('fields-company.php');
+isset($post_fields) or $post_fields = array();
+if($MFD || $CFD) require DT_ROOT.'/include/fields.func.php';
+$group_editor = $MG['editor'];
+in_array($group_editor, array('Default', 'Destoon', 'Simple', 'Basic')) or $group_editor = 'Destoon';
+$tab = isset($tab) ? intval($tab) : 0;
+$is_company = $MG['type'] || ($_groupid == 4 && $GROUP[$user['regid']]['type']);
+$_E = ($MOD['edit_check'] && $user['edittime'] > 0 && $is_company) ? explode(',', $MOD['edit_check']) : array();
+if(in_array('capital', $_E)) $_E[] = 'regunit';
+$content_table = content_table(4, $_userid, is_file(DT_CACHE.'/4.part'), $DT_PRE.'company_data');
+$t = $db->get_one("SELECT * FROM {$content_table} WHERE userid=$_userid");
+if($t) {
+ $user['content'] = $content = $t['content'];
+} else {
+ $user['content'] = $content = '';
+ $db->query("REPLACE INTO {$content_table} (userid,content) VALUES ('$_userid','')");
+}
+$need_captcha = $MOD['captcha_edit'] == 2 ? $MG['captcha'] : $MOD['captcha_edit'];
+if($submit) {
+ captcha($captcha, $need_captcha);
+ foreach(array('department', 'career', 'business', 'sell', 'buy', 'address', 'homepage') as $v) {
+ if(isset($post[$v])) $post[$v] = banword($BANWORD, $post[$v], true, 'goback');
+ }
+ if($post['password'] && $post['password'] == $post['cpassword'] && $post['oldpassword']) {
+ if($user['password'] != dpassword($post['oldpassword'], $user['passsalt'])) message($L['error_password']);
+ } else {
+ $post['password'] = '';
+ }
+ if($post['payword'] && $post['payword'] == $post['cpayword'] && $post['oldpayword']) {
+ if($user['payword'] != dpassword($post['oldpayword'], $user['paysalt'])) message($L['error_payword']);
+ } else {
+ $post['payword'] = '';
+ }
+ $post['groupid'] = $user['groupid'];
+ $post['email'] = $user['email'];
+ $post['passport'] = $user['passport'];
+ $post['company'] = $user['company'];
+ $post['shop'] = $user['shop'];
+ $post['domain'] = $user['domain'];
+ $post['icp'] = $user['icp'];
+ $post['skin'] = $user['skin'];
+ $post['template'] = $user['template'];
+ $post['edittime'] = $DT_TIME;
+ $post['bank'] = $user['bank'];
+ $post['banktype'] = $user['banktype'];
+ $post['branch'] = $user['branch'];
+ $post['account'] = $user['account'];
+ $post['validated'] = $user['validated'];
+ $post['validator'] = $user['validator'];
+ $post['validtime'] = $user['validtime'];
+ $post['vemail'] = $user['vemail'];
+ $post['vmobile'] = $user['vmobile'];
+ $post['vtruename'] = $user['vtruename'];
+ $post['vbank'] = $user['vbank'];
+ $post['vcompany'] = $user['vcompany'];
+ $post['vshop'] = $user['vshop'];
+ $post['support'] = $user['support'];
+ $post['inviter'] = $user['inviter'];
+ if($post['vmobile']) $post['mobile'] = $user['mobile'];
+ if($post['vtruename']) $post['truename'] = $user['truename'];
+ if($MFD) fields_check($post_fields, $MFD);
+ if($CFD) fields_check($post_fields, $CFD);
+ $post = dstripslashes($post);
+ $post_check = array();
+ if($_E) {
+ if(in_array('thumb', $_E) || in_array('gzhqr', $_E) || in_array('content', $_E)) clear_upload($post['thumb'].$post['gzhqr'].$post['content'], $_userid, $do->table_company);
+ if(!$user['areaid']) $user['areaid'] = $post['areaid'];
+ foreach($_E as $k) {
+ if(isset($post[$k]) && stripslashes($post[$k]) != $user[$k]) {
+ $post_check[$k] = $post[$k];
+ $post[$k] = $user[$k];
+ }
+ }
+ }
+ $post = daddslashes($post);
+ $post_check = daddslashes($post_check);
+ if($do->pass($post)) {
+ $do->edit($post);
+ if($MFD) fields_update($post_fields, $do->table_member, $do->userid, 'userid', $MFD);
+ if($CFD) fields_update($post_fields, $do->table_company, $do->userid, 'userid', $CFD);
+ if($post_check) $do->check_add($post_check);
+ if($user['edittime'] == 0 && $user['inviter'] && $MOD['credit_user']) {
+ $inviter = $user['inviter'];
+ $r = $db->get_one("SELECT itemid FROM {$DT_PRE}finance_credit WHERE note='$_username' AND username='$inviter'");
+ if(!$r) {
+ credit_add($inviter, $MOD['credit_user']);
+ credit_record($inviter, $MOD['credit_user'], 'system', $L['edit_invite'], $_username);
+ }
+ }
+ if($user['edittime'] == 0 && $MOD['credit_edit']) {
+ credit_add($_username, $MOD['credit_edit']);
+ credit_record($_username, $MOD['credit_edit'], 'system', $L['edit_profile'], $DT_IP);
+ }
+ if($post['password']) dheader($DT['file_login'].'?auth='.encrypt('LOGIN|'.$_username.'|'.$post['password'].'|'.$DT_TIME, DT_KEY.'LOGIN').'&forward='.urlencode($MOD['linkurl'].'edit.php?success=1&tab='.$tab));
+ dmsg($L['edit_msg_success'], '?tab='.$tab.'&success=1');
+ } else {
+ message($do->errmsg);
+ }
+}
+$COM_TYPE = explode('|', $MOD['com_type']);
+$COM_SIZE = explode('|', $MOD['com_size']);
+$COM_MODE = explode('|', $MOD['com_mode']);
+$MONEY_UNIT = explode('|', $MOD['money_unit']);
+$head_title = $L['edit_title'];
+$_U = $_E ? $do->check_get() : array();
+if($_U) {
+ foreach($_U as $k=>$v) {
+ $user[$k] = $v;
+ }
+}
+extract($user);
+$mode_check = dcheckbox($COM_MODE, 'post[mode][]', $mode, 'onclick="check_mode(this, '.$MOD['mode_max'].');"', 0);
+$cates = $catid ? explode(',', substr($catid, 1, -1)) : array();
+$tab = isset($tab) ? intval($tab) : -1;
+if($tab == 2 && !$is_company) $tab = 0;
+if($DT_PC) {
+ //
+} else {
+ if((!$action || $action == 'index') && !$kw) $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : '');
+ $js_pull = 0;
+ $head_name = $head_title;
+}
+include template('edit', $module);
+?>
\ No newline at end of file
diff --git a/module/member/express.class.php b/module/member/express.class.php
new file mode 100644
index 0000000..9bd315a
--- /dev/null
+++ b/module/member/express.class.php
@@ -0,0 +1,125 @@
+table = DT_PRE.'mall_express_'.$mid;
+ $this->fields = array('parentid','areaid','title','express','fee_start','fee_step','username','addtime','listorder','note');
+ }
+
+ function express($mid) {
+ $this->__construct($mid);
+ }
+
+ function pass($post) {
+ global $L;
+ if(!is_array($post)) return false;
+ if(!$post['express']) return $this->_($L['pass_express']);
+ return true;
+ }
+
+ function set($post) {
+ global $_username;
+ $post['parentid'] = $post['areaid'] = 0;
+ $post['fee_start'] = dround($post['fee_start']);
+ $post['fee_step'] = dround($post['fee_step']);
+ $post['listorder'] = intval($post['listorder']);
+ if($this->itemid) {
+ //
+ } else {
+ $post['addtime'] = DT_TIME;
+ }
+ $post = dhtmlspecialchars($post);
+ return array_map("trim", $post);
+ }
+
+ function get_one($condition = '') {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$this->itemid $condition");
+ }
+
+ function get_list($condition, $order = 'listorder ASC,itemid ASC') {
+ global $MOD, $pages, $page, $pagesize, $offset, $items;
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $MOD, $L;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ return true;
+ }
+
+ function delete($itemid, $all = true) {
+ global $MOD, $L;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->delete($v); }
+ } else {
+ $this->itemid = $itemid;
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ }
+ }
+
+ function area($post) {
+ foreach($post as $k=>$v) {
+ $k = intval($k);
+ $v['listorder'] = intval($v['listorder']);
+ $v['fee_start'] = dround($v['fee_start']);
+ $v['fee_step'] = dround($v['fee_step']);
+ if($k == 0) {
+ $v['areaid'] = intval($v['areaid']);
+ if($v['areaid'] && $v['fee_start']) {
+ $T = DB::get_one("SELECT itemid FROM {$this->table} WHERE parentid=$this->itemid AND areaid=$v[areaid]");
+ if(!$T) DB::query("INSERT INTO {$this->table} (parentid,areaid,fee_start,fee_step,listorder) VALUES('$this->itemid','$v[areaid]','$v[fee_start]','$v[fee_step]','$v[listorder]')");
+ }
+ } else {
+ $T = DB::get_one("SELECT parentid FROM {$this->table} WHERE itemid=$k");
+ if($T['parentid'] == $this->itemid) {
+ if(isset($v['delete'])) {
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$k");
+ } else {
+ DB::query("UPDATE {$this->table} SET fee_start='$v[fee_start]',fee_step='$v[fee_step]',listorder='$v[listorder]' WHERE itemid=$k");
+ }
+ }
+ }
+ }
+ return true;
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/member/express.inc.php b/module/member/express.inc.php
new file mode 100644
index 0000000..535162c
--- /dev/null
+++ b/module/member/express.inc.php
@@ -0,0 +1,89 @@
+ -1 or dheader(($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).'account.php?action=group&itemid=1');
+($mid && $MODULE[$mid]['module'] == 'mall') or dheader($DT_PC ? $MOD['linkurl'] : $MOD['mobile']);
+$head_title = $L['express_title'];
+require DT_ROOT.'/include/post.func.php';
+require DT_ROOT.'/module/'.$module.'/express.class.php';
+$do = new express($mid);
+switch($action) {
+ case 'add':
+ if($MG['express_limit']) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}mall_express_{$mid} WHERE username='$_username' AND parentid=0");
+ if($r['num'] >= $MG['express_limit']) dalert(lang($L['limit_add'], array($MG['express_limit'], $r['num'])), 'goback');
+ }
+ if($submit) {
+ if($do->pass($post)) {
+ $post['username'] = $_username;
+ $do->add($post);
+ dmsg($L['op_add_success'], '?mid='.$mid.'&action=index');
+ } else {
+ message($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ $$v = '';
+ }
+ }
+ break;
+ case 'edit':
+ $itemid or message();
+ $do->itemid = $itemid;
+ $r = $do->get_one();
+ if(!$r || $r['username'] != $_username) message();
+ if($submit) {
+ if($do->pass($post)) {
+ $post['username'] = $_username;
+ $do->edit($post);
+ dmsg($L['op_edit_success'], $forward);
+ } else {
+ message($do->errmsg);
+ }
+ } else {
+ extract($r);
+ }
+ break;
+ case 'delete':
+ $itemid or message($L['express_msg_choose']);
+ $do->itemid = $itemid;
+ $r = $do->get_one();
+ if(!$r || $r['username'] != $_username) message();
+ $do->delete($itemid);
+ dmsg($L['op_del_success'], $forward);
+ break;
+ case 'area':
+ $itemid or message($L['express_msg_choose']);
+ $do->itemid = $itemid;
+ $I = $r = $do->get_one();
+ if(!$r || $r['username'] != $_username) message();
+ if($submit) {
+ $do->area($post);
+ dmsg($L['op_success'], '?mid='.$mid.'&action=area&itemid='.$itemid);
+ } else {
+ $lists = $do->get_list("parentid=$itemid");
+ if($r['items'] != $items) $db->query("UPDATE {$DT_PRE}mall_express_{$mid} SET items=$items WHERE itemid=$itemid");
+ $area_select = ajax_area_select('post[0][areaid]', $L['choose']);
+ }
+ break;
+ default:
+ $condition = "username='$_username' AND parentid=0";
+ if($keyword) $condition .= match_kw('express', $keyword);
+ $lists = $do->get_list($condition);
+ $limit_used = $items;
+ $limit_free = $MG['express_limit'] && $MG['express_limit'] > $limit_used ? $MG['express_limit'] - $limit_used : 0;
+ break;
+}
+if($DT_PC) {
+ $menu_id = 1;
+} else {
+ $head_name = $head_title;
+ if($action == 'add' || $action == 'edit') {
+ //
+ } else {
+ $pages = mobile_pages($items, $page, $pagesize);
+ }
+}
+include template('express', $module);
+?>
\ No newline at end of file
diff --git a/module/member/favorite.class.php b/module/member/favorite.class.php
new file mode 100644
index 0000000..6037023
--- /dev/null
+++ b/module/member/favorite.class.php
@@ -0,0 +1,103 @@
+table = DT_PRE.'favorite';
+ $this->fields = array('listorder','userid','typeid','mid','tid','title','style','thumb','url','addtime','note');
+ }
+
+ function favorite() {
+ $this->__construct();
+ }
+
+ function pass($post) {
+ global $L;
+ if(!is_array($post)) return false;
+ if(strlen($post['title']) < 3) return $this->_($L['pass_title']);
+ if(!is_url($post['url'])) return $this->_($L['pass_url']);
+ return true;
+ }
+
+ function set($post) {
+ $post['listorder'] = intval($post['listorder']);
+ $post['mid'] = intval($post['mid']);
+ $post['tid'] = intval($post['tid']);
+ $post['thumb'] = is_url($post['thumb']) ? $post['thumb'] : '';
+ $post = dhtmlspecialchars($post);
+ return array_map("trim", $post);
+ }
+
+ function get_one($condition = '') {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$this->itemid $condition");
+ }
+
+ function get_list($condition = 'status=3', $order = 'addtime DESC') {
+ global $MODULE, $TYPE, $pages, $page, $pagesize, $offset, $L, $items, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['url'] = DT_PATH.'api/redirect.php?url='.urlencode(fix_link($r['url']));
+ $r['type'] = $r['typeid'] && isset($TYPE[$r['typeid']]) ? set_style($TYPE[$r['typeid']]['typename'], $TYPE[$r['typeid']]['style']) : $L['default_type'];
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->update($post);
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ return true;
+ }
+
+ function delete($itemid) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("DELETE FROM {$this->table} WHERE itemid IN ($itemids)");
+ }
+
+ function update($post) {
+ if($post['tid'] > 0 && $post['mid'] > 3) {
+ $table = get_table($post['mid']);
+ $id = $post['mid'] == 4 ? 'userid' : 'itemid';
+ if($table) DB::query("UPDATE {$table} SET favorites=favorites+1 WHERE `{$id}`=$post[tid]");
+ }
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/member/friend.inc.php b/module/member/friend.inc.php
new file mode 100644
index 0000000..328ab32
--- /dev/null
+++ b/module/member/friend.inc.php
@@ -0,0 +1,142 @@
+ -1 or dheader(($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).'account.php?action=group&itemid=1');
+require DT_ROOT.'/include/post.func.php';
+$TYPE = get_type('friend-'.$_userid);
+require DT_ROOT.'/module/'.$module.'/friend.class.php';
+$do = new friend();
+switch($action) {
+ case 'add':
+ if($MG['friend_limit']) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}friend WHERE userid=$_userid");
+ if($r['num'] >= $MG['friend_limit']) dalert(lang($L['limit_add'], array($MG['friend_limit'], $r['num'])), 'goback');
+ }
+ if($submit) {
+ if($do->pass($post)) {
+ if($post['username'] && $post['username'] == $_username) message($L['friend_msg_add_self']);
+ if($post['username'] && $db->get_one("SELECT username FROM {$DT_PRE}friend WHERE userid=$_userid AND username='$post[username]'")) message($L['friend_msg_add_again']);
+ $post['userid'] = $_userid;
+ $post['addtime'] = $DT_TIME;
+ $do->add($post);
+ dmsg($L['op_add_success'], '?action=index');
+ } else {
+ message($do->errmsg);
+ }
+ } else {
+ $username = isset($username) ? trim($username) : '';
+ $truename = $style = $note = $listorder = $mobile = $email = $homepage = $company = $career = $telephone = $qq = $wx = $ali = $skype = '';
+ if($username) {
+ $r = userinfo($username);
+ if($r) {
+ $truename = $r['truename'];
+ $homepage = userurl($username);
+ $company = $r['company'];
+ $telephone = $r['telephone'];
+ $career = $r['career'];
+ $qq = $r['qq'];
+ $wx = $r['wx'];
+ $ali = $r['ali'];
+ $skype = $r['skype'];
+ }
+ }
+ $typeid = 0;
+ $type_select = type_select($TYPE, 0, 'post[typeid]', $L['default_type']);
+ $head_title = $L['friend_title_add'];
+ }
+ break;
+ case 'edit':
+ $itemid or message();
+ $do->itemid = $itemid;
+ $r = $do->get_one();
+ if(!$r || $r['userid'] != $_userid) message();
+ if($submit) {
+ if($do->pass($post)) {
+ $do->edit($post);
+ dmsg($L['op_edit_success'], $forward);
+ } else {
+ message($do->errmsg);
+ }
+ } else {
+ extract($r);
+ $type_select = type_select($TYPE, 0, 'post[typeid]', $L['default_type'], $typeid);
+ $head_title = $L['friend_title_edit'];
+ }
+ break;
+ case 'show':
+ $itemid or message();
+ $do->itemid = $itemid;
+ $r = $do->get_one();
+ if(!$r || $r['userid'] != $_userid) message();
+ extract($r);
+ $head_title = $L['friend_title_show'];
+ break;
+ case 'delete':
+ $itemid or message($L['friend_msg_choose']);
+ $itemids = is_array($itemid) ? $itemid : array($itemid);
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['userid'] != $_userid) message();
+ $do->delete($itemid);
+ }
+ dmsg($L['op_del_success'], $forward);
+ break;
+ case 'my':
+ $from = isset($from) ? $from : '';
+ $condition = "userid=$_userid";
+ if($from == 'sms') {
+ $condition .= " AND mobile<>''";
+ } else {
+ $condition .= " AND username<>''";
+ }
+
+ $sfields = $L['friend_sfields'];
+ $dfields = array('company', 'truename', 'company', 'career', 'telephone', 'mobile', 'homepage', 'email', 'qq', 'wx', 'ali', 'skype', 'username', 'note');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}friend WHERE $condition");
+ $pages = pages($r['num'], $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT itemid,username,truename,company,mobile,note FROM {$DT_PRE}friend WHERE $condition ORDER BY listorder DESC,itemid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $lists[] = $r;
+ }
+ $head_title = $L['friend_title'];
+ include template('friend_my', $module);
+ exit;
+ break;
+ default:
+ $sfields = $L['friend_sfields'];
+ $dfields = array('company', 'truename', 'company', 'career', 'telephone', 'mobile', 'homepage', 'email', 'qq', 'ali', 'skype', 'username', 'note');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $typeid = isset($typeid) ? ($typeid === '' ? -1 : intval($typeid)) : -1;
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $type_select = type_select($TYPE, 0, 'typeid', $L['default_type'], $typeid, '', $L['all_type']);
+ $condition = "userid=$_userid";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($typeid > -1) $condition .= " AND typeid=$typeid";
+ $lists = $do->get_list($condition, 'listorder DESC,itemid DESC');
+ if($MG['friend_limit']) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}friend WHERE userid=$_userid");
+ $limit_used = $r['num'];
+ $limit_free = $MG['friend_limit'] > $limit_used ? $MG['friend_limit'] - $limit_used : 0;
+ }
+ $head_title = $L['friend_title'];
+}
+if($DT_PC) {
+ //
+} else {
+ if($action == 'add' || $action == 'edit' || $action == 'show') {
+ //
+ } else {
+ $pages = mobile_pages($items, $page, $pagesize);
+ }
+ if((!$action || $action == 'index') && !$kw) $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : '');
+ $head_name = $head_title;
+}
+include template('friend', $module);
+?>
\ No newline at end of file
diff --git a/module/member/global.func.php b/module/member/global.func.php
new file mode 100644
index 0000000..e0e538f
--- /dev/null
+++ b/module/member/global.func.php
@@ -0,0 +1,138 @@
+$v) {
+ if(!check_name($k)) continue;
+ if(is_array($v)) {
+ foreach($v as $i=>$j) {
+ $v[$i] = str_replace(',', '', $j);
+ }
+ $v = implode(',', $v);
+ }
+ if(isset($S[$k])) {
+ DB::query("UPDATE ".DT_PRE."company_setting SET item_value='$v' WHERE userid=$userid AND item_key='$k'");
+ } else {
+ DB::query("INSERT INTO ".DT_PRE."company_setting (userid,item_key,item_value) VALUES ('$userid','$k','$v')");
+ }
+ }
+ return true;
+}
+
+function stock_update($itemid, $skuid, $username, $amount, $editor, $reason, $note = '') {
+ $condition = $itemid ? "itemid=$itemid" : "skuid='$skuid' AND username='$username'";
+ $r = DB::get_one("SELECT itemid,title,skuid,amount,username FROM ".DT_PRE."stock WHERE $condition");
+ if($r && $r['username'] && $r['username'] == $username && $amount) {
+ $itemid = $r['itemid'];
+ $skuid = $r['skuid'];
+ $title = addslashes($r['title']);
+ $balance = $r['amount'] + $amount;
+ $reason = addslashes(stripslashes(strip_tags($reason)));
+ $note = addslashes(stripslashes(strip_tags($note)));
+ DB::query("UPDATE ".DT_PRE."stock SET amount=amount+{$amount},edittime=".DT_TIME." WHERE itemid=$itemid");
+ DB::query("INSERT INTO ".DT_PRE."stock_record (stockid,skuid,title,username,amount,balance,addtime,reason,note,editor) VALUES ('$itemid','$skuid','$title','$username','$amount','$balance','".DT_TIME."','$reason','$note','$editor')");
+ }
+}
+
+function stock_check($v = array()) {
+ if(is_skuid($v['skuid'])) {
+ $r = DB::get_one("SELECT amount FROM ".DT_PRE."stock WHERE skuid='$v[skuid]' AND username='$v[seller]'");
+ } else {
+ $r = DB::get_one("SELECT amount FROM ".get_table($v['mid'])." WHERE itemid='$v[mallid]'");
+ }
+ return $r['amount'] < $v['number'] ? 0 : 1;
+}
+
+function max_sms($mobile) {
+ global $DT, $L, $DT_TODAY, $_username;
+ $max = intval($DT['sms_max']);
+ if($max) {
+ $condition = $_username ? "editor='$_username'" : "mobile='$mobile'";
+ $condition .= " AND message LIKE '%".$L['sms_code']."%' AND sendtime>$DT_TODAY-86400";
+ $items = DB::count(DT_PRE.'sms', $condition);
+ if($items >= $max) return true;
+ }
+ return false;
+}
+
+function get_paylist() {
+ global $DT_PC, $DT_MBS;
+ $PAY = cache_read('pay.php');
+ if($DT_PC) {
+ $PAY['aliwap']['enable'] = 0;
+ } else {
+ if($PAY['aliwap']['enable']) {
+ $PAY['alipay']['enable'] = 0;
+ $tmp = $PAY['aliwap'];
+ unset($PAY['aliwap']);
+ $PAY = array_merge(array('aliwap'=>$tmp), $PAY);
+ } else {
+ if($PAY['alipay']['enable']) {
+ $tmp = $PAY['alipay'];
+ unset($PAY['alipay']);
+ $PAY = array_merge(array('alipay'=>$tmp), $PAY);
+ }
+ }
+ }
+ if(in_array($DT_MBS, array('weixin', 'wxxcx')) && $PAY['weixin']['enable']) {
+ $tmp = $PAY['weixin'];
+ unset($PAY['weixin']);
+ $PAY = array_merge(array('weixin'=>$tmp), $PAY);
+ }
+ $bank = get_cookie('pay_bank');
+ if($bank && $PAY[$bank]['enable']) {
+ $tmp = $PAY[$bank];
+ unset($PAY[$bank]);
+ $PAY = array_merge(array($bank=>$tmp), $PAY);
+ }
+ $P = array();
+ foreach($PAY as $k=>$v) {
+ if($v['enable']) {
+ $v['bank'] = $k;
+ $P[] = $v;
+ }
+ }
+ return $P;
+}
+
+function get_chat_id($f, $t) {
+ return md5(strcmp($f, $t) > 0 ? $f.'|'.$t : $t.'|'.$f);
+}
+
+function get_chat_tb($chatid) {
+ $k = 0;
+ for($i = 0; $i < 32; $i++) {
+ if(is_numeric($chatid[$i])) {$k = $chatid[$i]; break;}
+ }
+ return DT_PRE.'chat_data_'.$k;
+}
+
+function emoji_decode($str){
+ return preg_replace_callback('/\[emoji\](.+?)\[\/emoji\]/s', "_emoji_decode", $str);
+}
+
+function _emoji_decode($matches) {
+ return rawurldecode($matches[1]);
+}
+
+function get_orders($itemid) {
+ $table = DT_PRE.'order';
+ $lists = array();
+ $r = DB::get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$r) return $lists;
+ $lists[$r['itemid']] = $r;
+ $result = DB::query("SELECT * FROM {$table} WHERE pid=$itemid ORDER BY itemid DESC");
+ while($r = DB::fetch_array($result)) {
+ $lists[$r['itemid']] = $r;
+ }
+ return $lists;
+}
+
+function get_orders_id($itemid) {
+ $ids = '';
+ foreach(get_orders($itemid) as $k=>$v) {
+ $ids .= ','.$k;
+ }
+ return $ids ? substr($ids, 1) : 0;
+}
+?>
\ No newline at end of file
diff --git a/module/member/grade.inc.php b/module/member/grade.inc.php
new file mode 100644
index 0000000..1fcca4d
--- /dev/null
+++ b/module/member/grade.inc.php
@@ -0,0 +1,30 @@
+ 2) {
+ foreach($GROUP as $k=>$v) {
+ if($v['listorder'] > $MG['listorder']) $UP[$k] = $v;
+ }
+}
+$GROUPS = array();
+foreach($GROUP as $k=>$v) {
+ if($k > 4) {
+ $G = cache_read('group-'.$k.'.php');
+ $G['moduleids'] = isset($G['moduleids']) ? explode(',', $G['moduleids']) : array();
+ if($G['grade']) $GROUPS[$k] = $G;
+ }
+}
+$cols = count($GROUPS) + 1;
+$percent = dround(100/$cols).'%';
+$head_title = $L['grade_title'];
+if($DT_PC) {
+ //
+} else {
+ if((!$action || $action == 'index') && !$kw) $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : '');
+ $head_name = $head_title;
+}
+include template('grade', $module);
+?>
\ No newline at end of file
diff --git a/module/member/group.inc.php b/module/member/group.inc.php
new file mode 100644
index 0000000..49fa05e
--- /dev/null
+++ b/module/member/group.inc.php
@@ -0,0 +1,218 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ $td or message($L['group_msg_null']);
+ if($td['seller'] != $_username) message($L['group_msg_deny']);
+ $td['adddate'] = timetodate($td['addtime'], 5);
+ $td['updatedate'] = timetodate($td['updatetime'], 5);
+ $td['total'] = $td['amount'];
+ $td['linkurl'] = ($DT_PC ? DT_PATH : DT_MOB).'api/redirect.php?mid='.$mid.'&itemid='.$td['gid'];
+ $td['fee_name'] = $td['fee'] = $td['par'] = '';
+ $lists = array($td);
+ $gid = $td['gid'];
+ switch($step) {
+ case 'detail':
+ $logs = array();
+ $result = $db->query("SELECT * FROM {$table_log} WHERE oid=$itemid ORDER BY itemid DESC");
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $logs[] = $r;
+ }
+ $auth = encrypt('group|'.$td['send_type'].'|'.$td['send_no'].'|'.$td['send_status'].'|'.$td['buyer_mobile'].'|'.$td['itemid'], DT_KEY.'EXPRESS');
+ $head_title = $L['group_detail_title'];
+ break;
+ case 'express':
+ ($td['send_type'] && $td['send_no']) or dheader('?action=update&step=detail&itemid='.$itemid);
+ $auth = encrypt('group|'.$td['send_type'].'|'.$td['send_no'].'|'.$td['send_status'].'|'.$td['buyer_mobile'].'|'.$td['itemid'], DT_KEY.'EXPRESS');
+ $head_title = $L['group_express_title'];
+ break;
+ case 'used':
+ if($td['status'] != 0 || $td['logistic']) message();
+ $date = timetodate($DT_TIME, 6);
+ $db->query("UPDATE {$table} SET status=2,send_time='$date',updatetime=$DT_TIME WHERE itemid=$itemid");
+ $db->query("INSERT INTO {$table_log} (oid,addtime,title,note) VALUES ('$itemid','$DT_TIME','$L[log_use]','')");
+ dmsg($L['op_success'], '?mid='.$mid.'&page='.$page);
+ break;
+ case 'send':
+ if($td['status'] != 0 || !$td['logistic']) message();
+ if($submit) {
+ $send_type = dhtmlspecialchars($send_type);
+ if(strlen($send_type) > 2 && strlen($send_no) < 5) message($L['msg_express_no']);
+ if(strlen($send_no) > 4 && strlen($send_type) < 3) message($L['msg_express_type']);
+ if($send_no && !preg_match("/^[a-z0-9_\-]{4,}$/i", $send_no)) message($L['msg_express_no_error']);
+ is_date($send_time) or message($L['msg_express_date_error']);
+ $db->query("UPDATE {$table} SET status=1,updatetime=$DT_TIME,send_type='$send_type',send_no='$send_no',send_time='$send_time' WHERE itemid=$itemid");
+ $db->query("INSERT INTO {$table_log} (oid,addtime,title,note) VALUES ('$itemid','$DT_TIME','$L[log_send]','')");
+ dmsg($L['op_success'], '?mid='.$mid.'&page='.$page);
+ } else {
+ $head_title = $L['group_send_title'];
+ $send_types = explode('|', trim($MOD['send_types']));
+ $send_time = timetodate($DT_TIME, 3);
+ }
+ break;
+ case 'add_time'://增加确认收货时间
+ if(!in_array($td['status'], array(1, 2))) message();
+ if($submit) {
+ $add_time = intval($add_time);
+ $add_time > 0 or message($L['group_addtime_null']);
+ $add_time = $td['add_time'] + $add_time;
+ $db->query("UPDATE {$table} SET add_time='$add_time' WHERE itemid=$itemid");
+ $db->query("INSERT INTO {$table_log} (oid,addtime,title,note) VALUES ('$itemid','$DT_TIME','$L[log_addtime]','')");
+ message($L['group_addtime_success'], $forward);
+ } else {
+ $head_title = $L['group_addtime_title'];
+ }
+ break;
+ case 'print'://订单打印
+ if(!$td['logistic']) message($L['group_msg_deny']);
+ $td['total'] = $td['amount'];
+ include template('group_print', $module);
+ exit;
+ break;
+ case 'refund_agree'://卖家同意买家退款
+ if($td['status'] != 4) message($L['trade_msg_deny']);
+ $money = $td['amount'];
+ if($submit) {
+ $content .= $L['trade_refund_by_seller'];
+ clear_upload($content, $itemid, $table);
+ $content = dsafe(addslashes(save_remote(save_local(stripslashes($content)))));
+ is_payword($_username, $password) or message($L['error_payword']);
+ money_add($td['buyer'], $money);
+ money_record($td['buyer'], $money, $L['in_site'], 'system', $L['trade_refund'], $L['group_order_id'].$itemid.$L['trade_refund_by_seller']);
+ $db->query("UPDATE {$table} SET status=5,editor='$_username',updatetime=$DT_TIME,refund_reason='$content' WHERE itemid=$itemid");
+ $db->query("INSERT INTO {$table_log} (oid,addtime,title,note) VALUES ('$itemid','$DT_TIME','$L[log_agree]','')");
+ message($L['trade_refund_agree_success'], $forward, 3);
+ } else {
+ $head_title = $L['trade_refund_agree_title'];
+ }
+ break;
+ case 'get_pay'://买家确认超时 卖家申请直接付款
+ $gone = $DT_TIME - $td['updatetime'];
+ if(!in_array($td['status'], array(1, 2)) || $gone < ($MOD['trade_day']*86400 + $td['add_time']*3600)) message($L['group_msg_deny']);
+ //交易成功
+ $money = $td['amount'];
+ money_add($td['seller'], $money);
+ money_record($td['seller'], $money, $L['in_site'], 'system', $L['group_record_pay'], lang($L['group_buyer_timeout'], array($itemid)));
+ //网站服务费
+ $G = $db->get_one("SELECT groupid FROM {$DT_PRE}member WHERE username='".$td['seller']."'");
+ $SG = cache_read('group-'.$G['groupid'].'.php');
+ if($SG['commission']) {
+ $fee = dround($money*$SG['commission']/100);
+ if($fee > 0) {
+ money_add($td['seller'], -$fee);
+ money_record($td['seller'], -$fee, $L['in_site'], 'system', $L['trade_fee'], $L['trade_order_id'].$itemid);
+ }
+ }
+ $db->query("UPDATE {$table} SET status=3,updatetime=$DT_TIME WHERE itemid=$itemid");
+ $db->query("INSERT INTO {$table_log} (oid,addtime,title,note) VALUES ('$itemid','$DT_TIME','$L[log_getpay]','')");
+ $db->query("INSERT INTO {$table_log} (oid,addtime,title,note) VALUES ('$itemid','$DT_TIME','$L[log_success]','')");
+ message($L['group_success'], $forward, 3);
+ break;
+ }
+} else if($action == 'express') {//我的快递
+ $sfields = $L['express_sfields'];
+ $dfields = array('title', 'title', 'send_type ', 'send_no');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $status = isset($status) && isset($dsend_status[$status]) ? intval($status) : '';
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $status_select = dselect($dsend_status, 'status', $L['status'], $status, '', 1, '', 1);
+ $condition = "send_no<>'' AND seller='$_username'";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($status !== '') $condition .= " AND send_status='$status'";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition");
+ $items = $r['num'];
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table} WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['addtime'] = timetodate($r['addtime'], 5);
+ $r['updatetime'] = timetodate($r['updatetime'], 5);
+ $r['dstatus'] = $_send_status[$r['send_status']];
+ $lists[] = $r;
+ }
+ $head_title = $L['express_title'];
+} else {
+ $sfields = $L['group_sfields'];
+ $dfields = array('title', 'title ', 'amount', 'password', 'buyer', 'buyer_name', 'buyer_address', 'buyer_postcode', 'buyer_mobile', 'buyer_phone', 'send_type', 'send_no', 'note');
+ $gid = isset($gid) ? intval($gid) : 0;
+ $gid or $gid = '';
+ $itemid or $itemid = '';
+ (isset($buyer) && check_name($buyer)) or $buyer = '';
+ (isset($pass) && preg_match("/^[a-z0-9]{6}$/", $pass)) or $pass = '';
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = is_date($fromdate) ? datetotime($fromdate.' 0:0:0') : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = is_date($todate) ? datetotime($todate.' 23:59:59') : 0;
+ $status = isset($status) && isset($dstatus[$status]) ? intval($status) : '';
+ $nav = isset($nav) ? intval($nav) : -1;
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $status_select = dselect($dstatus, 'status', $L['status'], $status, '', 1, '', 1);
+ $condition = "seller='$_username'";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($status !== '') $condition .= " AND status='$status'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ if($gid) $condition .= " AND gid=$gid";
+ if($buyer) $condition .= " AND buyer='$buyer'";
+ if($pass) $condition .= " AND password='$pass'";
+ if(in_array($nav, array(0,1,2,4,5,6))) $condition .= " AND status=$nav";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition");
+ $items = $r['num'];
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table} WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ $amount = $fee = $money = 0;
+ while($r = $db->fetch_array($result)) {
+ $r['gone'] = $DT_TIME - $r['updatetime'];
+ if($r['status'] == 1 || $r['status'] == 2) {
+ if($r['gone'] > ($MOD['trade_day']*86400 + $r['add_time']*3600)) {
+ $r['lefttime'] = 0;
+ } else {
+ $r['lefttime'] = secondstodate($MOD['trade_day']*86400 + $r['add_time']*3600 - $r['gone']);
+ }
+ }
+ $r['addtime'] = str_replace(' ', ' ', timetodate($r['addtime'], $DT_PC ? 5 : 3));
+ $r['updatetime'] = str_replace(' ', ' ', timetodate($r['updatetime'], 5));
+ $r['linkurl'] = ($DT_PC ? DT_PATH : DT_MOB).'api/redirect.php?mid='.$mid.'&itemid='.$r['gid'];
+ $r['dstatus'] = $_status[$r['status']];
+ $r['money'] = $r['amount'];
+ $r['money'] = number_format($r['money'], 2, '.', '');
+ $amount += $r['amount'];
+ $lists[] = $r;
+ }
+ $money = $amount + $fee;
+ $money = number_format($money, 2, '.', '');
+ $forward = urlencode($DT_URL);
+ $head_title = $L['group_title'];
+}
+if($DT_PC) {
+ //
+} else {
+ if((!$action || $action == 'index') && !$kw) $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : 'biz.php');
+ if($pages) $pages = mobile_pages($items, $page, $pagesize);
+ $head_name = $head_title;
+}
+include template('group', $module);
+?>
\ No newline at end of file
diff --git a/module/member/honor.class.php b/module/member/honor.class.php
new file mode 100644
index 0000000..cc7e7d0
--- /dev/null
+++ b/module/member/honor.class.php
@@ -0,0 +1,208 @@
+table = DT_PRE.'honor';
+ $this->fields = array('title','style','content', 'authority','thumb','status','username','addtime','editor','edittime','fromtime','totime','note');
+ }
+
+ function honor() {
+ $this->__construct();
+ }
+
+ function pass($post) {
+ global $L;
+ if(!is_array($post)) return false;
+ if(!$post['title']) return $this->_($L['honor_pass_title']);
+ if(!$post['authority']) return $this->_($L['honor_pass_authority']);
+ if(!$post['thumb']) return $this->_($L['honor_pass_thumb']);
+ if(!$post['fromtime'] || !is_date($post['fromtime'])) return $this->_($L['honor_pass_fromdate']);
+ if(datetotime($post['fromtime'].' 00:00:00') > DT_TIME) return $this->_($L['honor_pass_fromdate_error']);
+ if($post['totime']) {
+ if(!is_date($post['totime'])) return $this->_($L['honor_pass_todate']);
+ if(datetotime($post['totime'].' 23:59:59') < DT_TIME) return $this->_($L['honor_pass_todate_error']);
+ }
+ if(DT_MAX_LEN && strlen(clear_img($post['content'])) > DT_MAX_LEN) $this->_(lang('message->pass_max'));
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $_username, $_userid, $_cname;
+ $post['addtime'] = (isset($post['addtime']) && $post['addtime']) ? datetotime($post['addtime']) : DT_TIME;
+ $post['editor'] = $_cname ? $_cname : $_username;
+ $post['edittime'] = DT_TIME;
+ $post['fromtime'] = datetotime($post['fromtime'].' 00:00:00');
+ $post['totime'] = $post['totime'] ? datetotime($post['totime'].' 23:59:59') : 0;
+ if($this->itemid) {
+ $post['editor'] = $_username;
+ $new = $post['content'];
+ if($post['thumb']) $new .= ' ';
+ $r = $this->get_one();
+ $old = $r['content'];
+ if($r['thumb']) $old .= ' ';
+ delete_diff($new, $old);
+ }
+ $content = $post['content'];
+ unset($post['content']);
+ $post = dhtmlspecialchars($post);
+ $post['content'] = dsafe($content);
+ if($MOD['credit_clear'] || $MOD['credit_save']) {
+ $post['content'] = stripslashes($post['content']);
+ $post['content'] = save_local($post['content']);
+ if($MOD['credit_clear']) $post['content'] = clear_link($post['content']);
+ if($MOD['credit_save']) $post['content'] = save_remote($post['content']);
+ $post['content'] = addslashes($post['content']);
+ }
+ return array_map("trim", $post);
+ }
+
+ function get_one() {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid='$this->itemid'");
+ }
+
+ function get_list($condition = 'status=3', $order = 'addtime DESC') {
+ global $MOD, $pages, $page, $pagesize, $offset, $L, $items, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['fromdate'] = timetodate($r['fromtime'], 3);
+ $r['todate'] = $r['totime'] ? timetodate($r['totime'], 3) : $L['forever'];
+ $r['image'] = str_replace('.thumb.'.file_ext($r['thumb']), '', $r['thumb']);
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = userurl($r['username'], 'file=honor&itemid='.$r['itemid']);
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $MOD, $L;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ if($post['username'] && $MOD['credit_add_credit']) {
+ credit_add($post['username'], $MOD['credit_add_credit']);
+ credit_record($post['username'], $MOD['credit_add_credit'], 'system', $L['honor_reward_reason'], 'ID:'.$this->itemid);
+ }
+ clear_upload($post['content'].$post['thumb'], $this->itemid, $this->table);
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ clear_upload($post['content'].$post['thumb'], $this->itemid, $this->table);
+ if($post['status'] > 2) history(2, 'honor-'.$this->itemid, 'del');
+ return true;
+ }
+
+ function recycle($itemid) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->recycle($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=0 WHERE itemid=$itemid");
+ return true;
+ }
+ }
+
+ function restore($itemid) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->restore($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=3 WHERE itemid=$itemid");
+ return true;
+ }
+ }
+
+ function delete($itemid, $all = true) {
+ global $MOD, $L;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->delete($v); }
+ } else {
+ $this->itemid = $itemid;
+ $r = $this->get_one();
+ $userid = get_user($r['username']);
+ if($r['thumb']) delete_upload($r['thumb'], $userid);
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ if($r['username'] && $MOD['credit_del_credit']) {
+ credit_add($r['username'], -$MOD['credit_del_credit']);
+ credit_record($r['username'], -$MOD['credit_del_credit'], 'system', $L['honor_punish_reason'], 'ID:'.$this->itemid);
+ }
+ history(2, 'honor-'.$itemid, 'del');
+ }
+ }
+
+ function check($itemid) {
+ global $_username;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->check($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=3,editor='$_username',edittime=".DT_TIME." WHERE itemid=$itemid");
+ history(2, 'honor-'.$itemid, 'del');
+ return true;
+ }
+ }
+
+ function reject($itemid) {
+ global $_username;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->reject($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=1,editor='$_username',edittime=".DT_TIME." WHERE itemid=$itemid");
+ return true;
+ }
+ }
+
+ function expire($condition = '') {
+ DB::query("UPDATE {$this->table} SET status=4 WHERE status=3 AND totime>0 AND totime<".DT_TIME." $condition");
+ }
+
+ function clear() {
+ $result = DB::query("SELECT itemid FROM {$this->table} WHERE status=0");
+ while($r = DB::fetch_array($result)) {
+ $this->delete($r['itemid']);
+ }
+ }
+
+ function order($listorder) {
+ if(!is_array($listorder)) return false;
+ foreach($listorder as $k=>$v) {
+ $k = intval($k);
+ $v = intval($v);
+ DB::query("UPDATE {$this->table} SET listorder=$v WHERE itemid=$k");
+ }
+ return true;
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/member/im.inc.php b/module/member/im.inc.php
new file mode 100644
index 0000000..2e36c2c
--- /dev/null
+++ b/module/member/im.inc.php
@@ -0,0 +1,244 @@
+get_one("SELECT black FROM {$DT_PRE}member_misc WHERE userid=$_userid");
+ $black = $black['black'];
+ if($black) {
+ $tmp = explode(' ', trim($black));
+ if(in_array($username, $tmp)) {
+ //
+ } else {
+ $black = $black.' '.$username;
+ }
+ } else {
+ $black = $username;
+ }
+ $db->query("UPDATE {$DT_PRE}member_misc SET black='$black' WHERE userid=$_userid");
+ $chatid = get_chat_id($_username, $username);
+ $db->query("DELETE FROM {$table} WHERE chatid='$chatid'");
+ userclean($_username);
+ dmsg($L['chat_msg_black_success'], '?action=setting');
+ break;
+ case 'setting':
+ if($submit) {
+ if($black) {
+ $blacks = array();
+ $tmp = explode(' ', trim($black));
+ foreach($tmp as $v) {
+ if((check_name($v) || $v == 'Guest') && !in_array($v, $blacks)) $blacks[] = $v;
+ }
+ $black = $blacks ? implode(' ', $blacks) : '';
+ } else {
+ $black = '';
+ }
+ $reply = strip_tags(trim($reply));
+ $db->query("UPDATE {$DT_PRE}member_misc SET black='$black',reply='$reply' WHERE userid=$_userid");
+ userclean($_username);
+ dmsg($L['op_update_success'], '?action=setting');
+ } else {
+ $user = $db->get_one("SELECT black,reply FROM {$DT_PRE}member_misc WHERE userid=$_userid");
+ $head_title = $L['chat_setting'];
+ }
+ break;
+ case 'group':
+ $lists = array();
+ foreach($MODULE as $m) {
+ if($m['module'] == 'club') {
+ $mid = $m['moduleid'];
+ $result = $db->query("SELECT * FROM {$DT_PRE}club_fans_{$mid} WHERE status=3 AND username='$_username' ORDER BY addtime DESC LIMIT 100");
+ while($r = $db->fetch_array($result)) {
+ $gid = $r['gid'];
+ $GRP = $db->get_one("SELECT * FROM {$DT_PRE}club_group_{$mid} WHERE itemid=$gid", 'CACHE');
+ if($GRP && $GRP['status'] == 3 && $GRP['chat']) {
+ $arr = array();
+ $arr['mid'] = $mid;
+ $arr['gid'] = $gid;
+ $arr['linkurl'] = ($DT_PC ? $m['linkurl'] : $m['mobile']).rewrite('chat.php?gid='.$gid);
+ $arr['title'] = $GRP['title'];
+ $arr['thumb'] = $GRP['thumb'];
+ $arr['fans'] = $GRP['fans'];
+ $arr['chattime'] = $GRP['chattime'];
+ $arr['last'] = timetodate($GRP['chattime'], 'm/d H:i');
+ $lists[] = $arr;
+ }
+ }
+ }
+ }
+ $head_title = $L['chat_group'];
+ break;
+ case 'friend':
+ $TP = get_type('friend-'.$_userid);
+ $lists = array();
+ $condition = "userid=$_userid AND username<>''";
+ if($keyword) $condition .= ' AND ('.substr(match_kw('username', $keyword), 5).' OR '.substr(match_kw('truename', $keyword), 5).' OR '.substr(match_kw('company', $keyword), 5).')';
+ $result = $db->query("SELECT * FROM {$DT_PRE}friend WHERE $condition ORDER BY listorder DESC,itemid DESC LIMIT 500");
+ while($r = $db->fetch_array($result)) {
+ $typeid = $r['typeid'];
+ if(!isset($TP[$typeid])) $typeid = 0;
+ $arr = array();
+ $arr['linkurl'] = 'chat.php?touser='.$r['username'];
+ $arr['username'] = $r['username'];
+ $arr['truename'] = $r['truename'];
+ $arr['company'] = $r['company'];
+ $lists[$typeid][] = $arr;
+ }
+ $TYPE = array();
+ if(isset($lists[0])) $TYPE[0] = array('typeid'=>0, 'typename'=>$L['chat_friend'], 'num'=>count($lists[0]));
+ foreach($TP as $k=>$v) {
+ if(isset($lists[$k])) {
+ $v['num'] = count($lists[$k]);
+ $TYPE[$k] = $v;
+ }
+ }
+ $head_title = $L['chat_friend'];
+ break;
+ case 'view':
+ $admin = 0;
+ if($mid) {
+ $gid = isset($gid) ? intval($gid) : 0;
+ ($MODULE[$mid]['module'] == 'club' && $gid) or dheader('?action=index');
+ $table_fans = $DT_PRE.'club_fans_'.$mid;
+ $table_group = $DT_PRE.'club_group_'.$mid;
+ $chat = $db->get_one("SELECT * FROM {$table_fans} WHERE username='$_username' AND gid=$gid AND status=3");
+ $chat or dheader('?action=index');
+ $chatid = md5($gid.'@'.$mid);
+ $table = get_chat_tb($chatid);
+ require DT_ROOT.'/module/club/global.func.php';
+ $GRP = get_group($gid);
+ $admin = is_admin($GRP);
+ if($admin) {
+ if($itemid) {
+ $chat = $db->get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if($chat && $chat['chatid'] == $chatid) {
+ if($job == 'ban') {
+ $db->query("UPDATE {$table_fans} SET ban=1 WHERE gid=$gid AND username='$chat[username]'");
+ dmsg($L['op_success'], $forward);
+ } else if($job == 'del') {
+ $db->query("DELETE FROM {$table} WHERE itemid=$itemid");
+ dmsg($L['op_del_success'], $forward);
+ }
+ }
+ }
+ }
+ } else {
+ $chatid or dheader('?action=index');
+ $chat = $db->get_one("SELECT * FROM {$table} WHERE chatid='$chatid'");
+ ($chat && ($chat['fromuser'] == $_username || $chat['touser'] == $_username)) or dheader('?action=index');
+ $table = get_chat_tb($chatid);
+ }
+ (isset($username) && check_name($username)) or $username = '';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = is_date($fromdate) ? datetotime($fromdate.' 0:0:0') : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = is_date($todate) ? datetotime($todate.' 23:59:59') : 0;
+ $condition = "chatid='$chatid'";
+ if($keyword) $condition .= match_kw('content', $keyword);
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($username) $condition .= " AND username='$username'";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition");
+ $items = $r['num'];
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table} WHERE $condition ORDER BY addtime DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $word = $r['content'];
+ if($MOD['chat_url'] || $MOD['chat_img']) {
+ if(preg_match_all("/([http|https]+)\:\/\/([a-z0-9\/\-\_\.\,\?\&\#\=\%\+\;]{4,})/i", $word, $m)) {
+ foreach($m[0] as $u) {
+ if($MOD['chat_img'] && preg_match("/^(jpg|jpeg|gif|png|bmp)$/i", file_ext($u)) && !preg_match("/([\?\&\=]{1,})/i", $u)) {
+ $word = str_replace($u, ' ', $word);
+ } else if($MOD['chat_img'] && preg_match("/^(mp4)$/i", file_ext($u)) && !preg_match("/([\?\&\=]{1,})/i", $u)) {
+ $word = str_replace($u, ' ', $word);
+ } else if($MOD['chat_url']) {
+ $word = str_replace($u, ''.$u.' ', $word);
+ }
+ }
+ }
+ }
+ if(strpos($word, ')') !== false) $word = parse_face($word);
+ if(strpos($word, '[emoji]') !== false) $word = emoji_decode($word);
+ $r['word'] = $word;
+ $r['date'] = timetodate($r['addtime'], 6);
+ $lists[] = $r;
+ }
+ break;
+ case 'list':
+ $data = '';
+ $new = 0;
+ $result = $db->query("SELECT * FROM {$table} WHERE fromuser='$_username' OR touser='$_username' ORDER BY lasttime DESC LIMIT 100");
+ while($r = $db->fetch_array($result)) {
+ if($r['fromuser'] == $_username) {
+ $r['user'] = $r['touser'];
+ $r['new'] = $r['fnew'];
+ } else {
+ $r['user'] = $r['fromuser'];
+ $r['new'] = $r['tnew'];
+ }
+ $new += $r['new'];
+ if($r['new'] > 99) $r['new'] = 99;
+ $r['last'] = timetodate($r['lasttime'], $r['lasttime'] > $DT_TODAY - 86400 ? 'H:i:s' : 'y/m/d');
+ $r['online'] = online($r['user'], 1);
+ if($DT_PC) {
+ $data .= '';
+ $data .= ' ';
+ $data .= ' ';
+ $data .= ''.$r['last'].' '.$r['user'].' ';
+ $data .= ''.($r['new'] ? ''.$r['new'].' ' : '').($r['online'] ? $L['chat_online'] : $L['chat_offline']).' '.$r['lastmsg'].' ';
+ $data .= '
';
+ } else {
+ $data .= '';
+ $data .= '
';
+ $data .= ''.$r['last'].' '.$r['user'].' ';
+ $data .= ''.($r['new'] ? ''.$r['new'].' ' : '').''.$r['lastmsg'].' ';
+ $data .= ' ';
+ }
+ }
+ if($new != $_chat) {
+ $db->query("UPDATE {$DT_PRE}member SET chat=$new WHERE userid=$_userid");
+ $_chat = $new;
+ }
+ if(!$data) $data = ''.$L['chat_empty'].'
';
+ exit($data);
+ break;
+ default:
+ break;
+}
+if($DT_PC) {
+ //
+} else {
+ $foot = 'message';
+ if($action == 'view') $pages = mobile_pages($items, $page, $pagesize);
+ $head_name = $head_title;
+ if($sns_app) $seo_title = '';
+}
+include template('im', $module);
+?>
\ No newline at end of file
diff --git a/module/member/index.html b/module/member/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/member/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/member/index.inc.php b/module/member/index.inc.php
new file mode 100644
index 0000000..71a8e76
--- /dev/null
+++ b/module/member/index.inc.php
@@ -0,0 +1,51 @@
+ 5000) message($L['index_msg_note_limit']);
+ $note = ''.dhtmlspecialchars(stripslashes($note));
+ file_put(DT_ROOT.'/file/user/'.dalloc($_userid).'/'.$_userid.'/note.php', $note);
+ dmsg($L['op_update_success'], $MODULE[2]['linkurl']);
+ }
+ $user = userinfo($_username);
+ extract($user);
+ if($vemail && $vmobile && $vbank && $vtruename && $vcompany && !$validated) {
+ $db->query("UPDATE {$DT_PRE}company SET validated=1 WHERE userid=$_userid");
+ userclean($_username);
+ }
+ $expired = $totime && $totime < $DT_TIME ? true : false;
+ $havedays = $expired ? 0 : ceil(($totime - $DT_TIME)/86400);
+ $sys = array();
+ $i = 0;
+ $result = $db->query("SELECT itemid,title,addtime,groupids FROM {$DT_PRE}message WHERE groupids<>'' ORDER BY itemid DESC", 'CACHE');
+ while($r = $db->fetch_array($result)) {
+ $groupids = explode(',', $r['groupids']);
+ if(!in_array($_groupid, $groupids)) continue;
+ if($i > 2) continue;
+ $i++;
+ $sys[] = $r;
+ }
+ $note = DT_ROOT.'/file/user/'.dalloc($_userid).'/'.$_userid.'/note.php';
+ $note = file_get($note);
+ if($note) {
+ $note = substr($note, 13);
+ } else {
+ $note = $MOD['usernote'];
+ }
+ $t = explode('.', $_money);
+ $my_money = $t[0].'.'.$t[1].' ';
+ $head_title = '';
+} else {
+ $head_title = $head_name = $MOD['name'];
+ $foot = 'my';
+}
+include template('index', $module);
+?>
\ No newline at end of file
diff --git a/module/member/invite.inc.php b/module/member/invite.inc.php
new file mode 100644
index 0000000..4bdbd65
--- /dev/null
+++ b/module/member/invite.inc.php
@@ -0,0 +1,40 @@
+get_one("SELECT linkurl,username FROM {$DT_PRE}company WHERE username='$user'");
+ if($c) {
+ $userurl = $c['linkurl'];
+ $user = $username = $c['username'];
+ $could_credit = true;
+ if($MOD['credit_ip'] <= 0) $could_credit = false;
+ if($could_credit) {
+ $r = $db->get_one("SELECT itemid FROM {$DT_PRE}finance_credit WHERE note='$DT_IP' AND addtime>$DT_TIME-86400");
+ if($r) $could_credit = false;
+ }
+ if($could_credit && $MOD['credit_maxip'] > 0) {
+ $r = $db->get_one("SELECT SUM(amount) AS total FROM {$DT_PRE}finance_credit WHERE username='$username' AND addtime>$DT_TIME-86400 AND reason='$reason'");
+ if($r['total'] > $MOD['credit_maxip']) $could_credit = false;
+ }
+ if($could_credit) {
+ credit_add($username, $MOD['credit_ip']);
+ credit_record($username, $MOD['credit_ip'], 'system', $reason, $DT_IP);
+ }
+ set_cookie('inviter', encrypt($username, DT_KEY.'INVITER'), $DT_TIME + 30*86400);
+ } else {
+ dheader(DT_PATH);
+ }
+} else {
+ dheader(DT_PATH);
+}
+$goto = isset($goto) ? trim($goto) : '';
+$URI = DT_PATH;
+if($goto == 'register') {
+ $URI = $MODULE[2]['linkurl'].$DT['file_register'];
+} else if($goto == 'homepage') {
+ if($userurl) $URI = $userurl;
+}
+dheader($URI);
+?>
\ No newline at end of file
diff --git a/module/member/link.class.php b/module/member/link.class.php
new file mode 100644
index 0000000..246b1cd
--- /dev/null
+++ b/module/member/link.class.php
@@ -0,0 +1,117 @@
+table = DT_PRE.'link';
+ $this->fields = array('listorder', 'title','style','username','addtime','editor','edittime','status', 'linkurl');
+ }
+
+ function dlink() {
+ $this->__construct();
+ }
+
+ function pass($post) {
+ global $L;
+ if(!is_array($post)) return false;
+ if(!$post['username']) return $this->_($L['link_pass_username']);
+ if(!$post['title']) return $this->_($L['link_pass_title']);
+ if(!is_url($post['linkurl'])) return $this->_($L['link_pass_linkurl']);
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $_username, $_userid, $_cname;
+ if(!$this->itemid) $post['addtime'] = DT_TIME;
+ $post['editor'] = $_cname ? $_cname : $_username;
+ $post['edittime'] = DT_TIME;
+ $post = dhtmlspecialchars($post);
+ return array_map("trim", $post);
+ }
+
+ function get_one() {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid='$this->itemid'");
+ }
+
+ function get_list($condition = '1', $order = 'listorder DESC, itemid DESC') {
+ global $pages, $page, $pagesize, $offset, $items, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['url'] = DT_PATH.'api/redirect.php?url='.urlencode(fix_link($r['linkurl']));
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ if($post['status'] > 2) history(2, 'link-'.$this->itemid, 'del');
+ return true;
+ }
+
+ function delete($itemid, $all = true) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->delete($v, $all);
+ }
+ } else {
+ $this->itemid = $itemid;
+ $r = $this->get_one();
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ history(2, 'link-'.$itemid, 'del');
+ }
+ }
+
+ function check($itemid, $status = 3) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->check($v, $status);
+ }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=$status WHERE itemid=$itemid");
+ history(2, 'link-'.$itemid, 'del');
+ return true;
+ }
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/member/login.inc.php b/module/member/login.inc.php
new file mode 100644
index 0000000..978c515
--- /dev/null
+++ b/module/member/login.inc.php
@@ -0,0 +1,263 @@
+get_one("SELECT itemid,parent,password,passsalt,status FROM {$DT_PRE}member_child WHERE username='$username'");
+ if($r) {
+ if($r['status'] != 3) message($L['member_login_member_ban']);
+ if($r['password'] != dpassword($password, $r['passsalt'])) message($L['member_login_password_bad']);
+ $cookietime = isset($cookietime) ? 86400*7 : 0;
+ $user = $do->login($r['parent'], $cookietime, 0, 'child', $r['itemid']);
+ if($user) dheader($forward);
+ message($do->errmsg);
+ } else {
+ message($L['login_msg_not_member']);
+ }
+ }
+ $head_title = $L['login_title_child'];
+ break;
+ case 'sms':
+ $could_sms or dheader('?action=login&forward='.$_forward);
+ if($submit) {
+ $session = new dsession();
+ $_SESSION['mobile_oppo'] = $_SESSION['mobile_oppo'] + 1;
+ if($_SESSION['mobile_oppo'] > 3) $_SESSION['mobile_code'] = '';
+ (is_mobile($mobile) && preg_match("/^[0-9]{6}$/", $code) && isset($_SESSION['mobile_code']) && $_SESSION['mobile_code'] == md5($mobile.'|'.$code)) or message($L['login_msg_bad_code']);
+ $_SESSION['mobile_code'] = '';
+ $cookietime = $MOD['login_time'] >= 86400 ? $MOD['login_time'] : 0;
+ $password = $code;
+ if($_SESSION['mobile_auto']) {
+ $post = array();
+ $post['groupid'] = $post['regid'] = 5;
+ $post['username'] = 'uid-'.get_uid();
+ $post['passport'] = $post['username'];
+ $post['password'] = $post['cpassword'] = random(10);
+ $post['email'] = $post['username'].'@mob.sns';
+ $post['mobile'] = $mobile;
+ if($do->pass($post, 1)) {
+ if($do->add($post)) {
+ $username = $post['username'];
+ $db->query("UPDATE {$DT_PRE}member SET vmobile=0 WHERE mobile='$mobile'");
+ $db->query("UPDATE {$DT_PRE}member SET vmobile=1 WHERE username='$username'");
+ $db->query("INSERT INTO {$DT_PRE}validate (title,history,type,username,ip,addtime,status,editor,edittime) VALUES ('$mobile','$mobile','mobile','$username','$DT_IP','$DT_TIME','3','login','$DT_TIME')");
+ $user = $do->login($username, $password, $cookietime, 'sms');
+ if($user) dheader($forward);
+ }
+ }
+ message($do->errmsg);
+ } else {
+ $user = $db->get_one("SELECT username,groupid,passsalt FROM {$DT_PRE}member WHERE mobile='$mobile' AND vmobile=1 ORDER BY userid");
+ ($user && !in_array($user['groupid'], array(2,3,4))) or message($L['login_msg_bad_mobile']);
+ $username = $user['username'];
+ $user = $do->login($username, $password, $cookietime, 'sms');
+ if($user) {
+ dheader($forward);
+ } else {
+ if($DT['login_log'] == 2) $do->login_log($username, $password, $user['passsalt'], 0, $do->errmsg);
+ message($do->errmsg);
+ }
+ }
+ } else {
+ $verfiy = 0;
+ if(isset($auth)) {
+ $auth = decrypt($auth, DT_KEY.'VSMS');
+ if(is_mobile($auth)) {
+ $verfiy = 1;
+ $mobile = $auth;
+ }
+ }
+ $head_title = $L['login_title_sms'];
+ }
+ break;
+ case 'send':
+ $could_sms or exit('close');
+ is_mobile($mobile) or exit('format');
+ $msg = captcha($captcha, 1, true);
+ if($msg) exit('captcha');
+ $auto = 0;
+ $user = $db->get_one("SELECT groupid FROM {$DT_PRE}member WHERE mobile='$mobile' AND vmobile=1 ORDER BY userid");
+ if($user) {
+ if(in_array($user['groupid'], array(2,3,4))) exit('exist');
+ } else {
+ if($MOD['login_sms'] > 1) {
+ $auto = 1;
+ } else {
+ exit('exist');
+ }
+ }
+ $session = new dsession();
+ isset($_SESSION['mobile_send']) or $_SESSION['mobile_send'] = 0;
+ isset($_SESSION['mobile_time']) or $_SESSION['mobile_time'] = 0;
+ if($_SESSION['mobile_send'] > 4) exit('max');
+ if($_SESSION['mobile_time'] && (($DT_TIME - $_SESSION['mobile_time']) < 180)) exit('fast');
+ if(max_sms($mobile)) exit('max');
+ $mobilecode = random(6, '0-9');
+ $_SESSION['mobile_code'] = md5($mobile.'|'.$mobilecode);
+ $_SESSION['mobile_time'] = $DT_TIME;
+ $_SESSION['mobile_oppo'] = 0;
+ $_SESSION['mobile_send'] = $_SESSION['mobile_send'] + 1;
+ $_SESSION['mobile_auto'] = $auto;
+ $content = lang('sms->sms_code', array($mobilecode, $MOD['auth_days']*10)).$DT['sms_sign'];
+ send_sms($mobile, $content);
+ #log_write($content, 'sms', 1);
+ exit('ok');
+ break;
+ case 'weixin':
+ $could_weixin or dheader('?action=login&forward='.$_forward);
+ require DT_ROOT.'/api/oauth/wechat/init.inc.php';
+ $head_title = $L['login_title_weixin'];
+ break;
+ case 'scan':
+ $could_scan or dheader('?action=login&forward='.$_forward);
+ $session = new dsession();
+ $sid = md5(DT_IP.DT_KEY.session_id());
+ if($job == 'ajax') {
+ $t = $db->get_one("SELECT * FROM {$DT_PRE}app_scan WHERE sid='$sid'");
+ if($t) {
+ if($t['username'] == 'sc') {
+ exit('scan');
+ } else if($t['username']) {
+ $db->query("DELETE FROM {$DT_PRE}app_scan WHERE sid='$sid'");
+ $user = $do->login($t['username'], '', 0, 'app-scan');
+ exit($user ? 'ok' : 'ko');
+ }
+ exit('wait');
+ } else {
+ exit('out');
+ }
+ } else {
+ $expire = $DT_TIME - 600;
+ $db->query("DELETE FROM {$DT_PRE}app_scan WHERE lasttime<$expire");
+ if(strpos($forward, 'api/') !== false) $forward = '';
+ $forward or $forward = $MODULE[2]['linkurl'];
+ $db->query("REPLACE INTO {$DT_PRE}app_scan (sid,username,lasttime) VALUES ('$sid','','$DT_TIME')");
+ $auth = encrypt('SCAN:'.$sid, DT_KEY.'QRCODE');
+ }
+ $head_title = $L['login_title_scan'];
+ break;
+ default:
+ $LOCK = cache_read($DT_IP.'.php', 'ban');
+ if($LOCK && $DT_TIME - $LOCK['time'] < 3600 && $LOCK['times'] >= 2) $MOD['captcha_login'] = 1;
+ isset($auth) or $auth = '';
+ if($_userid) $auth = '';
+ if($auth) {
+ $auth = decrypt($auth, DT_KEY.'LOGIN');
+ $_auth = explode('|', $auth);
+ if($_auth[0] == 'LOGIN' && check_name($_auth[1]) && strlen($_auth[2]) >= $MOD['minpassword'] && $DT_TIME >= intval($_auth[3]) && $DT_TIME - intval($_auth[3]) < 30) {
+ $submit = 1;
+ $username = $_auth[1];
+ $password = $_auth[2];
+ $MOD['captcha_login'] = $captcha = 0;
+ }
+ }
+ $action = 'login';
+ if($submit) {
+ captcha($captcha, $MOD['captcha_login']);
+ $username = trim($username);
+ $password = trim($password);
+ if(strlen($username) < 3) message($L['login_msg_username']);
+ if(strlen($password) < 5) message($L['login_msg_password']);
+ $goto = isset($goto) ? true : false;
+ if($goto) $forward = $MOD['linkurl'];
+ $api_msg = $api_url = '';
+ $cookietime = $MOD['login_time'] >= 86400 ? $MOD['login_time'] : 0;
+ if(is_email($username)) {
+ $condition = "email='$username' AND vemail=1";
+ } else if(is_mobile($username)) {
+ $condition = "mobile='$username' AND vmobile=1";
+ } else if(check_name($username)) {
+ $condition = "username='$username'";
+ } else {
+ if($MOD['passport']) {
+ if(strlen($username) > $MOD['maxusername']) message($L['login_msg_username']);
+ $condition = "passport='$username'";
+ } else {
+ message($L['login_msg_not_member']);
+ }
+ }
+ $r = $db->get_one("SELECT username,passport,password,passsalt,loginip,mobile,vmobile FROM {$DT_PRE}member WHERE {$condition} ORDER BY userid");
+ if($r) {
+ if($MOD['verfiy_login'] && $could_sms && is_mobile($r['mobile']) && $r['vmobile'] && $r['loginip'] != DT_IP) {
+ if(ip2area($r['loginip']) != ip2area(DT_IP)) {
+ if($r['password'] != dpassword($password, $r['passsalt'])) message($L['member_login_password_bad']);
+ dheader('?action=sms&auth='.encrypt($r['mobile'], DT_KEY.'VSMS').'&forward='.$_forward);
+ }
+ }
+ $username = $r['username'];
+ $passport = $r['passport'];
+ if($MOD['passport'] == 'uc') include DT_ROOT.'/api/'.$MOD['passport'].'.inc.php';
+ } else {
+ $passport = $username;
+ if($MOD['passport'] == 'uc') include DT_ROOT.'/api/'.$MOD['passport'].'.inc.php';
+ message($L['login_msg_not_member']);
+ }
+ $user = $do->login($username, $password, $cookietime);
+ if($user) {
+ if($MOD['passport'] && $MOD['passport'] != 'uc') {
+ $api_url = '';
+ $user['password'] = is_md5($password) ? $password : md5($password);
+ if(strtoupper($MOD['passport_charset']) != DT_CHARSET) $user = convert($user, DT_CHARSET, $MOD['passport_charset']);
+ extract($user);
+ include DT_ROOT.'/api/'.$MOD['passport'].'.inc.php';
+ if($api_url) $forward = $api_url;
+ }
+ if($DT['login_log'] == 2) $do->login_log($username, $password, $user['passsalt'], 0);
+ if($api_msg) message($api_msg, $forward, -1);
+ message($api_msg, $forward);
+ } else {
+ if($DT['login_log'] == 2) $do->login_log($username, $password, $user['passsalt'], 0, $do->errmsg);
+ message($do->errmsg, '?action=login&forward='.urlencode($forward));
+ }
+ }
+ $register = isset($register) && $username ? 1 : 0;
+ $head_title = $register ? $L['login_title_reg'] : $L['login_title'];
+ break;
+}
+isset($username) or $username = $_username;
+isset($password) or $password = '';
+$username or $username = get_cookie('username');
+check_name($username) or $username = '';
+$oa = 0;
+foreach($OAUTH as $v) {
+ if($v['enable']) {
+ $oa = 1;
+ break;
+ }
+}
+if($DT_PC) {
+ //
+} else {
+ if($oa) {
+ if(in_array($DT_MBS, array('weixin', 'wxxcx'))) {
+ $OAUTH = array_merge(array('wechat' => $OAUTH['wechat']), $OAUTH);
+ } else if(in_array($DT_MBS, array('qq', 'tim'))) {
+ $OAUTH = array_merge(array('qq' => $OAUTH['qq']), $OAUTH);
+ } else if(in_array($DT_MBS, array('weibo'))) {
+ $OAUTH = array_merge(array('sina' => $OAUTH['sina']), $OAUTH);
+ }
+ }
+ $js_pull = 0;
+ $head_name = $head_title;
+ $foot = 'my';
+}
+include template('login', $module);
+?>
\ No newline at end of file
diff --git a/module/member/logout.inc.php b/module/member/logout.inc.php
new file mode 100644
index 0000000..7d94fdf
--- /dev/null
+++ b/module/member/logout.inc.php
@@ -0,0 +1,23 @@
+logout();
+$session = new dsession();
+session_destroy();
+if($DT_PC) {
+ $forward or $forward = DT_PATH;
+} else {
+ $forward = DT_MOB.'my.php';
+}
+$action = 'logout';
+$api_msg = $api_url = '';
+if($MOD['passport']) {
+ include DT_ROOT.'/api/'.$MOD['passport'].'.inc.php';
+ if($api_url) $forward = $api_url;
+}
+#if($MOD['sso']) include DT_ROOT.'/api/sso.inc.php';
+if($api_msg) message($api_msg, $forward, -1);
+message($api_msg, $forward);
+?>
\ No newline at end of file
diff --git a/module/member/message.class.php b/module/member/message.class.php
new file mode 100644
index 0000000..6ec4bae
--- /dev/null
+++ b/module/member/message.class.php
@@ -0,0 +1,336 @@
+userid = $_userid;
+ $this->username = $_username;
+ }
+
+ function message() {
+ $this->__construct();
+ }
+
+ function is_message($message) {
+ global $L;
+ if(!is_array($message)) return false;
+ if(empty($message['title'])) return $this->_($L['pass_title']);
+ if(empty($message['content'])) return $this->_($L['pass_content']);
+ if(DT_MAX_LEN && strlen(clear_img($message['content'])) > DT_MAX_LEN) return $this->_(lang('message->pass_max'));
+ return true;
+ }
+
+ function is_member($username) {
+ return DB::get_one("SELECT userid FROM ".DT_PRE."member WHERE username='$username'");
+ }
+
+ function send($message) {
+ global $DT, $MODULE, $MOD, $_email, $L;
+ if(!$this->is_message($message)) return false;
+ $message['title'] = dhtmlspecialchars(trim($message['title']));
+ $message['content'] = dsafe(addslashes(save_remote(save_local(stripslashes($message['content'])))));
+ if(preg_match("/(embed|object)/i", $message['content'])) return false;
+ if(isset($message['save'])) {
+ DB::query("INSERT INTO ".DT_PRE."message(title,typeid,content,fromuser,touser,addtime,ip,status) values('$message[title]','$message[typeid]','$message[content]','$this->username','$message[touser]','".DT_TIME."','".DT_IP."','1')");
+ } else {
+ if(substr_count($message['touser'], ' ') > ($MOD['maxtouser']-1)) return $this->_(lang($L['message_send_max'], array($MOD['maxtouser'])));
+ $tousers = array();
+ $feedback = isset($message['feedback']) ? 1 : 0;
+ foreach(explode(' ', $message['touser']) as $touser) {
+ $touser = strtolower($touser);
+ $user = DB::get_one("SELECT black FROM ".DT_PRE."member_misc WHERE username='$touser'");
+ if($user) {
+ $blacks = $user['black'] ? explode(' ', $user['black']) : array();
+ if(!in_array($this->username, $blacks) && !in_array($touser, $tousers)) {
+ $tousers[] = $touser;
+ if(isset($message['copy'])) DB::query("INSERT INTO ".DT_PRE."message (title,typeid,content,fromuser,touser,addtime,ip,feedback,status) VALUES ('$message[title]','$message[typeid]','$message[content]','$this->username','$touser','".DT_TIME."','".DT_IP."','$feedback','2')");
+ DB::query("UPDATE ".DT_PRE."member SET message=message+1 WHERE username='$touser'");
+ DB::query("INSERT INTO ".DT_PRE."message (title,typeid,content,fromuser,touser,addtime,ip,feedback,status) VALUES ('$message[title]','$message[typeid]','$message[content]','$this->username','$touser','".DT_TIME."','".DT_IP."','$feedback','3')");
+ }
+ }
+ }
+ }
+ $this->itemid = DB::insert_id();
+ clear_upload($message['content'], $this->itemid, 'message');
+ return true;
+ }
+
+ function edit($message) {
+ global $L;
+ if(!$this->is_message($message)) return false;
+ $r = $this->get_one();
+ if($r['status'] != 1 || $r['fromuser'] != $this->username) return $this->_($L['message_msg_edit']);
+ clear_upload($message['content'], $this->itemid, 'message');
+ $message['title'] = dhtmlspecialchars(trim($message['title']));
+ $message['content'] = dsafe(addslashes(save_remote(save_local(stripslashes($message['content'])))));
+ delete_diff($message['content'], $r['content']);
+ DB::query("UPDATE ".DT_PRE."message SET title='$message[title]',content='$message[content]' WHERE itemid='$this->itemid' ");
+ if(isset($message['send'])) return $this->send($message);
+ return true;
+ }
+
+ function get_one() {
+ return DB::get_one("SELECT * FROM ".DT_PRE."message WHERE itemid='$this->itemid'");
+ }
+
+ function get_list($condition, $order = 'itemid DESC') {
+ global $MODULE, $pages, $page, $pagesize, $offset, $items, $L, $sum, $kw;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM ".DT_PRE."message WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $messages = array();
+ $result = DB::query("SELECT * FROM ".DT_PRE."message WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], $L['message_list_date']);
+ $r['alt'] = $r['title'];
+ $r['dtitle'] = dsubstr($r['title'], 55, '...');
+ if($kw) $r['title'] = str_replace($kw, ''.$kw.' ', $r['title']);
+ $r['user'] = $r['status'] > 2 ? ($r['fromuser'] ? $r['fromuser'] : $L['message_from_system']) : $r['touser'];
+ if($r['fromuser']) {
+ $r['user'] = $r['status'] > 2 ? $r['fromuser'] : $r['touser'];
+ $r['userurl'] = userurl($r['user']);
+ } else {
+ $r['user'] = $r['typeid'] == 4 ? $L['message_from_system'] : $L['guest'];
+ $r['userurl'] = '';
+ }
+ if($r['status'] > 2) {
+ if($r['isread']) $r['feedback'] = 0;
+ } else {
+ $r['isread'] = 1;
+ $r['feedback'] = 0;
+ }
+ $messages[] = $r;
+ }
+ return $messages;
+ }
+
+ function get_sys() {
+ global $_groupid, $L;
+ $messages = array();
+ $result = DB::query("SELECT * FROM ".DT_PRE."message WHERE groupids<>'' ORDER BY itemid DESC", 'CACHE');
+ while($r = DB::fetch_array($result)) {
+ $groupids = explode(',', $r['groupids']);
+ if(!in_array($_groupid, $groupids)) continue;
+ $r['user'] = $L['message_from_notice'];
+ $r['adddate'] = timetodate($r['addtime'], $L['message_list_date']);
+ $messages[] = $r;
+ }
+ return $messages;
+ }
+
+ function export($message) {
+ global $module, $DT, $L;
+ $message['status'] = intval($message['status']);
+ if(!in_array($message['status'], array(1, 2, 3 ,4))) return false;
+ $status = $message['status'];
+ $fromtime = isset($message['fromdate']) && is_date($message['fromdate']) ? datetotime($message['fromdate'].' 0:0:0') : 0;
+ $totime = isset($message['todate']) && is_date($message['todate']) ? datetotime($message['todate'].' 23:59:59') : 0;
+ $condition = "status='$status'";
+ $condition .= $status > 2 ? " AND touser='$this->username'" : " AND fromuser='$this->username'";
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if(isset($message['isread'])) $condition .= " AND isread=0 ";
+ $data = '';
+ $result = DB::query("SELECT * FROM ".DT_PRE."message WHERE $condition ORDER BY itemid DESC Limit 100");
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], $L['message_list_date']);
+ $r['fromuser'] = $r['fromuser'] ? $r['fromuser'] : 'system';
+ $data .= ''.$r['title'].' '.$r['fromuser'].'@'.$r['addtime'].' '.$r['content'].' ';
+ }
+ if($data) {
+ $names = $L['message_names'];
+ $filename = 'message-'.timetodate(DT_TIME, 'YmdHis');
+ $data = ''.$this->username.' '.$names[$status].''.$DT['sitename'].' '.timetodate(DT_TIME, 5).' - Powered By DESTOON.COM '.$data.' ';
+ ob_start();
+ header('Cache-control: max-age=31536000');
+ header('Expires: '.gmdate('D, d M Y H:i:s', DT_TIME + 31536000).' GMT');
+ header('Content-Length: '.strlen($data));
+ header('Content-Disposition:attachment; filename='.$filename.'.htm');
+ header('Content-Type:application/octet-stream');
+ echo $data;
+ exit;
+ } else {
+ $this->errmsg = $L['message_msg_null'];
+ return false;
+ }
+ }
+
+ function clear($status) {
+ if($status == 4 || $status == 3) {
+ DB::query("DELETE FROM ".DT_PRE."message WHERE status='$status' AND touser='$this->username' ");
+ if($status == 3) DB::query("UPDATE ".DT_PRE."member SET message=0 WHERE username='$this->username' ");
+ } else if($status == 2 || $status == 1) {
+ DB::query("DELETE FROM ".DT_PRE."message WHERE status='$status' AND fromuser='$this->username' ");
+ }
+ }
+
+ function delete($recycle = 0) {
+ if(!$this->itemid) return false;
+ $itemids = is_array($this->itemid) ? implode(',', $this->itemid) : intval($this->itemid);
+ $result = DB::query("SELECT * FROM ".DT_PRE."message WHERE itemid IN($itemids) ORDER BY itemid DESC");
+ while($r = DB::fetch_array($result)) {
+ if(defined('DT_ADMIN')) {
+ if($r['status'] == 3 && !$r['isread']) DB::query("UPDATE ".DT_PRE."member SET message=message-1 WHERE username='$r[touser]' ");
+ DB::query("DELETE FROM ".DT_PRE."message WHERE itemid='$r[itemid]'");
+ } else {
+ if($r['status'] == 4) {
+ if($this->username == $r['touser']) $this->_delete($r['itemid']);
+ } else if($r['status'] == 3) {
+ if($this->username == $r['touser']) {
+ if($recycle) {
+ DB::query("UPDATE ".DT_PRE."message SET status=4 WHERE itemid='$r[itemid]' ");
+ } else {
+ $this->_delete($r['itemid']);
+ }
+ if(!$r['isread']) DB::query("UPDATE ".DT_PRE."member SET message=message-1 WHERE username='$this->username' ");
+ }
+ } else if($r['status'] == 2 || $r['status'] == 1) {
+ if($this->username == $r['fromuser']) $this->_delete($r['itemid']);
+ }
+ }
+ }
+ }
+
+ function mark() {
+ if(!$this->itemid) return false;
+ $itemids = is_array($this->itemid) ? implode(',', $this->itemid) : intval($this->itemid);
+ $condition = "status=3 AND isread=0 AND touser='$this->username' AND itemid IN($itemids)";
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM ".DT_PRE."message WHERE $condition");
+ if($r['num']) {
+ DB::query("UPDATE ".DT_PRE."message SET isread=1 WHERE $condition");
+ DB::query("UPDATE ".DT_PRE."member SET message=message-$r[num] WHERE username='$this->username' ");
+ }
+ }
+
+ function markall() {
+ DB::query("UPDATE ".DT_PRE."message SET isread=1 WHERE status=3 AND isread=0 AND touser='$this->username'");
+ DB::query("UPDATE ".DT_PRE."member SET message=0 WHERE username='$this->username' ");
+ }
+
+ function restore() {
+ if(!$this->itemid) return false;
+ $itemids = is_array($this->itemid) ? implode(',', $this->itemid) : intval($this->itemid);
+ $result = DB::query("SELECT * FROM ".DT_PRE."message WHERE itemid IN($itemids) ORDER BY itemid DESC");
+ while($r = DB::fetch_array($result)) {
+ if($r['status'] == 4 && $this->username == $r['touser']) {
+ DB::query("UPDATE ".DT_PRE."message SET status=3 WHERE itemid='$r[itemid]' ");
+ if(!$r['isread']) DB::query("UPDATE ".DT_PRE."member SET message=message+1 WHERE username='$this->username' ");
+ }
+ }
+ }
+
+ function read() {
+ DB::query("UPDATE ".DT_PRE."message SET isread=1 WHERE itemid='$this->itemid'");
+ DB::query("UPDATE ".DT_PRE."member SET message=message-1 WHERE userid='$this->userid'");
+ }
+
+ function color($style) {
+ $message = $this->get_one();
+ if($message['status'] == 3 && $message['touser'] == $this->username) {
+ DB::query("UPDATE ".DT_PRE."message SET style='$style' WHERE itemid='$this->itemid'");
+ }
+ }
+
+ function feedback($r) {
+ global $L;
+ $r or $r = $this->get_one();
+ $message = array();
+ $message['typeid'] = 0;
+ $message['touser'] = $r['fromuser'];
+ $message['title'] = lang($L['message_feedback_title'], array(dsubstr($r['title'], 20, '...')));
+ $message['content'] = lang($L['message_feedback_content'], array($this->username, timetodate(DT_TIME, 5), $r['title'], timetodate($r['addtime'], 5), $r['content']));
+ $this->send($message);
+ }
+
+ function fix_message() {
+ global $_username, $_message;
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM ".DT_PRE."message WHERE touser='$_username' AND status=3 AND isread=0");
+ $num = intval($r['num']);
+ if($_message != $num) {
+ DB::query("UPDATE ".DT_PRE."member SET message='$num' WHERE username='$_username'");
+ dheader('message.php');
+ }
+ }
+
+ function _is_message($message) {
+ global $L;
+ if(!is_array($message)) return false;
+ if($message['type']) {
+ if(!isset($message['groupids']) || !is_array($message['groupids']) || empty($message['groupids'])) return $this->_($L['message_pass_groupid']);
+ } else {
+ if(!$message['touser']) return $this->_($L['message_pass_touser']);
+ }
+ if(!$message['title'] || !$message['content']) return $this->_($L['message_pass_title']);
+ return true;
+ }
+
+ function _send($message) {
+ if(!$this->_is_message($message)) return false;
+ $message['title'] = dhtmlspecialchars(trim($message['title']));
+ $message['content'] = dsafe(addslashes(save_remote(save_local(stripslashes($message['content'])))));
+ if($message['type']) {
+ $message['groupids'] = implode(',', $message['groupids']);
+ DB::query("INSERT INTO ".DT_PRE."message(title,content,fromuser,touser,addtime,status,groupids) values('$message[title]','$message[content]','$this->username','','".DT_TIME."','0','$message[groupids]')");
+ } else {
+ foreach(explode(' ', $message['touser']) as $touser) {
+ send_message($touser, $message['title'], stripslashes($message['content']));
+ }
+ }
+ clear_upload($message['content'], DB::insert_id(), 'message');
+ return true;
+ }
+
+ function _edit($message) {
+ if(!$this->_is_message($message)) return false;
+ clear_upload($message['content'], $this->itemid, 'message');
+ $message['title'] = dhtmlspecialchars(trim($message['title']));
+ $message['content'] = dsafe(addslashes(save_remote(save_local(stripslashes($message['content'])))));
+ $message['groupids'] = implode(',', $message['groupids']);
+ DB::query("UPDATE ".DT_PRE."message SET title='$message[title]',content='$message[content]',groupids='$message[groupids]' WHERE itemid='$this->itemid' ");
+ return true;
+ }
+
+ function _clear($message) {
+ global $L;
+ $message['status'] = intval($message['status']);
+ if(!in_array($message['status'], array(0, 1, 2, 3 ,4))) return false;
+ $status = $message['status'];
+ $fromtime = isset($message['fromdate']) && is_time($message['fromdate']) ? datetotime($message['fromdate']) : 0;
+ $totime = isset($message['todate']) && is_time($message['todate']) ? datetotime($message['todate']) : 0;
+ $condition = "1";
+ if($status) $condition .= " AND status='$status'";
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if(isset($message['isread'])) $condition .= " AND isread=1";
+ if(isset($message['username'])) $condition .= " AND touser='$message[username]'";
+ DB::query("DELETE FROM ".DT_PRE."message WHERE $condition");
+ return true;
+ }
+
+ function _delete($itemid) {
+ $this->itemid = $itemid;
+ $r = $this->get_one();
+ if($r['fromuser']) {
+ $userid = get_user($r['fromuser']);
+ if($r['content']) delete_local($r['content'], $userid);
+ }
+ DB::query("DELETE FROM ".DT_PRE."message WHERE itemid='$itemid' ");
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/member/my.inc.php b/module/member/my.inc.php
new file mode 100644
index 0000000..b19ed25
--- /dev/null
+++ b/module/member/my.inc.php
@@ -0,0 +1,12 @@
+
\ No newline at end of file
diff --git a/module/member/news.inc.php b/module/member/news.inc.php
new file mode 100644
index 0000000..77412da
--- /dev/null
+++ b/module/member/news.inc.php
@@ -0,0 +1,125 @@
+ -1) or dheader(($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).'account.php?action=group&itemid=1');
+if($MG['type'] && !$_edittime && $action == 'add') dheader($MODULE[2]['linkurl'].'edit.php?tab=2');
+require DT_ROOT.'/module/'.$module.'/common.inc.php';
+require DT_ROOT.'/include/post.func.php';
+include load('my.lang');
+$TYPE = get_type('news-'.$_userid);
+$menu_id = 2;
+require DT_ROOT.'/module/'.$module.'/news.class.php';
+$do = new news();
+switch($action) {
+ case 'add':
+ if($_credit < 0 && $MOD['credit_less']) dheader('credit.php?action=less');
+ if($MG['hour_limit']) {
+ $today = $DT_TIME - 3600;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}news WHERE username='$_username' AND addtime>$today");
+ if($r && $r['num'] >= $MG['hour_limit']) dalert(lang($L['hour_limit'], array($MG['hour_limit'])), '?action=index');
+ }
+ if($MG['day_limit']) {
+ $today = $DT_TODAY - 86400;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}news WHERE username='$_username' AND addtime>$today");
+ if($r && $r['num'] >= $MG['day_limit']) dalert(lang($L['day_limit'], array($MG['day_limit'])), '?action=index');
+ }
+ if($MG['news_limit']) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}news WHERE username='$_username' AND status>0");
+ if($r['num'] >= $MG['news_limit']) dalert(lang($L['limit_add'], array($MG['news_limit'], $r['num'])), '?action=index');
+ }
+ if($submit) {
+ if($do->pass($post)) {
+ $post['username'] = $_username;
+ $post['level'] = $post['addtime'] = 0;
+ $need_check = $MOD['news_check'] == 2 ? $MG['check'] : $MOD['news_check'];
+ $post['status'] = get_status(3, $need_check);
+ $do->add($post);
+ dmsg($L['op_add_success'], '?status='.$post['status']);
+ } else {
+ message($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ $$v = '';
+ }
+ $content = '';
+ $typeid = 0;
+ $type_select = type_select($TYPE, 0, 'post[typeid]', $L['default_type']);
+ $head_title = $L['news_title_add'];
+ }
+ break;
+ case 'edit':
+ $itemid or message();
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['username'] != $_username) message();
+ if($submit) {
+ if($do->pass($post)) {
+ $post['username'] = $_username;
+ $need_check = $MOD['news_check'] == 2 ? $MG['check'] : $MOD['news_check'];
+ $post['status'] = get_status($item['status'], $need_check);
+ $post['level'] = $item['level'];
+ $post['addtime'] = timetodate($item['addtime']);
+ $do->edit($post);
+ if($post['status'] < 3 && $item['status'] > 2) history($moduleid, 'news-'.$itemid, 'set', $item);
+ if($post['status'] == 2) dmsg($L['op_edit_check'], '?status='.$post['status']);
+ dmsg($L['op_edit_success'], $forward);
+ } else {
+ message($do->errmsg);
+ }
+ } else {
+ extract($item);
+ $addtime = timetodate($addtime);
+ $type_select = type_select($TYPE, 0, 'post[typeid]', $L['default_type'], $typeid);
+ $head_title = $L['news_title_edit'];
+ }
+ break;
+ case 'delete':
+ $itemid or message($L['news_msg_choose']);
+ $itemids = is_array($itemid) ? $itemid : array($itemid);
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if($item && $item['username'] == $_username) $do->recycle($itemid);
+ }
+ dmsg($L['op_del_success'], $forward);
+ break;
+ default:
+ $status = isset($status) ? intval($status) : 3;
+ in_array($status, array(1, 2, 3)) or $status = 3;
+ $typeid = isset($typeid) ? ($typeid === '' ? -1 : intval($typeid)) : -1;
+ $type_select = type_select($TYPE, 0, 'typeid', $L['default_type'], $typeid, '', $L['all_type']);
+ $condition = "username='$_username' AND status=$status";
+ if($keyword) $condition .= match_kw('title', $keyword);
+ if($typeid > -1) $condition .= " AND typeid=$typeid";
+ $lists = $do->get_list($condition);
+ foreach($lists as $k=>$v) {
+ $lists[$k]['type'] = $lists[$k]['typeid'] && isset($TYPE[$lists[$k]['typeid']]) ? set_style($TYPE[$lists[$k]['typeid']]['typename'], $TYPE[$lists[$k]['typeid']]['style']) : $L['default_type'];
+ }
+ $head_title = $L['news_title'];
+ break;
+}
+$nums = array();
+$limit_used = 0;
+for($i = 1; $i < 4; $i++) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}news WHERE username='$_username' AND status=$i");
+ $nums[$i] = $r['num'];
+ $limit_used += $r['num'];
+}
+$limit_free = $MG['news_limit'] && $MG['news_limit'] > $limit_used ? $MG['news_limit'] - $limit_used : 0;
+if($DT_PC) {
+ $menu_id = 2;
+} else {
+ if(isset($lists)) {
+ $time = 'addtime';
+ foreach($lists as $k=>$v) {
+ $lists[$k]['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $v['linkurl']);
+ $lists[$k]['date'] = timetodate($v[$time], 5);
+ }
+ }
+ if((!$action || $action == 'index') && !$kw) $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : 'biz.php');
+ if($pages) $pages = mobile_pages($items, $page, $pagesize);
+ $head_name = $head_title;
+}
+include template('news', $module);
+?>
\ No newline at end of file
diff --git a/module/member/page.class.php b/module/member/page.class.php
new file mode 100644
index 0000000..699c09e
--- /dev/null
+++ b/module/member/page.class.php
@@ -0,0 +1,194 @@
+table = DT_PRE.'page';
+ $this->table_data = DT_PRE.'page_data';
+ $this->fields = array('title','style','status','username','addtime','editor','edittime','linkurl','listorder','note');
+ }
+
+ function page() {
+ $this->__construct();
+ }
+
+ function pass($post) {
+ global $L;
+ if(!is_array($post)) return false;
+ if(!$post['title']) return $this->_($L['pass_title']);
+ if(!$post['content']) return $this->_($L['pass_content']);
+ if(DT_MAX_LEN && strlen(clear_img($post['content'])) > DT_MAX_LEN) $this->_(lang('message->pass_max'));
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $_username, $_userid, $_cname;
+ $post['editor'] = $_cname ? $_cname : $_username;
+ $post['edittime'] = DT_TIME;
+ $post['title'] = trim($post['title']);
+ $post['listorder'] = intval($post['listorder']);
+ if($this->itemid) {
+ $new = $post['content'];
+ $r = $this->get_one();
+ $old = $r['content'];
+ delete_diff($new, $old);
+ } else {
+ $post['addtime'] = DT_TIME;
+ }
+ $content = $post['content'];
+ unset($post['content']);
+ $post = dhtmlspecialchars($post);
+ $post['content'] = dsafe($content);
+ if($MOD['page_clear'] || $MOD['page_save']) {
+ $post['content'] = stripslashes($post['content']);
+ $post['content'] = save_local($post['content']);
+ if($MOD['page_clear']) $post['content'] = clear_link($post['content']);
+ if($MOD['page_save']) $post['content'] = save_remote($post['content']);
+ $post['content'] = addslashes($post['content']);
+ }
+ return array_map("trim", $post);
+ }
+
+ function get_one($condition = '') {
+ return DB::get_one("SELECT * FROM {$this->table} n,{$this->table_data} c WHERE n.itemid=c.itemid AND n.itemid='$this->itemid' $condition");
+ }
+
+ function get_list($condition = 'status=3', $order = 'listorder DESC,addtime DESC') {
+ global $MOD, $pages, $page, $pagesize, $offset, $items, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['title'] = set_style($r['title'], $r['style']);
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $MOD, $L;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ DB::query("INSERT INTO {$this->table_data} (itemid,content) VALUES ('$this->itemid', '$post[content]')");
+ $this->update($this->itemid);
+ if($post['username'] && $MOD['credit_add_page']) {
+ credit_add($post['username'], $MOD['credit_add_page']);
+ credit_record($post['username'], $MOD['credit_add_page'], 'system', $L['page_record_add'], 'ID:'.$this->itemid);
+ }
+ clear_upload($post['content'], $this->itemid, $this->table);
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ DB::query("UPDATE {$this->table_data} SET content='$post[content]' WHERE itemid=$this->itemid");
+ $this->update($this->itemid);
+ clear_upload($post['content'], $this->itemid, $this->table);
+ if($post['status'] > 2) history(2, 'page-'.$this->itemid, 'del');
+ return true;
+ }
+
+ function update($itemid) {
+ $r = DB::get_one("SELECT username FROM {$this->table} WHERE itemid=$itemid");
+ $linkurl = userurl($r['username'], 'file=introduce&itemid='.$itemid);
+ return DB::query("UPDATE {$this->table} SET linkurl='$linkurl' WHERE itemid=$itemid");
+ }
+
+ function recycle($itemid) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->recycle($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=0 WHERE itemid=$itemid");
+ return true;
+ }
+ }
+
+ function restore($itemid) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->restore($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=3 WHERE itemid=$itemid");
+ return true;
+ }
+ }
+
+ function delete($itemid, $all = true) {
+ global $MOD, $L;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->delete($v); }
+ } else {
+ $this->itemid = $itemid;
+ $r = $this->get_one();
+ $userid = get_user($r['username']);
+ if($r['content']) delete_local($r['content'], $userid);
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ DB::query("DELETE FROM {$this->table_data} WHERE itemid=$itemid");
+ if($r['username'] && $MOD['credit_del_page']) {
+ credit_add($r['username'], -$MOD['credit_del_page']);
+ credit_record($r['username'], -$MOD['credit_del_page'], 'system', $L['page_record_del'], 'ID:'.$this->itemid);
+ }
+ history(2, 'page-'.$itemid, 'del');
+ }
+ }
+
+ function check($itemid) {
+ global $_username;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->check($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=3,editor='$_username',edittime=".DT_TIME." WHERE itemid=$itemid");
+ history(2, 'page-'.$itemid, 'del');
+ return true;
+ }
+ }
+
+ function reject($itemid) {
+ global $_username;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->reject($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=1,editor='$_username',edittime=".DT_TIME." WHERE itemid=$itemid");
+ return true;
+ }
+ }
+
+ function clear() {
+ $result = DB::query("SELECT itemid FROM {$this->table} WHERE status=0");
+ while($r = DB::fetch_array($result)) {
+ $this->delete($r['itemid']);
+ }
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/member/page.inc.php b/module/member/page.inc.php
new file mode 100644
index 0000000..787326a
--- /dev/null
+++ b/module/member/page.inc.php
@@ -0,0 +1,112 @@
+ -1) or dheader(($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).'account.php?action=group&itemid=1');
+if($MG['type'] && !$_edittime && $action == 'add') dheader($MODULE[2]['linkurl'].'edit.php?tab=2');
+require DT_ROOT.'/module/'.$module.'/common.inc.php';
+require DT_ROOT.'/include/post.func.php';
+include load('my.lang');
+require DT_ROOT.'/module/'.$module.'/page.class.php';
+$do = new page();
+switch($action) {
+ case 'add':
+ if($_credit < 0 && $MOD['credit_less']) dheader('credit.php?action=less');
+ if($MG['hour_limit']) {
+ $today = $DT_TIME - 3600;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}page WHERE username='$_username' AND addtime>$today");
+ if($r && $r['num'] >= $MG['hour_limit']) dalert(lang($L['hour_limit'], array($MG['hour_limit'])), '?action=index');
+ }
+ if($MG['day_limit']) {
+ $today = $DT_TODAY - 86400;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}page WHERE username='$_username' AND addtime>$today");
+ if($r && $r['num'] >= $MG['day_limit']) dalert(lang($L['day_limit'], array($MG['day_limit'])), '?action=index');
+ }
+ if($MG['page_limit']) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}page WHERE username='$_username' AND status>0");
+ if($r['num'] >= $MG['page_limit']) dalert(lang($L['limit_add'], array($MG['page_limit'], $r['num'])), '?action=index');
+ }
+ if($submit) {
+ if($do->pass($post)) {
+ $post['username'] = $_username;
+ $post['level'] = 0;
+ $need_check = $MOD['page_check'] == 2 ? $MG['check'] : $MOD['page_check'];
+ $post['status'] = get_status(3, $need_check);
+ $do->add($post);
+ dmsg($L['op_add_success'], '?status='.$post['status']);
+ } else {
+ message($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ $$v = '';
+ }
+ $content = '';
+ $head_title = $L['page_title_add'];
+ }
+ break;
+ case 'edit':
+ $itemid or message();
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['username'] != $_username) message();
+ if($submit) {
+ if($do->pass($post)) {
+ $post['username'] = $_username;
+ $need_check = $MOD['page_check'] == 2 ? $MG['check'] : $MOD['page_check'];
+ $post['status'] = get_status($item['status'], $need_check);
+ $post['level'] = $item['level'];
+ $do->edit($post);
+ if($post['status'] < 3 && $item['status'] > 2) history($moduleid, 'page-'.$itemid, 'set', $item);
+ if($post['status'] == 2) dmsg($L['op_edit_check'], '?status='.$post['status']);
+ dmsg($L['op_edit_success'], $forward);
+ } else {
+ message($do->errmsg);
+ }
+ } else {
+ extract($item);
+ $head_title = $L['page_title_edit'];
+ }
+ break;
+ case 'delete':
+ $itemid or message($L['page_msg_choose']);
+ $itemids = is_array($itemid) ? $itemid : array($itemid);
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if($item && $item['username'] == $_username) $do->recycle($itemid);
+ }
+ dmsg($L['op_del_success'], $forward);
+ break;
+ default:
+ $status = isset($status) ? intval($status) : 3;
+ in_array($status, array(1, 2, 3)) or $status = 3;
+ $condition = "username='$_username' AND status=$status";
+ if($keyword) $condition .= match_kw('title', $keyword);
+ $lists = $do->get_list($condition);
+ $head_title = $L['page_title'];
+ break;
+}
+$nums = array();
+$limit_used = 0;
+for($i = 1; $i < 4; $i++) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}page WHERE username='$_username' AND status=$i");
+ $nums[$i] = $r['num'];
+ $limit_used += $r['num'];
+}
+$limit_free = $MG['page_limit'] && $MG['page_limit'] > $limit_used ? $MG['page_limit'] - $limit_used : 0;
+if($DT_PC) {
+ $menu_id = 2;
+} else {
+ if(isset($lists)) {
+ $time = 'addtime';
+ foreach($lists as $k=>$v) {
+ $lists[$k]['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $v['linkurl']);
+ $lists[$k]['date'] = timetodate($v[$time], 5);
+ }
+ }
+ if((!$action || $action == 'index') && !$kw) $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : 'biz.php');
+ if($pages) $pages = mobile_pages($items, $page, $pagesize);
+ $head_name = $head_title;
+}
+include template('page', $module);
+?>
\ No newline at end of file
diff --git a/module/member/promo.class.php b/module/member/promo.class.php
new file mode 100644
index 0000000..be1119e
--- /dev/null
+++ b/module/member/promo.class.php
@@ -0,0 +1,116 @@
+table = DT_PRE.'finance_promo';
+ $this->fields = array('title','price','cost','amount','fromtime','totime','username','open','addtime','editor','edittime','note');
+ }
+
+ function promo() {
+ $this->__construct();
+ }
+
+ function pass($post) {
+ global $L;
+ if(!is_array($post)) return false;
+ if(!trim($post['title'])) return $this->_($L['promo_msg_title']);
+ if(dround($post['price']) < 0.01) return $this->_($L['promo_msg_price']);
+ if($post['cost'] && dround($post['price']) > dround($post['cost'])) return $this->_($L['promo_msg_cost']);
+ if(intval($post['amount']) < 1) return $this->_($L['promo_msg_amount']);
+ if(!is_time($post['fromtime']) || !is_time($post['totime'])) return $this->_($L['promo_msg_date']);
+ if(datetotime($post['fromtime']) > datetotime($post['totime'])) return $this->_($L['promo_msg_date']);
+ return true;
+ }
+
+ function set($post) {
+ global $_username, $_cname;
+ $post['price'] = dround($post['price']);
+ $post['cost'] = dround($post['cost']);
+ $post['amount'] = intval($post['amount']);
+ $post['fromtime'] = datetotime($post['fromtime']);
+ $post['totime'] = datetotime($post['totime']);
+ $post['open'] = $post['open'] ? 1 : 0;
+ $post['editor'] = $_cname ? $_cname : $_username;
+ $post['edittime'] = DT_TIME;
+ if($this->itemid) {
+ //
+ } else {
+ $post['addtime'] = DT_TIME;
+ }
+ $post = dhtmlspecialchars($post);
+ return array_map("trim", $post);
+ }
+
+ function get_one($condition = '') {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$this->itemid $condition");
+ }
+
+ function get_list($condition, $order = 'itemid DESC') {
+ global $MOD, $pages, $page, $pagesize, $offset, $items, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ return true;
+ }
+
+ function delete($itemid) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->delete($v); }
+ } else {
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ }
+ }
+
+ function del($itemid) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->del($v); }
+ } else {
+ DB::query("DELETE FROM ".DT_PRE."finance_coupon WHERE itemid=$itemid");
+ }
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/member/promo.inc.php b/module/member/promo.inc.php
new file mode 100644
index 0000000..5dd82f8
--- /dev/null
+++ b/module/member/promo.inc.php
@@ -0,0 +1,99 @@
+ -1 or dheader(($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).'account.php?action=group&itemid=1');
+require DT_ROOT.'/include/post.func.php';
+$menu_id = 2;
+require DT_ROOT.'/module/'.$module.'/promo.class.php';
+$do = new promo();
+include load('message.lang');
+switch($action) {
+ case 'add':
+ if($MG['promo_limit']) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}finance_promo WHERE username='$_username'");
+ if($r['num'] >= $MG['promo_limit']) dalert(lang($L['limit_add'], array($MG['promo_limit'], $r['num'])), 'goback');
+ }
+ if($submit) {
+ if($do->pass($post)) {
+ $post['open'] = 1;
+ $post['username'] = $_username;
+ $do->add($post);
+ dmsg($L['op_add_success'], '?action=index');
+ } else {
+ message($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ $$v = '';
+ }
+ $fromtime = timetodate($DT_TIME, 3).' 00:00:00';
+ $head_title = $L['promo_title_add'];
+ }
+ break;
+ case 'edit':
+ $itemid or message();
+ $do->itemid = $itemid;
+ $r = $do->get_one();
+ if(!$r || $r['username'] != $_username) message();
+ if($submit) {
+ if($do->pass($post)) {
+ $post['open'] = $r['open'];
+ $post['username'] = $_username;
+ $do->edit($post);
+ dmsg($L['op_edit_success'], $forward);
+ } else {
+ message($do->errmsg);
+ }
+ } else {
+ extract($r);
+ $fromtime = $fromtime ? timetodate($fromtime, 6) : '';
+ $totime = $totime ? timetodate($totime, 6) : '';
+ $head_title = $L['promo_title_edit'];
+ }
+ break;
+ case 'delete':
+ $itemid or message($L['promo_msg_choose']);
+ $itemids = is_array($itemid) ? $itemid : array($itemid);
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if($item && $item['username'] == $_username) $do->delete($itemid);
+ }
+ dmsg($L['op_del_success'], $forward);
+ break;
+ case 'coupon':
+ $condition = "seller='$_username'";
+ isset($username) or $username = '';
+ $pid = isset($pid) ? intval($pid) : '';
+ if(check_name($username)) $condition .= " AND username='$username'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ if($pid) $condition .= " AND pid=$pid";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}finance_coupon WHERE $condition");
+ $items = $r['num'];
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}finance_coupon WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $lists[] = $r;
+ }
+ $head_title = $L['promo_coupon_title'];
+ break;
+ default:
+ $condition = "username='$_username'";
+ if($keyword) $condition .= match_kw('promo', $keyword);
+ $lists = $do->get_list($condition);
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}finance_promo WHERE username='$_username'");
+ $limit_used = $r['num'];
+ $limit_free = $MG['promo_limit'] && $MG['promo_limit'] > $limit_used ? $MG['promo_limit'] - $limit_used : 0;
+ $head_title = $L['promo_title'];
+ break;
+}
+if($DT_PC) {
+ //
+} else {
+ if((!$action || $action == 'index') && !$kw) $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : 'biz.php');
+ $head_name = $head_title;
+}
+include template('promo', $module);
+?>
\ No newline at end of file
diff --git a/module/member/record.inc.php b/module/member/record.inc.php
new file mode 100644
index 0000000..010956e
--- /dev/null
+++ b/module/member/record.inc.php
@@ -0,0 +1,94 @@
+=$fromtime";
+ if($totime) $condition .= " AND paytime<=$totime";
+ if($mid) $condition .= " AND mid=$mid";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ if($currency) $condition .= " AND currency='$currency'";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}finance_pay WHERE $condition");
+ $items = $r['num'];
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}finance_pay WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ $fee = 0;
+ while($r = $db->fetch_array($result)) {
+ $r['paytime'] = timetodate($r['paytime'], 5);
+ $fee += $r['fee'];
+ $lists[] = $r;
+ }
+ $head_title = $L['record_title_pay'];
+ break;
+ case 'award':
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = is_date($fromdate) ? datetotime($fromdate.' 0:0:0') : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = is_date($todate) ? datetotime($todate.' 23:59:59') : 0;
+ $module_select = module_select('mid', $L['module_name'], $mid);
+ if($keyword) $condition .= match_kw('title', $keyword);
+ if($fromtime) $condition .= " AND paytime>=$fromtime";
+ if($totime) $condition .= " AND paytime<=$totime";
+ if($mid) $condition .= " AND mid=$mid";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}finance_award WHERE $condition");
+ $items = $r['num'];
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}finance_award WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ $fee = 0;
+ while($r = $db->fetch_array($result)) {
+ $r['paytime'] = timetodate($r['paytime'], 5);
+ $fee += $r['fee'];
+ $lists[] = $r;
+ }
+ $head_title = $L['record_title_award'];
+ break;
+ default:
+ $BANKS = explode('|', trim($MOD['pay_banks']));
+ $sfields = $L['record_sfields'];
+ $dfields = array('reason', 'amount', 'bank', 'reason', 'note');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = is_date($fromdate) ? datetotime($fromdate.' 0:0:0') : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = is_date($todate) ? datetotime($todate.' 23:59:59') : 0;
+ isset($type) or $type = 0;
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($type) $condition .= $type == 1 ? " AND amount>0" : " AND amount<0" ;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}finance_record WHERE $condition");
+ $items = $r['num'];
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}finance_record WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ $income = $expense = 0;
+ while($r = $db->fetch_array($result)) {
+ $r['addtime'] = timetodate($r['addtime'], 5);
+ $r['amount'] > 0 ? $income += $r['amount'] : $expense += $r['amount'];
+ $lists[] = $r;
+ }
+ $head_title = $L['record_title'];
+ break;
+}
+if($DT_PC) {
+ //
+} else {
+ if((!$action || $action == 'index') && !$kw) $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : '');
+ $head_name = $head_title;
+}
+include template('record', $module);
+?>
\ No newline at end of file
diff --git a/module/member/register.inc.php b/module/member/register.inc.php
new file mode 100644
index 0000000..bc036b2
--- /dev/null
+++ b/module/member/register.inc.php
@@ -0,0 +1,236 @@
+get_one("SELECT userid FROM {$DT_PRE}member WHERE regip='$DT_IP' AND regtime>'$timeout'");
+ if($r) message(lang($L['register_msg_ip'], array($MOD['iptimeout'])), $DT_PC ? DT_PATH : DT_MOB);
+}
+require DT_ROOT.'/include/post.func.php';
+require DT_ROOT.'/module/'.$module.'/member.class.php';
+$do = new member;
+$session = new dsession();
+if($DT['mail_type'] == 'close' && ($MOD['checkuser'] == 2 || $MOD['checkuser'] == 4)) $MOD['checkuser'] = 0;
+if(!$DT['sms'] && ($MOD['checkuser'] == 3 || $MOD['checkuser'] == 4)) $MOD['checkuser'] = 0;
+$could_mail = ($MOD['checkuser'] == 2 || $MOD['checkuser'] == 4) ? 1 : 0;
+$could_sms = ($MOD['checkuser'] == 3 || $MOD['checkuser'] == 4) ? 1 : 0;
+$could_verify = $MOD['checkuser'] < 2 ? 1 : 0;
+isset($sid) or $sid = '';
+$_sid = md5(md5(session_id().DT_KEY));
+$timeout = 180;
+$stepid = 1;
+switch($action) {
+ case 'verify':
+ ($could_verify && $sid == $_sid) or message($L['register_msg_error']);
+ if(!$DT_PC && $MOD['question_register']) $MOD['question_register'] = 0;
+ if($submit) {
+ captcha($captcha, $MOD['captcha_register']);
+ question($answer, $MOD['question_register']);
+ $_SESSION['verify'] = '1';
+ dheader('?reload='.$DT_TIME);
+ }
+ break;
+ case 'mail':
+ ($could_mail && $sid == $_sid) or message($L['register_msg_error']);
+ if($submit) {
+ $_SESSION['email_oppo'] = $_SESSION['email_oppo'] + 1;
+ if($_SESSION['email_oppo'] > 3) $_SESSION['email_code'] = '';
+ (is_email($email) && preg_match("/^[0-9]{6}$/", $code) && isset($_SESSION['email_code']) && $_SESSION['email_code'] == md5($email.'|'.$code.'|REG')) or message($L['register_pass_emailcode']);
+ $_SESSION['email_code'] = '';
+ $user = $db->get_one("SELECT userid FROM {$DT_PRE}member WHERE email='$email'");
+ if($user) message($L['member_email_reg']);
+ $_SESSION['verify'] = $email;
+ dheader('?reload='.$DT_TIME);
+ }
+ break;
+ case 'sendmail':
+ ($could_mail && $sid == $_sid) or exit('close');
+ is_email($email) or exit('format');
+ $msg = captcha($captcha, 1, true);
+ if($msg) exit('captcha');
+ $user = $db->get_one("SELECT userid FROM {$DT_PRE}member WHERE email='$email'");
+ if($user) exit('exist');
+ isset($_SESSION['email_send']) or $_SESSION['email_send'] = 0;
+ isset($_SESSION['email_time']) or $_SESSION['email_time'] = 0;
+ if($_SESSION['email_send'] > 4) exit('max');
+ if($_SESSION['email_time'] && (($DT_TIME - $_SESSION['email_time']) < $timeout)) exit('fast');
+ $emailcode = random(6, '0-9');
+ $_SESSION['email_code'] = md5($email.'|'.$emailcode.'|REG');
+ $_SESSION['email_time'] = $DT_TIME;
+ $_SESSION['email_oppo'] = 0;
+ $_SESSION['email_send'] = $_SESSION['email_send'] + 1;
+ $title = $L['register_msg_emailcode'];
+ $content = ob_template('emailcode', 'mail');
+ send_mail($email, $title, stripslashes($content));
+ #log_write($content, 'mail', 1);
+ exit('ok');
+ break;
+ case 'sms':
+ ($could_sms && $sid == $_sid) or message($L['register_msg_error']);
+ if($submit) {
+ $_SESSION['mobile_oppo'] = $_SESSION['mobile_oppo'] + 1;
+ if($_SESSION['mobile_oppo'] > 3) $_SESSION['mobile_code'] = '';
+ (is_mobile($mobile) && preg_match("/^[0-9]{6}$/", $code) && isset($_SESSION['mobile_code']) && $_SESSION['mobile_code'] == md5($mobile.'|'.$code.'|REG')) or message($L['register_pass_mobilecode']);
+ $_SESSION['mobile_code'] = '';
+ $user = $db->get_one("SELECT userid FROM {$DT_PRE}member WHERE mobile='$mobile'");
+ if($user) message($L['member_mobile_reg']);
+ $_SESSION['verify'] = $mobile;
+ dheader('?reload='.$DT_TIME);
+ }
+ break;
+ case 'sendsms':
+ ($could_sms && $sid == $_sid) or exit('close');
+ is_mobile($mobile) or exit('format');
+ $msg = captcha($captcha, 1, true);
+ if($msg) exit('captcha');
+ $user = $db->get_one("SELECT userid FROM {$DT_PRE}member WHERE mobile='$mobile'");
+ if($user) exit('exist');
+ isset($_SESSION['mobile_send']) or $_SESSION['mobile_send'] = 0;
+ isset($_SESSION['mobile_time']) or $_SESSION['mobile_time'] = 0;
+ if($_SESSION['mobile_send'] > 4) exit('max');
+ if($_SESSION['mobile_time'] && (($DT_TIME - $_SESSION['mobile_time']) < $timeout)) exit('fast');
+ if(max_sms($mobile)) exit('max');
+ $mobilecode = random(6, '0-9');
+ $_SESSION['mobile_code'] = md5($mobile.'|'.$mobilecode.'|REG');
+ $_SESSION['mobile_time'] = $DT_TIME;
+ $_SESSION['mobile_oppo'] = 0;
+ $_SESSION['mobile_send'] = $_SESSION['mobile_send'] + 1;
+ $content = lang('sms->sms_code', array($mobilecode, $MOD['auth_days']*10)).$DT['sms_sign'];
+ send_sms($mobile, $content);
+ #log_write($content, 'sms', 1);
+ exit('ok');
+ break;
+ case 'success':
+ $_auth = isset($auth) ? decrypt($auth, DT_KEY.'LOGIN') : '';
+ substr($_auth, 0, 5) == 'LOGIN' or dheader($DT_PC ? DT_PATH : DT_MOB);
+ $stepid = 3;
+ $url = $DT['file_login'].'?auth='.$auth.'&forward='.urlencode($DT_PC ? $MOD['linkurl'] : DT_MOB.'my.php');
+ break;
+ case 'read':
+ if($DT_PC) {
+ //
+ } else {
+ $js_pull = 0;
+ $head_name = $head_title;
+ }
+ exit(include template('agreement', $module));
+ break;
+ default:
+ if($MOD['checkuser'] == 4) {
+ (is_email($_SESSION['verify']) || is_mobile($_SESSION['verify'])) or dheader('?action=sms&sid='.$_sid);
+ } elseif($MOD['checkuser'] == 3) {
+ is_mobile($_SESSION['verify']) or dheader('?action=sms&sid='.$_sid);
+ } elseif($MOD['checkuser'] == 2) {
+ is_email($_SESSION['verify']) or dheader('?action=mail&sid='.$_sid);
+ } else {
+ $_SESSION['verify'] or dheader('?action=verify&sid='.$_sid);
+ }
+ $FD = $MFD = cache_read('fields-member.php');
+ $CFD = cache_read('fields-company.php');
+ isset($post_fields) or $post_fields = array();
+ if($MFD || $CFD) require DT_ROOT.'/include/fields.func.php';
+ $GROUP = cache_read('group.php');
+ if($submit) {
+ if($sid != $_sid) message($L['check_sign']);
+ $post['passport'] = isset($post['passport']) && $post['passport'] ? $post['passport'] : $post['username'];
+ if($MOD['passport'] == 'uc') {
+ $passport = convert($post['passport'], DT_CHARSET, $MOD['uc_charset']);
+ require DT_ROOT.'/api/uc.inc.php';
+ list($uid, $rt_username, $rt_password, $rt_email) = uc_user_login($passport, $post['password']);
+ if($uid == -2) message($L['register_msg_passport']);
+ }
+ $RG = array();
+ foreach($GROUP as $k=>$v) {
+ if($k > 4 && $v['vip'] == 0) $RG[] = $k;
+ }
+ in_array($post['regid'], $RG) or message($L['register_pass_groupid']);
+ if(!$GROUP[$post['regid']]['type']) $post['company'] = $post['truename'];
+ $post['groupid'] = $MOD['checkuser'] == 1 ? 4 : $post['regid'];
+ if(is_email($_SESSION['verify'])) $post['email'] = $_SESSION['verify'];
+ if(is_mobile($_SESSION['verify'])) $post['mobile'] = $_SESSION['verify'];
+ $post['content'] = $post['introduce'] = $post['thumb'] = $post['banner'] = $post['catid'] = $post['catids'] = '';
+ $post['edittime'] = 0;
+ $inviter = get_cookie('inviter');
+ $post['inviter'] = $inviter ? decrypt($inviter, DT_KEY.'INVITER') : '';
+ check_name($post['inviter']) or $post['inviter'] = '';
+ if($do->pass($post)) {
+ $do->add($post);
+ $userid = $do->userid;
+ $username = $post['username'];
+ $email = $post['email'];
+ $mobile = $post['mobile'];
+ if($MFD) fields_update($post_fields, $do->table_member, $userid, 'userid', $MFD);
+ if($CFD) fields_update($post_fields, $do->table_company, $userid, 'userid', $CFD);
+ if($MOD['passport'] == 'uc') {
+ $uid = uc_user_register($passport, $post['password'], $post['email']);
+ if($uid > 0 && $MOD['uc_bbs']) uc_user_regbbs($uid, $passport, $post['password'], $post['email']);
+ }
+ //send sms
+ if($MOD['welcome_sms'] && $DT['sms'] && is_mobile($post['mobile'])) {
+ $message = lang('sms->wel_reg', array($post['truename'], $DT['sitename'], $post['username'], $post['password']));
+ $message = strip_sms($message);
+ send_sms($post['mobile'], $message);
+ }
+ //send sms
+ if($MOD['checkuser'] != 1) {
+ if($MOD['welcome_message'] || $MOD['welcome_email']) {
+ $title = $L['register_msg_welcome'];
+ $content = ob_template('welcome', 'mail');
+ if($MOD['welcome_message']) send_message($username, $title, $content);
+ if($MOD['welcome_email'] && $DT['mail_type'] != 'close') send_mail($email, $title, $content);
+ }
+ }
+ if(is_email($_SESSION['verify'])) {
+ $db->query("UPDATE {$DT_PRE}member SET vemail=0 WHERE email='$email'");
+ $db->query("UPDATE {$DT_PRE}member SET vemail=1 WHERE userid=$userid");
+ $db->query("INSERT INTO {$DT_PRE}validate (title,history,type,username,ip,addtime,status,editor,edittime) VALUES ('$email','$email','email','$username','$DT_IP','$DT_TIME','3','register','$DT_TIME')");
+ }
+ if(is_mobile($_SESSION['verify'])) {
+ $db->query("UPDATE {$DT_PRE}member SET vmobile=0 WHERE mobile='$mobile'");
+ $db->query("UPDATE {$DT_PRE}member SET vmobile=1 WHERE userid=$userid");
+ $db->query("INSERT INTO {$DT_PRE}validate (title,history,type,username,ip,addtime,status,editor,edittime) VALUES ('$mobile','$mobile','mobile','$username','$DT_IP','$DT_TIME','3','register','$DT_TIME')");
+ }
+ $_SESSION['verify'] = '';
+ dheader('?action=success&auth='.encrypt('LOGIN|'.$username.'|'.$post['password'].'|'.$DT_TIME, DT_KEY.'LOGIN'));
+ } else {
+ message($do->errmsg);
+ }
+ }
+ isset($auth) or $auth = '';
+ $username = $password = $email = $passport = '';
+ if($auth) {
+ $auth = decrypt($auth, DT_KEY.'UC');
+ $auth = explode('|', $auth);
+ $passport = $auth[0];
+ if(check_name($passport)) $username = $passport;
+ $password = $auth[1];
+ $email = is_email($auth[2]) ? $auth[2] : '';
+ if($email) $_SESSION['regemail'] = md5(md5($email.DT_KEY.$DT_IP));
+ }
+ $areaid = $cityid;
+ $stepid = 2;
+ break;
+}
+$head_title = $L['register_title'];
+if($DT_PC) {
+ //
+} else {
+ $js_pull = 0;
+ $head_name = $head_title;
+ $foot = 'my';
+}
+include template('register', $module);
+?>
\ No newline at end of file
diff --git a/module/member/send.inc.php b/module/member/send.inc.php
new file mode 100644
index 0000000..55c948d
--- /dev/null
+++ b/module/member/send.inc.php
@@ -0,0 +1,265 @@
+ 3) $_SESSION['email_code'] = '';
+ (preg_match("/^[0-9]{6}$/", $code) && $_SESSION['email_code'] == md5($email.'|'.$code.'|'.$username.'|SE')) or message($L['register_pass_emailcode']);
+ $db->query("UPDATE {$DT_PRE}member SET vemail=0 WHERE email='$email'");
+ $db->query("UPDATE {$DT_PRE}member SET email='$email',vemail=1 WHERE userid=$_userid");
+ $db->query("INSERT INTO {$DT_PRE}validate (title,history,type,username,ip,addtime,status,editor,edittime) VALUES ('$email','$_email','email','$username','$DT_IP','$DT_TIME','3','send','$DT_TIME')");
+ userclean($username);
+ unset($_SESSION['email_save'], $_SESSION['email_code'], $_SESSION['email_time'], $_SESSION['email_send']);
+ } else if($step == 1) {
+ captcha($captcha);
+ is_email($email) or message($L['member_email_null']);
+ if($email == $_email) message($L['send_email_exist']);
+ $user = $db->get_one("SELECT email FROM {$DT_PRE}member WHERE email='$email'");
+ if($user) message($L['send_email_exist']);
+ $emailcode = random(6, '0-9');
+ $_SESSION['email_save'] = $email;
+ $_SESSION['email_code'] = md5($email.'|'.$emailcode.'|'.$username.'|SE');
+ $_SESSION['email_time'] = $DT_TIME;
+ $_SESSION['email_oppo'] = 0;
+ $_SESSION['email_send'] = $_SESSION['email_send'] + 1;
+ $title = $L['register_msg_emailcode'];
+ $content = ob_template('emailcode', 'mail');
+ send_mail($email, $title, stripslashes($content));
+ #log_write($content, 'mail', 1);
+ } else {
+ $seconds = $second < 180 ? 180 - $second : 0;
+ }
+ $head_title = $L['send_email_title'];
+ break;
+ case 'mobile':
+ login();
+ $could_mobile or message($L['send_sms_close']);
+ $username = $_username;
+ (isset($mobile) && is_mobile($mobile)) or $mobile = '';
+ $session = new dsession();
+ isset($_SESSION['mobile_send']) or $_SESSION['mobile_send'] = 0;
+ isset($_SESSION['mobile_time']) or $_SESSION['mobile_time'] = 0;
+ $second = $DT_TIME - $_SESSION['mobile_time'];
+ if($step == 2) {
+ $mobile = $_SESSION['mobile_save'];
+ is_mobile($mobile) or dheader('?action='.$action);
+ $code = isset($code) ? trim($code) : '';
+ $_SESSION['mobile_oppo'] = $_SESSION['mobile_oppo'] + 1;
+ if($_SESSION['mobile_oppo'] > 3) $_SESSION['mobile_code'] = '';
+ (preg_match("/^[0-9]{6}$/", $code) && $_SESSION['mobile_code'] == md5($mobile.'|'.$code.'|'.$username.'|SM')) or message($L['register_pass_mobilecode']);
+ $db->query("UPDATE {$DT_PRE}member SET vmobile=0 WHERE mobile='$mobile'");
+ $db->query("UPDATE {$DT_PRE}member SET mobile='$mobile',vmobile=1 WHERE userid=$_userid");
+ $db->query("INSERT INTO {$DT_PRE}validate (title,history,type,username,ip,addtime,status,editor,edittime) VALUES ('$mobile','$_mobile','mobile','$username','$DT_IP','$DT_TIME','3','send','$DT_TIME')");
+ userclean($username);
+ unset($_SESSION['mobile_save'], $_SESSION['mobile_code'], $_SESSION['mobile_time'], $_SESSION['mobile_send']);
+ } else if($step == 1) {
+ captcha($captcha);
+ if(!is_mobile($mobile)) message($L['member_mobile_null']);
+ if($mobile == $_mobile) message($L['send_mobile_exist']);
+ $user = $db->get_one("SELECT userid FROM {$DT_PRE}member WHERE mobile='$mobile'");
+ if($user) message($L['send_mobile_exist']);
+ if(max_sms($mobile)) message($L['sms_msg_max']);
+ $mobilecode = random(6, '0-9');
+ $_SESSION['mobile_save'] = $mobile;
+ $_SESSION['mobile_code'] = md5($mobile.'|'.$mobilecode.'|'.$username.'|SM');
+ $_SESSION['mobile_time'] = $DT_TIME;
+ $_SESSION['mobile_oppo'] = 0;
+ $_SESSION['mobile_send'] = $_SESSION['mobile_send'] + 1;
+ $content = lang('sms->sms_code', array($mobilecode, $MOD['auth_days']*10)).$DT['sms_sign'];
+ send_sms($mobile, $content);
+ #log_write($content, 'sms', 1);
+ } else {
+ $seconds = $second < 180 ? 180 - $second : 0;
+ }
+ $head_title = $L['send_mobile_title'];
+ break;
+ case 'contact':
+ $names = array('contact', 'index');
+ if($DT['index'] != 'index') $names[] = $DT['index'];
+ $exts = array('html', 'htm', 'shtml', 'shtm');
+ $contact = '';
+ foreach($names as $name) {
+ if($contact) break;
+ foreach($exts as $ext) {
+ $file = $name.'.'.$ext;
+ if(is_file(DT_ROOT.'/about/'.$file)) {
+ $contact = $file;
+ break;
+ }
+ }
+ }
+ if($DT_PC) {
+ $url = $contact ? DT_PATH.'about/'.$contact : DT_PATH;
+ } else {
+ $url = $contact ? DT_MOB.'about/'.$contact : DT_MOB.'api/about.php';
+ }
+ $head_title = $L['send_password_title'];
+ break;
+ case 'mail':
+ $could_email or message($L['send_mail_close']);
+ (isset($email) && is_email($email)) or $email = '';
+ if($_userid) {
+ is_email($_email) or message($L['send_email_empty'], 'edit.php');
+ $email = $_email;
+ }
+ $session = new dsession();
+ isset($_SESSION['email_send']) or $_SESSION['email_send'] = 0;
+ isset($_SESSION['email_time']) or $_SESSION['email_time'] = 0;
+ $second = $DT_TIME - $_SESSION['email_time'];
+ if($step == 2) {
+ $email = $_SESSION['email_save'];
+ is_email($email) or dheader('?action='.$action);
+ $code = isset($code) ? trim($code) : '';
+ $_SESSION['email_oppo'] = $_SESSION['email_oppo'] + 1;
+ if($_SESSION['email_oppo'] > 3) $_SESSION['email_code'] = '';
+ (preg_match("/^[0-9]{6}$/", $code) && $_SESSION['email_code'] == md5($email.'|'.$code.'|SEM')) or message($L['register_pass_emailcode']);
+ require DT_ROOT.'/module/'.$module.'/member.class.php';
+ $do = new member;
+ if(!$do->is_password($password, $cpassword)) message($do->errmsg);
+ $condition = $_userid ? "userid=$_userid" : "email='$email'";
+ $user = $db->get_one("SELECT userid,username,groupid,email,vemail FROM {$DT_PRE}member WHERE $condition");
+ if($user) {
+ if($user['groupid'] == 2 || $user['groupid'] == 4) message($L['send_password_checking']);
+ $userid = $user['userid'];
+ $username = $user['username'];
+ $salt = random(8);
+ $pass = dpassword($password, $salt);
+ if($_userid) {
+ $db->query("UPDATE {$DT_PRE}member SET payword='$pass',paysalt='$salt' WHERE userid=$userid");
+ } else {
+ $db->query("UPDATE {$DT_PRE}member SET password='$pass',passsalt='$salt' WHERE userid=$userid");
+ }
+ if(!$user['vemail']) {
+ $db->query("UPDATE {$DT_PRE}member SET vemail=0 WHERE email='$email'");
+ $db->query("UPDATE {$DT_PRE}member SET vemail=1 WHERE userid=$userid");
+ $editor = $_userid ? 'payword' : 'password';
+ $db->query("INSERT INTO {$DT_PRE}validate (title,history,type,username,ip,addtime,status,editor,edittime) VALUES ('$email','$user[email]','email','$username','$DT_IP','$DT_TIME','3','$editor','$DT_TIME')");
+ }
+ userclean($username);
+ unset($_SESSION['email_save'], $_SESSION['email_code'], $_SESSION['email_time'], $_SESSION['email_send']);
+ } else {
+ message($L['send_bad_email']);
+ }
+ } else if($step == 1) {
+ captcha($captcha);
+ is_email($email) or message($L['member_email_null']);
+ if($_SESSION['email_send'] > 9) message($L['send_too_many'], '?action='.$action);
+ if($second < 180) message($L['send_too_quick'], '?action='.$action);
+ $condition = $_userid ? "userid=$_userid" : "email='$email'";
+ $user = $db->get_one("SELECT groupid FROM {$DT_PRE}member WHERE $condition");
+ if(!$user) message($L['send_bad_email']);
+ if($user['groupid'] == 2 || $user['groupid'] == 4) message($L['send_password_checking']);
+ $emailcode = random(6, '0-9');
+ $_SESSION['email_save'] = $email;
+ $_SESSION['email_code'] = md5($email.'|'.$emailcode.'|SEM');
+ $_SESSION['email_time'] = $DT_TIME;
+ $_SESSION['email_oppo'] = 0;
+ $_SESSION['email_send'] = $_SESSION['email_send'] + 1;
+ $title = $L['register_msg_emailcode'];
+ $content = ob_template('emailcode', 'mail');
+ send_mail($email, $title, stripslashes($content));
+ #log_write($content, 'mail', 1);
+ } else {
+ $seconds = $second < 180 ? 180 - $second : 0;
+ }
+ $head_title = $L['send_password_title'];
+ break;
+ case 'sms':
+ $could_mobile or message($L['send_sms_close']);
+ (isset($mobile) && is_mobile($mobile)) or $mobile = '';
+ if($_userid) {
+ is_mobile($_mobile) or message($L['send_mobile_empty'], 'edit.php');
+ $mobile = $_mobile;
+ }
+ $session = new dsession();
+ isset($_SESSION['mobile_send']) or $_SESSION['mobile_send'] = 0;
+ isset($_SESSION['mobile_time']) or $_SESSION['mobile_time'] = 0;
+ $second = $DT_TIME - $_SESSION['mobile_time'];
+ if($step == 2) {
+ $mobile = $_SESSION['mobile_save'];
+ is_mobile($mobile) or dheader('?action='.$action);
+ $code = isset($code) ? trim($code) : '';
+ $_SESSION['mobile_oppo'] = $_SESSION['mobile_oppo'] + 1;
+ if($_SESSION['mobile_oppo'] > 3) $_SESSION['mobile_code'] = '';
+ (preg_match("/^[0-9]{6}$/", $code) && $_SESSION['mobile_code'] == md5($mobile.'|'.$code.'|SMS')) or message($L['register_pass_mobilecode']);
+ require DT_ROOT.'/module/'.$module.'/member.class.php';
+ $do = new member;
+ if(!$do->is_password($password, $cpassword)) message($do->errmsg);
+ $condition = $_userid ? "userid=$_userid" : "mobile='$mobile' AND vmobile=1";
+ $user = $db->get_one("SELECT userid,username,groupid,mobile,vmobile FROM {$DT_PRE}member WHERE $condition ORDER BY userid");
+ if($user) {
+ if($user['groupid'] == 2 || $user['groupid'] == 4) message($L['send_password_checking']);
+ $userid = $user['userid'];
+ $username = $user['username'];
+ $salt = random(8);
+ $pass = dpassword($password, $salt);
+ if($_userid) {
+ $db->query("UPDATE {$DT_PRE}member SET payword='$pass',paysalt='$salt' WHERE userid=$userid");
+ if(!$user['vmobile']) {
+ $db->query("UPDATE {$DT_PRE}member SET vmobile=0 WHERE mobile='$mobile'");
+ $db->query("UPDATE {$DT_PRE}member SET vmobile=1 WHERE userid=$userid");
+ $editor = $_userid ? 'payword' : 'password';
+ $db->query("INSERT INTO {$DT_PRE}validate (title,history,type,username,ip,addtime,status,editor,edittime) VALUES ('$mobile','$user[mobile]','mobile','$username','$DT_IP','$DT_TIME','3','$editor','$DT_TIME')");
+ }
+ } else {
+ $db->query("UPDATE {$DT_PRE}member SET password='$pass',passsalt='$salt' WHERE userid=$userid");
+ }
+ userclean($username);
+ unset($_SESSION['mobile_save'], $_SESSION['mobile_code'], $_SESSION['mobile_time'], $_SESSION['mobile_send']);
+ } else {
+ message($L['send_bad_mobile']);
+ }
+ } else if($step == 1) {
+ captcha($captcha);
+ if(!is_mobile($mobile)) message($L['member_mobile_null']);
+ if(max_sms($mobile)) message($L['sms_msg_max'], '?action='.$action);
+ if($_SESSION['mobile_send'] > 4) message($L['send_too_many'], '?action='.$action);
+ if($second < 180) message($L['send_too_quick'], '?action='.$action);
+ $condition = $_userid ? "userid=$_userid" : "mobile='$mobile' AND vmobile=1";
+ $user = $db->get_one("SELECT groupid FROM {$DT_PRE}member WHERE $condition");
+ if(!$user) message($L['send_bad_mobile']);
+ if($user['groupid'] == 2 || $user['groupid'] == 4) message($L['send_password_checking']);
+ $mobilecode = random(6, '0-9');
+ $_SESSION['mobile_save'] = $mobile;
+ $_SESSION['mobile_code'] = md5($mobile.'|'.$mobilecode.'|SMS');
+ $_SESSION['mobile_time'] = $DT_TIME;
+ $_SESSION['mobile_oppo'] = 0;
+ $_SESSION['mobile_send'] = $_SESSION['mobile_send'] + 1;
+ $content = lang('sms->sms_code', array($mobilecode, $MOD['auth_days']*10)).$DT['sms_sign'];
+ send_sms($mobile, $content);
+ #log_write($content, 'sms', 1);
+ } else {
+ $seconds = $second < 180 ? 180 - $second : 0;
+ }
+ $head_title = $L['send_password_title'];
+ break;
+ default:
+ $head_title = $L['send_password_title'];
+ break;
+}
+if($DT_PC) {
+ //
+} else {
+ $head_name = $head_title;
+ if(!$_userid) $foot = 'my';
+}
+include template('send', $module);
+?>
\ No newline at end of file
diff --git a/module/member/sms.inc.php b/module/member/sms.inc.php
new file mode 100644
index 0000000..73d76e7
--- /dev/null
+++ b/module/member/sms.inc.php
@@ -0,0 +1,104 @@
+get_one("SELECT mobile,vmobile FROM {$DT_PRE}member WHERE userid=$_userid");
+if(!$_user['mobile'] || !$_user['vmobile']) message($L['sms_msg_validate'], 'validate.php?action=mobile');
+require DT_ROOT.'/include/post.func.php';
+$mobile = $_user['mobile'];
+$menu_id = 2;
+switch($action) {
+ case 'buy':
+ $fee = $DT['sms_fee'];
+ $fee or message($L['sms_msg_no_price']);
+ if($fee) {
+ $auto = 0;
+ $auth = isset($auth) ? decrypt($auth, DT_KEY.'CG') : '';
+ if($auth && substr($auth, 0, 4) == 'sms|') {
+ $auto = $submit = 1;
+ $total = intval(substr($auth, 4));
+ }
+ if($submit) {
+ $total = intval($total);
+ $total > 0 or message($L['sms_msg_buy_num']);
+ $amount = dround($total*$fee);
+ if($amount > 0) {
+ $amount <= $_money or message($L['money_not_enough']);
+ if($amount <= $DT['quick_pay']) $auto = 1;
+ if(!$auto) {
+ is_payword($_username, $password) or message($L['error_payword']);
+ }
+ money_add($_username, -$amount);
+ money_record($_username, -$amount, $L['in_site'], 'system', $L['sms_buy_note'], $total);
+ sms_add($_username, $total);
+ sms_record($_username, $total, 'system', $L['sms_buy_record'], $amount.$DT['money_unit']);
+ }
+ dmsg($L['sms_buy_success'], '?action=index');
+ }
+ } else {
+ message($L['sms_msg_no_price']);
+ }
+ $head_title = $L['sms_buy_title'];
+ break;
+ case 'record':
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = is_date($fromdate) ? datetotime($fromdate.' 0:0:0') : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = is_date($todate) ? datetotime($todate.' 23:59:59') : 0;
+ $condition = "editor='$_username'";
+ if($keyword) $condition .= match_kw('message', $keyword);
+ if($fromtime) $condition .= " AND sendtime>=$fromtime";
+ if($totime) $condition .= " AND sendtime<=$totime";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}sms WHERE $condition");
+ $items = $r['num'];
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}sms WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['message'] = preg_replace("/:([0-9]{6}),/", ':******,', $r['message']);
+ $r['sendtime'] = $DT_PC ? str_replace(' ', ' ', timetodate($r['sendtime'], 6)) : timetodate($r['sendtime'], 6);
+ $r['num'] = ceil($r['word']/$DT['sms_len']);
+ $lists[] = $r;
+ }
+ $head_title = $L['sms_send_title'];
+ break;
+ default:
+ $sfields = $L['sms_sfields'];
+ $dfields = array('reason', 'amount', 'reason', 'note');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = is_date($fromdate) ? datetotime($fromdate.' 0:0:0') : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = is_date($todate) ? datetotime($todate.' 23:59:59') : 0;
+ isset($type) or $type = 0;
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $condition = "username='$_username'";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($type) $condition .= $type == 1 ? " AND amount>0" : " AND amount<0" ;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}finance_sms WHERE $condition");
+ $items = $r['num'];
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}finance_sms WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ $income = $expense = 0;
+ while($r = $db->fetch_array($result)) {
+ $r['addtime'] = timetodate($r['addtime'], 6);
+ $r['amount'] > 0 ? $income += $r['amount'] : $expense += $r['amount'];
+ $lists[] = $r;
+ }
+ $head_title = $L['sms_title'];
+ break;
+}
+if($DT_PC) {
+ //
+} else {
+ if((!$action || $action == 'index') && !$kw) $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : 'biz.php');
+ $head_name = $head_title;
+}
+include template('sms', $module);
+?>
\ No newline at end of file
diff --git a/module/member/stats.inc.php b/module/member/stats.inc.php
new file mode 100644
index 0000000..3cebafb
--- /dev/null
+++ b/module/member/stats.inc.php
@@ -0,0 +1,250 @@
+get_one("SELECT max(id) AS fid FROM {$DT_PRE}stats_user WHERE username='$_username'");
+ if($r) {
+ $fid = substr($r['fid'], 0, 4).'-'.substr($r['fid'], 4, 2).'-'.substr($r['fid'], 6, 2);
+ } else {
+ $r = $db->get_one("SELECT min(addtime) AS fid FROM {$tb} WHERE homepage='$_username'");
+ if($r) $fid = timetodate($r['fid'], 3);
+ }
+ is_date($fid) or $fid = timetodate(DT_TIME - 86400*30, 3);
+ }
+ if(!is_date($tid)) {
+ $tid = timetodate(DT_TIME - 86400, 3);
+ }
+ if($fid >= $tid) message($L['op_update_success'], '?action=index');
+ $id = str_replace('-', '', $tid);
+ $t = $db->get_one("SELECT itemid FROM {$DT_PRE}stats_user WHERE id='$id' AND username='$_username'");
+ if(!$t) {
+ $ftime = datetotime($tid.' 00:00:00');
+ $ttime = datetotime($tid.' 23:59:59');
+ $ip = $ip_pc = $ip_mb = $pv = $pv_pc = $pv_mb = $rb = $rb_pc = $rb_mb = 0;
+ $pv = $db->count($tb, "homepage='$_username' AND addtime>=$ftime AND addtime<=$ttime");
+ if($pv) {
+ $pv_pc = $db->count($tb, "homepage='$_username' AND addtime>=$ftime AND addtime<=$ttime AND pc=1");
+ $pv_mb = $pv - $pv_pc;
+ $rb = $db->count($tb, "homepage='$_username' AND addtime>=$ftime AND addtime<=$ttime AND robot<>''");
+ if($rb) {
+ $rb_pc = $db->count($tb, "homepage='$_username' AND addtime>=$ftime AND addtime<=$ttime AND robot<>'' AND pc=1");
+ $rb_mb = $rb - $rb_pc;
+ }
+ $ip = $db->count($tb, "homepage='$_username' AND addtime>=$ftime AND addtime<=$ttime", 0, 'DISTINCT `ip`');
+ $ip_pc = $db->count($tb, "homepage='$_username' AND addtime>=$ftime AND addtime<=$ttime AND pc=1", 0, 'DISTINCT `ip`');
+ $ip_mb = $db->count($tb, "homepage='$_username' AND addtime>=$ftime AND addtime<=$ttime AND pc=0", 0, 'DISTINCT `ip`');
+ }
+ $db->query("INSERT INTO {$DT_PRE}stats_user (username,id,ip,ip_pc,ip_mb,pv,pv_pc,pv_mb,rb,rb_pc,rb_mb) VALUES ('$_username','$id','$ip','$ip_pc','$ip_mb','$pv','$pv_pc','$pv_mb','$rb','$rb_pc','$rb_mb')");
+ }
+ $tid = timetodate((datetotime($tid) - 86400), 3);
+ message($id.$L['op_update_success'], "?action=$action&fid=$fid&tid=$tid");
+ break;
+ case 'report':
+ $job or $job = 'pv';
+ if(in_array($job, array('pv', 'ip', 'rb'))) {
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = is_date($todate) ? datetotime($todate) : DT_TIME;
+ if($totime > DT_TIME) $totime = DT_TIME;
+ $fromtime = timetodate($totime - 86400*30, 'Ymd');
+ $totime = timetodate($totime, 'Ymd');
+ }
+ if($job == 'pv') {
+ $data = $pv = $pv_pc = $pv_mb = '';
+ $result = $db->query("SELECT * FROM {$DT_PRE}stats_user WHERE username='$_username' AND id>$fromtime AND id<=$totime ORDER BY id ASC LIMIT 30", 'CACHE');
+ while($r = $db->fetch_array($result)) {
+ $data .= "'".substr($r['id'], 4, 2).'-'.substr($r['id'], 6, 2)."',";
+ $pv .= $r['pv'].',';
+ $pv_pc .= $r['pv_pc'].',';
+ $pv_mb .= $r['pv_mb'].',';
+ }
+ if($data) {
+ $data = substr($data, 0, -1);
+ $pv = substr($pv, 0, -1);
+ $pv_pc = substr($pv_pc, 0, -1);
+ $pv_mb = substr($pv_mb, 0, -1);
+ }
+ } else if($job == 'ip') {
+ $data = $ip = $ip_pc = $ip_mb = '';
+ $result = $db->query("SELECT * FROM {$DT_PRE}stats_user WHERE username='$_username' AND id>$fromtime AND id<=$totime ORDER BY id ASC LIMIT 30", 'CACHE');
+ while($r = $db->fetch_array($result)) {
+ $data .= "'".substr($r['id'], 4, 2).'-'.substr($r['id'], 6, 2)."',";
+ $ip .= $r['ip'].',';
+ $ip_pc .= $r['ip_pc'].',';
+ $ip_mb .= $r['ip_mb'].',';
+ }
+ if($data) {
+ $data = substr($data, 0, -1);
+ $ip = substr($ip, 0, -1);
+ $ip_pc = substr($ip_pc, 0, -1);
+ $ip_mb = substr($ip_mb, 0, -1);
+ }
+ } else if($job == 'rb') {
+ $data = $rb = $rb_pc = $rb_mb = '';
+ $result = $db->query("SELECT * FROM {$DT_PRE}stats_user WHERE username='$_username' AND id>$fromtime AND id<=$totime ORDER BY id ASC LIMIT 30", 'CACHE');
+ while($r = $db->fetch_array($result)) {
+ $data .= "'".substr($r['id'], 4, 2).'-'.substr($r['id'], 6, 2)."',";
+ $rb .= $r['rb'].',';
+ $rb_pc .= $r['rb_pc'].',';
+ $rb_mb .= $r['rb_mb'].',';
+ }
+ if($data) {
+ $data = substr($data, 0, -1);
+ $rb = substr($rb, 0, -1);
+ $rb_pc = substr($rb_pc, 0, -1);
+ $rb_mb = substr($rb_mb, 0, -1);
+ }
+ } else if(in_array($job, array('domain', 'username', 'itemid'))) {
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ $module_select = '';
+ if(in_array($job, array('catid', 'itemid'))) {
+ if($mid < 5) {
+ foreach($MODULE as $v) {
+ if($v['islink'] || $v['moduleid'] < 5) continue;
+ $mid = $v['moduleid'];
+ break;
+ }
+ }
+ $module_select = module_select('mid', $L['module_name'], $mid, '', '1,2,3,4');
+ }
+ $condition = "homepage='$_username'";
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($mid > 4) $condition .= " AND mid=$mid";
+ $key = $job;
+ $xd = $yd = '';
+ $lists = array();
+ $result = $db->query("SELECT COUNT(`{$key}`) AS num,`{$key}` FROM {$DT_PRE}stats_pv WHERE {$condition} GROUP BY `{$key}` ORDER BY num DESC LIMIT 0,50", 'CACHE');
+ while($r = $db->fetch_array($result)) {
+ if(!$r[$key]) continue;
+ $r['url'] = '?action=record&'.$job.'='.urlencode($r[$key]);
+ if($job == 'username') {
+ $r['url'] = DT_PATH.'api/redirect.php?username='.$r[$key];
+ } else if($job == 'itemid') {
+ $itemid = $r[$key];
+ $t = $db->get_one("SELECT title FROM ".get_table($mid)." WHERE itemid=$itemid");
+ if($t) {
+ $r[$key] = dsubstr($t['title'], 30, '...');
+ $r['url'] = DT_PATH.'api/redirect.php?mid='.$mid.'&itemid='.$itemid;
+ }
+ }
+ $lists[] = $r;
+ }
+ $max = 0;
+ if($lists) {
+ $max = count($lists);
+ for($i = $max - 1; $i >= 0; $i--) {
+ $xd .= "'".$lists[$i][$key]."'".($i ? "," : "");
+ $yd .= "{value:".$lists[$i]['num'].",name:'".$lists[$i][$key]."',url:'".$lists[$i]['url']."'}".($i ? "," : "");
+ }
+ }
+ $height = $max ? ($max*32)+100 : 600;
+ }
+ $head_title = $L['stats_title_report'];
+ break;
+ case 'record':
+ $sfields = $L['stats_record_sfields'];
+ $dfields = array('url', 'url', 'refer', 'domain', 'robot', 'username', 'homepage', 'ip');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ isset($robot) or $robot = '';
+ $pc = isset($pc) ? intval($pc) : -1;
+ $islink = isset($islink) ? intval($islink) : -1;
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ $catid or $catid = '';
+ $itemid or $itemid = '';
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $module_select = module_select('mid', $L['module_name'], $mid);
+ $condition = "homepage='$_username'";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($mid) $condition .= " AND mid=$mid";
+ if($catid) $condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ if($robot) $condition .= $robot == 'all' ? " AND robot<>''" : " AND robot='$robot'";
+ if($pc > -1) $condition .= " AND pc=$pc";
+ if($islink > -1) $condition .= $islink ? " AND domain<>''" : " AND domain=''";
+ foreach($dfields as $v) {
+ if(in_array($v, array('url', 'robot'))) continue;
+ isset($$v) or $$v = '';
+ if($$v) $condition .= " AND $v='".$$v."'";
+ }
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}stats_pv WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $lists = $areas = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}stats_pv WHERE $condition ORDER BY sid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ if(isset($areas[$r['ip']])) {
+ $r['area'] = $areas[$r['ip']];
+ } else {
+ $r['area'] = $areas[$r['ip']] = ip2area($r['ip']);
+ }
+ if(strpos($r['refer'], 'file=') !== false || strpos($r['refer'], 'moduleid=') !== false) $r['refer'] = '';//Hide Admin
+ if($r['refer'] && strpos($r['refer'], '://') === false) $r['refer'] = DT_PATH.($r['refer'] == '/' ? '' : $r['refer']);
+ if(strpos($r['url'], '://') === false) $r['url'] = DT_PATH.$r['url'];
+ $r['addtime'] = timetodate($r['addtime'], 6);
+ $lists[] = $r;
+ }
+ $head_title = $L['stats_title_record'];
+ break;
+ default:
+ $id = timetodate(DT_TIME - 86400, 'Ymd');
+ $t = $db->get_one("SELECT itemid FROM {$DT_PRE}stats_user WHERE id='$id' AND username='$_username'");
+ $t or message($L['stats_msg_update'], '?action=update');
+ $sorder = $L['stats_sorder'];
+ $dorder = array('id DESC', 'ip DESC', 'ip ASC', 'ip_pc DESC', 'ip_pc ASC', 'ip_mob DESC', 'ip_mob ASC', 'pv DESC', 'pv ASC', 'pv_pc DESC', 'pv_pc ASC', 'pv_mob DESC', 'pv_mob ASC', 'rb DESC', 'rb ASC', 'rb_pc DESC', 'rb_pc ASC', 'rb_mob DESC', 'rb_mob ASC', 'id DESC', 'id ASC');
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = is_date($fromdate) ? str_replace('-', '', $fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = is_date($todate) ? str_replace('-', '', $todate) : 0;
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ $order_select = dselect($sorder, 'order', '', $order);
+ $condition = "username='$_username'";
+ if($fromtime) $condition .= " AND id>=$fromtime";
+ if($totime) $condition .= " AND id<=$totime";
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}stats_user WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}stats_user WHERE $condition ORDER BY $dorder[$order] LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['time'] = datetotime($r['id']);
+ $r['date'] = timetodate($r['time'], 3);
+ $r['week'] = $L['stats_week'].$L['stats_weeks'][date('w', $r['time'])];
+ $lists[] = $r;
+ }
+ $head_title = $L['stats_title'];
+ break;
+}
+if($DT_PC) {
+ //
+} else {
+ if((!$action || $action == 'index') && !$kw) $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : 'biz.php');
+ $head_name = $head_title;
+}
+include template('stats', $module);
+?>
\ No newline at end of file
diff --git a/module/member/stock.class.php b/module/member/stock.class.php
new file mode 100644
index 0000000..8830c0b
--- /dev/null
+++ b/module/member/stock.class.php
@@ -0,0 +1,155 @@
+table = DT_PRE.'stock';
+ $this->table_data = DT_PRE.'stock_data';
+ $this->fields = array('typeid','skuid','level','title','style','fee','brand','price','cost','amount','unit','location','thumb','n1','n2','n3','v1','v2','v3','username','editor','addtime','edittime','ip','note');
+ }
+
+ function stock() {
+ $this->__construct();
+ }
+
+ function pass($post) {
+ global $L;
+ if(!is_array($post)) return false;
+ if(strlen($post['title']) < 2) return $this->_(lang('message->pass_title'));
+ if(dround($post['price']) < 0.01) return $this->_(lang('message->pass_mall_price'));
+ if(!is_url($post['thumb'])) return $this->_(lang('message->pass_thumb'));
+ if(DT_MAX_LEN && strlen(clear_img($post['content'])) > DT_MAX_LEN) $this->_(lang('message->pass_max'));
+ if(!is_skuid($post['skuid'])) return $this->_(lang('message->pass_skuid'));
+ $condition = "skuid='$post[skuid]' AND username='$post[username]'";
+ if($this->itemid) $condition .= " AND itemid!=$this->itemid";
+ $r = DB::get_one("SELECT itemid FROM {$this->table} WHERE {$condition}");
+ if($r) return $this->_(lang('message->pass_skuid_exists'));
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $_username, $_userid, $_cname;
+ is_url($post['thumb']) or $post['thumb'] = '';
+ $post['addtime'] = (isset($post['addtime']) && is_time($post['addtime'])) ? datetotime($post['addtime']) : DT_TIME;
+ $post['typeid'] = intval($post['typeid']);
+ $post['price'] = dround($post['price']);
+ $post['cost'] = dround($post['cost']);
+ $post['amount'] = intval($post['amount']);
+ $post['editor'] = $_cname ? $_cname : $_username;
+ $post['edittime'] = DT_TIME;
+ if($this->itemid) {
+ $new = $post['content'];
+ if($post['thumb']) $new .= ' ';
+ $r = $this->get_one();
+ $old = $r['content'];
+ if($r['thumb']) $old .= ' ';
+ delete_diff($new, $old);
+ }
+ $content = $post['content'];
+ unset($post['content']);
+ $post = dhtmlspecialchars($post);
+ $post['content'] = dsafe($content);
+ $post['content'] = stripslashes($post['content']);
+ $post['content'] = save_local($post['content']);
+ $post['content'] = save_remote($post['content']);
+ $post['content'] = addslashes($post['content']);
+ return array_map("trim", $post);
+ }
+
+ function get_one($sql = '') {
+ $condition = $sql ? $sql : "itemid=$this->itemid";
+ $r = DB::get_one("SELECT * FROM {$this->table} WHERE $condition");
+ if($r) {
+ if($sql) return $r;
+ $t = DB::get_one("SELECT content FROM {$this->table_data} WHERE $condition");
+ $r['content'] = $t ? $t['content'] : '';
+ return $r;
+ } else {
+ return array();
+ }
+ }
+
+ function get_list($condition = 'status=3', $order = 'addtime DESC') {
+ global $MOD, $pages, $page, $pagesize, $offset, $items, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 6);
+ $r['editdate'] = timetodate($r['edittime'], 6);
+ $r['profit'] = dround($r['price'] - $r['cost'], 2, 1);
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $MOD, $L;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ DB::query("REPLACE INTO {$this->table_data} (itemid,content) VALUES ('$this->itemid', '$post[content]')");
+ clear_upload($post['content'].$post['thumb'], $this->itemid, $this->table);
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ DB::query("REPLACE INTO {$this->table_data} (itemid,content) VALUES ('$this->itemid', '$post[content]')");
+ clear_upload($post['content'].$post['thumb'], $this->itemid, $this->table);
+ return true;
+ }
+
+ function delete($itemid, $all = true) {
+ global $MOD, $L;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->delete($v); }
+ } else {
+ $this->itemid = $itemid;
+ $r = $this->get_one();
+ $userid = get_user($r['username']);
+ if($r['thumb'] && $userid) delete_upload($r['thumb'], $userid);
+ if($r['content'] && $userid) delete_local($r['content'], $userid);
+ DB::query("DELETE FROM {$this->table}_record WHERE stockid=$itemid");
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ DB::query("DELETE FROM {$this->table_data} WHERE itemid=$itemid");
+ }
+ }
+
+ function level($itemid, $level) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET level=$level WHERE itemid IN ($itemids)");
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/member/stock.inc.php b/module/member/stock.inc.php
new file mode 100644
index 0000000..edeefc9
--- /dev/null
+++ b/module/member/stock.inc.php
@@ -0,0 +1,277 @@
+ -1) or dheader(($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).'account.php?action=group&itemid=1');
+if($MG['type'] && !$_edittime && $action == 'add') dheader($MODULE[2]['linkurl'].'edit.php?tab=2');
+require DT_ROOT.'/module/'.$module.'/common.inc.php';
+require DT_ROOT.'/include/post.func.php';
+include load('my.lang');
+$TYPE = get_type('stock-'.$_userid);
+$menu_id = 2;
+require DT_ROOT.'/module/'.$module.'/stock.class.php';
+$do = new stock();
+switch($action) {
+ case 'add':
+ if($_credit < 0 && $MOD['credit_less']) dheader('credit.php?action=less');
+ if($MG['stock_limit']) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}stock WHERE username='$_username'");
+ if($r['num'] >= $MG['stock_limit']) dalert(lang($L['limit_add'], array($MG['stock_limit'], $r['num'])), '?action=index');
+ }
+ if($submit) {
+ $post['username'] = $_username;
+ if($do->pass($post)) {
+ $amount = $post['amount'];
+ $post['amount'] = 0;
+ $post['level'] = $post['addtime'] = 0;
+ $do->add($post);
+ stock_update($do->itemid, $post['skuid'], $_username, $amount, $_cname ? $_cname : $_username, $L['stock_title_add'], '');
+ set_cookie('dmsg', $L['success_add']);
+ $forward = '?action=index';
+ dalert('', '', 'parent.window.location="'.$forward.'"');
+ } else {
+ dalert($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ $$v = '';
+ }
+ $content = '';
+ $typeid = 0;
+ if($itemid) {
+ $do->itemid = $itemid;
+ $r = $do->get_one();
+ if($r) {
+ if(!$r['username'] || $r['username'] == $_username) {
+ $skuid = $r['skuid'];
+ $title = $r['title'];
+ $thumb = $r['thumb'];
+ $price = $r['price'];
+ $cost = $r['cost'];
+ $unit = $r['unit'];
+ $brand = $r['brand'];
+ $n1 = $r['n1'];
+ $n2 = $r['n2'];
+ $n3 = $r['n3'];
+ $v1 = $r['v1'];
+ $v2 = $r['v2'];
+ $v3 = $r['v3'];
+ $content = $r['content'];
+ if($r['username']) {
+ $typeid = $r['typeid'];
+ $location = $r['location'];
+ } else {
+ $db->query("UPDATE {$DT_PRE}stock SET amount=amount+1 WHERE itemid=$itemid");
+ }
+ } else {
+ message();
+ }
+ }
+ }
+ $type_select = type_select($TYPE, 0, 'post[typeid]', $L['default_type']);
+ $head_title = $L['stock_title_add'];
+ }
+ break;
+ case 'edit':
+ $itemid or message();
+ $do->itemid = $itemid;
+ $r = $do->get_one();
+ if(!$r || $r['username'] != $_username) message();
+ if($submit) {
+ $post['username'] = $_username;
+ $amount = $post['amount'];
+ $post['amount'] = $r['amount'];
+ if($do->pass($post)) {
+ $post['level'] = $r['level'];
+ $post['addtime'] = timetodate($r['addtime']);
+ $do->edit($post);
+ if($r['amount'] != $amount) stock_update($do->itemid, $post['skuid'], $_username, $amount - $r['amount'], $_cname ? $_cname : $_username, $L['stock_title_edit'], '');
+ set_cookie('dmsg', $L['success_edit']);
+ dalert('', '', 'parent.window.location="'.$forward.'"');
+ } else {
+ dalert($do->errmsg);
+ }
+ } else {
+ extract($r);
+ $addtime = timetodate($addtime);
+ $type_select = type_select($TYPE, 0, 'post[typeid]', $L['default_type'], $typeid);
+ $head_title = $L['stock_title_edit'];
+ }
+ break;
+ case 'delete':
+ $itemid or message($L['stock_msg_choose']);
+ $itemids = is_array($itemid) ? $itemid : array($itemid);
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if($item && $item['username'] == $_username) $do->delete($itemid);
+ }
+ dmsg($L['op_del_success'], $forward);
+ break;
+ case 'update':
+ (isset($skuid) && is_skuid($skuid)) or $skuid = '';
+ $type = isset($type) && $type ? 1 : 0;
+ $title = '';
+ if($itemid) {
+ $do->itemid = $itemid;
+ $r = $do->get_one();
+ if(!$r || $r['username'] != $_username) message();
+ $skuid = $r['skuid'];
+ $title = $r['title'];
+ } else if($skuid) {
+ $r = $do->get_one("skuid='$skuid' AND username='$_username'");
+ if(!$r) message($L['stock_msg_barcode'] );
+ $title = $r['title'];
+ }
+ if($submit) {
+ $amount = intval($amount);
+ if($amount < 1) message($L['stock_msg_amount']);
+ if(!is_skuid($skuid)) message($L['stock_msg_skuid']);
+ $forward = $itemid ? '?action=record' : '?action='.$action.'&type='.$type.'&amount='.$amount.'&reason='.urlencode($reason).'¬e='.urlencode($note);
+ $reason = dhtmlspecialchars(trim($reason));
+ $note = dhtmlspecialchars(trim($note));
+ $itemid = $r['itemid'];
+ $username = $r['username'];
+ $editor = $_cname ? $_cname : $_username;
+ if($type) $amount = -$amount;
+ stock_update($itemid, $skuid, $username, $amount, $editor, $reason, $note);
+ dmsg($L['op_success'], $forward);
+ } else {
+ $reason = isset($reason) ? strip_tags($reason) : '';
+ $note = isset($note) ? strip_tags($note) : '';
+ $amount = isset($amount) ? intval($amount) : 1;
+ $head_title = $type ? $L['stock_title_out'] : $L['stock_title_in'];
+ }
+ break;
+ case 'record':
+ $sfields = $L['stock_record_sfields'];
+ $dfields = array('title', 'title', 'skuid', 'reason', 'note', 'editor');
+ $sorder = $L['stock_record_sorder'];
+ $dorder = array('itemid DESC', 'amount DESC', 'amount ASC', 'balance DESC', 'balance ASC', 'addtime DESC', 'addtime ASC');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = is_date($fromdate) ? datetotime($fromdate.' 0:0:0') : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = is_date($todate) ? datetotime($todate.' 23:59:59') : 0;
+ isset($type) or $type = 0;
+ (isset($editor) && check_name($editor)) or $editor = '';
+ (isset($skuid) && is_skuid($skuid)) or $skuid = '';
+ isset($order) && isset($dorder[$order]) or $order = 0;
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+
+ $condition = "username='$_username'";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($type) $condition .= $type == 1 ? " AND amount>0" : " AND amount<0";
+ if($itemid) $condition .= " AND stockid=$itemid";
+ if($skuid) $condition .= " AND skuid='$skuid'";
+ if($editor) $condition .= " AND editor='$editor'";
+
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}stock_record WHERE $condition");
+ $items = $r['num'];
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$DT_PRE}stock_record WHERE $condition ORDER BY $dorder[$order] LIMIT $offset,$pagesize");
+ $income = $expense = 0;
+ while($r = $db->fetch_array($result)) {
+ $r['addtime'] = timetodate($r['addtime'], 6);
+ $r['amount'] > 0 ? $income += $r['amount'] : $expense += $r['amount'];
+ $lists[] = $r;
+ }
+ $head_title = $L['stock_title_record'];
+ break;
+ case 'open':
+ $sfields = $L['stock_open_sfields'];
+ $dfields = array('title', 'title', 'skuid', 'location', 'brand', 'unit', 'n1', 'n2', 'n3', 'v1', 'v2', 'v3', 'note', 'editor');
+ $sorder = $L['stock_open_sorder'];
+ $dorder = array('itemid DESC', 'amount DESC', 'amount ASC', 'price DESC', 'price ASC', 'cost DESC', 'cost ASC', 'addtime DESC', 'addtime ASC', 'edittime DESC', 'edittime ASC');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $typeid = isset($typeid) ? ($typeid === '' ? -1 : intval($typeid)) : -1;
+ (isset($editor) && check_name($editor)) or $editor = '';
+ (isset($skuid) && is_skuid($skuid)) or $skuid = '';
+ isset($datetype) && in_array($datetype, array('addtime', 'edittime')) or $datetype = 'addtime';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ isset($order) && isset($dorder[$order]) or $order = 0;
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+ $type_select = type_select($TYPE, 0, 'typeid', $L['default_type'], $typeid, '', $L['all_type']);
+
+ $condition = "username=''";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($typeid > -1) $condition .= " AND typeid=$typeid";
+ if($skuid) $condition .= " AND skuid='$skuid'";
+ if($editor) $condition .= " AND editor='$editor'";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+
+ $lists = $do->get_list($condition, $dorder[$order]);
+ foreach($lists as $k=>$v) {
+ $lists[$k]['type'] = $lists[$k]['typeid'] && isset($TYPE[$lists[$k]['typeid']]) ? set_style($TYPE[$lists[$k]['typeid']]['typename'], $TYPE[$lists[$k]['typeid']]['style']) : $L['default_type'];
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}stock WHERE username='$_username'");
+ $limit_used = $r['num'];
+ $limit_free = $MG['stock_limit'] && $MG['stock_limit'] > $limit_used ? $MG['stock_limit'] - $limit_used : 0;
+ $head_title = $L['stock_title_open'];
+ break;
+ default:
+ $sfields = $L['stock_sfields'];
+ $dfields = array('title', 'title', 'skuid', 'location', 'brand', 'unit', 'n1', 'n2', 'n3', 'v1', 'v2', 'v3', 'note', 'editor');
+ $sorder = $L['stock_sorder'];
+ $dorder = array('itemid DESC', 'amount DESC', 'amount ASC', 'price DESC', 'price ASC', 'cost DESC', 'cost ASC', 'addtime DESC', 'addtime ASC', 'edittime DESC', 'edittime ASC');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $typeid = isset($typeid) ? ($typeid === '' ? -1 : intval($typeid)) : -1;
+ (isset($editor) && check_name($editor)) or $editor = '';
+ (isset($skuid) && is_skuid($skuid)) or $skuid = '';
+ isset($datetype) && in_array($datetype, array('addtime', 'edittime')) or $datetype = 'addtime';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ isset($order) && isset($dorder[$order]) or $order = 0;
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+ $type_select = type_select($TYPE, 0, 'typeid', $L['default_type'], $typeid, '', $L['all_type']);
+
+ $condition = "username='$_username'";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($typeid > -1) $condition .= " AND typeid=$typeid";
+ if($skuid) $condition .= " AND skuid='$skuid'";
+ if($editor) $condition .= " AND editor='$editor'";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+
+ $lists = $do->get_list($condition, $dorder[$order]);
+ foreach($lists as $k=>$v) {
+ $lists[$k]['type'] = $lists[$k]['typeid'] && isset($TYPE[$lists[$k]['typeid']]) ? set_style($TYPE[$lists[$k]['typeid']]['typename'], $TYPE[$lists[$k]['typeid']]['style']) : $L['default_type'];
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}stock WHERE username='$_username'");
+ $limit_used = $r['num'];
+ $limit_free = $MG['stock_limit'] && $MG['stock_limit'] > $limit_used ? $MG['stock_limit'] - $limit_used : 0;
+ $head_title = $L['stock_title'];
+ break;
+}
+if($DT_PC) {
+ $menu_id = 2;
+} else {
+ $wx_jssdk = array();
+ if(in_array($action, array('add', 'edit', 'update')) && in_array($DT_MBS, array('weixin', 'wxxcx'))) {
+ $WX = cache_read('weixin.php');
+ if($WX['appid'] && $WX['appsecret']) {
+ require DT_ROOT.'/api/weixin/jssdk.php';
+ $jssdk = new JSSDK($WX['appid'], $WX['appsecret']);
+ $wx_jssdk = $jssdk->GetSignPackage();
+ }
+ }
+ if((!$action || $action == 'index') && !$kw) $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : 'biz.php');
+ if($pages) $pages = mobile_pages($items, $page, $pagesize);
+ $head_name = $head_title;
+}
+include template('stock', $module);
+?>
\ No newline at end of file
diff --git a/module/member/style.class.php b/module/member/style.class.php
new file mode 100644
index 0000000..42cfb0f
--- /dev/null
+++ b/module/member/style.class.php
@@ -0,0 +1,155 @@
+table = DT_PRE.'style';
+ $this->fields = array('typeid','title','skin','template','author','groupid','fee','currency','mobile','hits', 'addtime','editor','edittime');
+ }
+
+ function style() {
+ $this->__construct();
+ }
+
+ function pass($post) {
+ global $CFG, $MODULE, $L;
+ if(!is_array($post)) return false;
+ if(!$post['title']) return $this->_($L['style_pass_title']);
+ if(!$post['skin']) return $this->_($L['style_pass_skin']);
+ if(!preg_match("/^[a-z0-9\-_]+$/i", $post['skin'])) return $this->_($L['style_pass_skin_match']);
+ if(!is_file(DT_ROOT.'/'.$MODULE[4]['moduledir'].'/skin/'.$post['skin'].'/style.css')) return $this->_($L['style_pass_css']);
+ if(!$post['template']) return $this->_($L['style_pass_template']);
+ if(!preg_match("/^[a-z0-9\-_]+$/i", $post['template'])) return $this->_($L['style_pass_template_match']);
+ if(!is_dir(DT_ROOT.'/template/'.$CFG['template'].'/'.$post['template'])) return $this->_($L['style_pass_dir']);
+ if($post['mobile'] && !is_dir(DT_ROOT.'/template/'.$CFG['template_mobile'].'/'.$post['template'])) return $this->_($L['style_pass_mdir']);
+ if(!isset($post['groupid'])) return $this->_($L['style_pass_groupid']);
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $_username, $_userid, $_cname;
+ $post['addtime'] = (isset($post['addtime']) && is_time($post['addtime'])) ? datetotime($post['addtime']) : DT_TIME;
+ $post['editor'] = $_cname ? $_cname : $_username;
+ $post['edittime'] = DT_TIME;
+ $post['groupid'] = (isset($post['groupid']) && $post['groupid']) ? ','.implode(',', $post['groupid']).',' : '';
+ $post['fee'] = dround($post['fee']);
+ $post['mobile'] = $post['mobile'] ? 1 : 0;
+ $post = dhtmlspecialchars($post);
+ return array_map("trim", $post);
+ }
+
+ function get_one($condition = '') {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid='$this->itemid' $condition");
+ }
+
+ function get_list($condition = '1', $order = 'listorder DESC, itemid DESC') {
+ global $MODULE, $MOD, $MG, $pages, $page, $pagesize, $offset, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $GROUP = cache_read('group.php');
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['thumb'] = is_file(DT_ROOT.'/'.$MODULE[4]['moduledir'].'/skin/'.$r['skin'].'/thumb.gif') ? $MODULE[4]['linkurl'].'skin/'.$r['skin'].'/thumb.gif' : $MODULE[4]['linkurl'].'image/nothumb.gif';
+ $groupid = explode(',', substr($r['groupid'], 1, -1));
+ $group = array();
+ foreach($groupid as $gid) {
+ $group[] = ''.$GROUP[$gid]['groupname'].' ';
+ }
+ $r['groups'] = implode(' , ', $group);
+ $r['group'] = strip_tags($r['groups']);
+ if($MG['styleid'] == $r['itemid']) $r['fee'] = 0;
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ return true;
+ }
+
+ function delete($itemid) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->delete($v); }
+ } else {
+ DB::query("UPDATE ".DT_PRE."company SET styletime=0,styleid=0 WHERE styleid=$itemid");
+ DB::query("DELETE FROM {$this->table}_order WHERE styleid=$itemid");
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ }
+ }
+
+ function order($listorder) {
+ if(!is_array($listorder)) return false;
+ foreach($listorder as $k=>$v) {
+ $k = intval($k);
+ $v = intval($v);
+ DB::query("UPDATE {$this->table} SET listorder=$v WHERE itemid=$k");
+ }
+ return true;
+ }
+
+ function del($itemid) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->delete($v); }
+ } else {
+ DB::query("DELETE FROM {$this->table}_order WHERE itemid=$itemid");
+ }
+ }
+
+ function get_order($condition = '1', $order = 'itemid DESC') {
+ global $MODULE, $MOD, $TYPE, $pages, $page, $pagesize, $offset, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table}_order WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table}_order WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['todate'] = timetodate($r['totime'], 5);
+ $r['days'] = $r['totime'] > DT_TIME ? ceil(($r['totime']-DT_TIME)/86400) : 0;
+ $r['thumb'] = is_file(DT_ROOT.'/'.$MODULE[4]['moduledir'].'/skin/'.$r['skin'].'/thumb.gif') ? $MODULE[4]['linkurl'].'skin/'.$r['skin'].'/thumb.gif' : $MODULE[4]['linkurl'].'image/nothumb.gif';
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/member/task.inc.php b/module/member/task.inc.php
new file mode 100644
index 0000000..d18e1a0
--- /dev/null
+++ b/module/member/task.inc.php
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/module/member/trade.inc.php b/module/member/trade.inc.php
new file mode 100644
index 0000000..9f85f1c
--- /dev/null
+++ b/module/member/trade.inc.php
@@ -0,0 +1,570 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ $td or message($L['trade_msg_null']);
+ if($td['seller'] != $_username || $td['pid'] > 0) message($L['trade_msg_deny']);
+ require DT_ROOT.'/module/mall/global.func.php';
+ $td['total'] = $td['amount'] + $td['fee'];
+ $td['total'] = number_format($td['total'], 2, '.', '');
+ $td['money'] = $td['amount'] + $td['discount'];
+ $td['money'] = number_format($td['money'], 2, '.', '');
+ $td['adddate'] = timetodate($td['addtime'], 5);
+ $td['updatedate'] = timetodate($td['updatetime'], 5);
+ $td['linkurl'] = ($DT_PC ? DT_PATH : DT_MOB).'api/redirect.php?mid='.$td['mid'].'&itemid='.$td['mallid'];
+ $td['par'] = '';
+ if(strpos($td['note'], '|') !== false) list($td['note'], $td['par']) = explode('|', $td['note']);
+ $td['sku'] = $td['skuid'] ? get_sku($td['skuid'], $td['seller']) : array();
+ $lists = array($td);
+ if(($td['amount'] + $td['discount']) > $td['price']*$td['number']) {
+ $result = $db->query("SELECT * FROM {$table} WHERE pid=$itemid ORDER BY itemid DESC");
+ while($r = $db->fetch_array($result)) {
+ $r['linkurl'] = ($DT_PC ? DT_PATH : DT_MOB).'api/redirect.php?mid='.$r['mid'].'&itemid='.$r['mallid'];
+ $r['par'] = '';
+ if(strpos($r['note'], '|') !== false) list($r['note'], $r['par']) = explode('|', $r['note']);
+ $r['sku'] = $r['skuid'] ? get_sku($r['skuid'], $r['seller']) : array();
+ $lists[] = $r;
+ }
+ }
+ $mallid = $td['mallid'];
+ switch($step) {
+ case 'edit_price'://修改价格||确认订单||修改为货到付款
+ if($td['status'] > 1) message($L['trade_msg_deny']);
+ if($submit) {
+ $fee = dround($fee);
+ if($fee < 0 && $fee < -$td['amount']) message(lang($L['trade_msg_less_fee'], array(-$td['amount'])));
+ $fee_name = dhtmlspecialchars(trim($fee_name));
+ $status = isset($confirm_order) ? 1 : 0;
+ $cod = 0;
+ if(isset($edit_cod)) {
+ $cod = 1;
+ $status = 7;
+ }
+ $db->query("UPDATE {$table} SET fee='$fee',fee_name='$fee_name',status=$status,cod=$cod,updatetime=$DT_TIME WHERE itemid=$itemid");
+ $db->query("INSERT INTO {$table_log} (oid,addtime,title,note) VALUES ('$itemid','$DT_TIME','$L[log_edit]','')");
+ foreach($lists as $k=>$v) {
+ if($v['itemid'] != $itemid) $db->query("UPDATE {$table} SET status=$status,cod=$cod,updatetime=$DT_TIME WHERE itemid=$v[itemid]");
+ }
+ if(isset($confirm_order)) {
+ $touser = $td['buyer'];
+ $title = lang($L['trade_message_t1'], array($itemid));
+ $url = $memberurl.'order.php?itemid='.$itemid;
+ $content = lang($L['trade_message_c1'], array($myurl, $_username, $timenow, $url));
+ $content = ob_template('messager', 'mail');
+ send_message($touser, $title, $content);
+ //send sms
+ if($DT['sms'] && $_sms && $touser && isset($sendsms)) {
+ $touser = userinfo($touser);
+ if($touser['mobile']) {
+ $message = lang('sms->ord_confirm', array($itemid));
+ $message = strip_sms($message);
+ $word = word_count($message);
+ $sms_num = ceil($word/$DT['sms_len']);
+ if($sms_num <= $_sms) {
+ $sms_code = send_sms($touser['mobile'], $message, $word);
+ if(strpos($sms_code, $DT['sms_ok']) !== false) {
+ $tmp = explode('/', $sms_code);
+ if(is_numeric($tmp[1])) $sms_num = $tmp[1];
+ if($sms_num) sms_add($_username, -$sms_num);
+ if($sms_num) sms_record($_username, -$sms_num, $_username, $L['trade_sms_confirm'], $itemid);
+ }
+ }
+ }
+ }
+ //send sms
+ }
+ message($L['trade_price_edit_success'], $forward, 3);
+ } else {
+ $confirm = isset($confirm) ? 1 : 0;
+ $head_title = $L['trade_price_title'];
+ }
+ break;
+ case 'note'://更新备注
+ $note = strip_tags(trim($note));
+ $db->query("UPDATE {$table} SET seller_note='$note' WHERE itemid=$itemid");
+ dmsg($L['trade_msg_svae_note'], '?action='.$action.'&step=detail&itemid='.$itemid);
+ break;
+ case 'detail'://订单详情
+ $logs = array();
+ $result = $db->query("SELECT * FROM {$table_log} WHERE oid=$itemid ORDER BY itemid DESC");
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $logs[] = $r;
+ }
+ $auth = encrypt('mall|'.$td['send_type'].'|'.$td['send_no'].'|'.$td['send_status'].'|'.$td['buyer_mobile'].'|'.$td['itemid'], DT_KEY.'EXPRESS');
+ $head_title = $L['trade_detail_title'];
+ break;
+ case 'print'://订单打印
+ include template('trade_print', $module);
+ exit;
+ break;
+ case 'express'://快递追踪
+ ($td['send_type'] && $td['send_no']) or dheader('?action=update&step=detail&itemid='.$itemid);
+ $auth = encrypt('mall|'.$td['send_type'].'|'.$td['send_no'].'|'.$td['send_status'].'|'.$td['buyer_mobile'].'|'.$td['itemid'], DT_KEY.'EXPRESS');
+ $head_title = $L['trade_exprss_title'];
+ break;
+ case 'refund_agree'://卖家同意买家退款
+ if($td['status'] != 5) message($L['trade_msg_deny']);
+ $money = $td['amount'] + $td['fee'];
+ if($submit) {
+ $content .= $L['trade_refund_by_seller'];
+ clear_upload($content, $itemid, $table);
+ $content = dsafe(addslashes(save_remote(save_local(stripslashes($content)))));
+ is_payword($_username, $password) or message($L['error_payword']);
+ money_add($td['buyer'], $money);
+ money_record($td['buyer'], $money, $L['in_site'], 'system', $L['trade_refund'], $L['trade_order_id'].$itemid.$L['trade_refund_by_seller']);
+ foreach($lists as $k=>$v) {
+ $db->query("UPDATE {$table} SET status=6,editor='$_username',updatetime=$DT_TIME,refund_reason='$content' WHERE itemid=$v[itemid]");
+ }
+ $db->query("INSERT INTO {$table_log} (oid,addtime,title,note) VALUES ('$itemid','$DT_TIME','$L[log_agree]','')");
+ //更新商品数据 增加库存
+ foreach($lists as $k=>$v) {
+ if($MODULE[$v['mid']]['module'] == 'mall') {
+ $db->query("UPDATE ".get_table($v['mid'])." SET orders=orders-1,sales=sales-$v[number],amount=amount+$v[number] WHERE itemid=$v[mallid]");
+ } else {
+ $db->query("UPDATE ".get_table($v['mid'])." SET amount=amount+$v[number] WHERE itemid=$v[mallid]");
+ }
+ if(is_skuid($td['skuid'])) stock_update(0, $td['skuid'], $td['seller'], $v['number'], $td['buyer'], $L['stock_refund'], $L['stock_pay'].$itemid);
+ }
+ message($L['trade_refund_agree_success'], $forward, 3);
+ } else {
+ $head_title = $L['trade_refund_agree_title'];
+ }
+ break;
+ case 'send_goods'://卖家发货
+ if(($td['status'] != 2 && $td['status'] != 7)) message($L['trade_msg_deny']);
+ if($submit) {
+ is_date($send_time) or message($L['msg_express_date_error']);
+ $send_type = trim(dhtmlspecialchars($send_type));
+ $send_no = trim(dhtmlspecialchars($send_no));
+ $status = $td['status'] == 7 ? 7 : 3;
+ foreach($lists as $k=>$v) {
+ $db->query("UPDATE {$table} SET status=$status,updatetime=$DT_TIME,send_type='$send_type',send_no='$send_no',send_time='$send_time' WHERE itemid=$v[itemid]");
+ }
+ $db->query("INSERT INTO {$table_log} (oid,addtime,title,note) VALUES ('$itemid','$DT_TIME','$L[log_send]','')");
+ $touser = $td['buyer'];
+ $title = lang($L['trade_message_t3'], array($itemid));
+ $url = $memberurl.'order.php?itemid='.$itemid;
+ $content = lang($L['trade_message_c3'], array($myurl, $_username, $timenow, $url));
+ $content = ob_template('messager', 'mail');
+ send_message($touser, $title, $content);
+
+ //send sms
+ if($DT['sms'] && $_sms && $touser && isset($sendsms)) {
+ $touser = userinfo($touser);
+ if($touser['mobile']) {
+ $message = lang('sms->ord_send', array($itemid, $send_type, $send_no, $send_time));
+ $message = strip_sms($message);
+ $word = word_count($message);
+ $sms_num = ceil($word/$DT['sms_len']);
+ if($sms_num <= $_sms) {
+ $sms_code = send_sms($touser['mobile'], $message, $word);
+ if(strpos($sms_code, $DT['sms_ok']) !== false) {
+ $tmp = explode('/', $sms_code);
+ if(is_numeric($tmp[1])) $sms_num = $tmp[1];
+ if($sms_num) sms_add($_username, -$sms_num);
+ if($sms_num) sms_record($_username, -$sms_num, $_username, $L['trade_sms_send'], $itemid);
+ }
+ }
+ }
+ }
+ //send sms
+
+ //更新商品数据 限货到付款的商品
+ if($td['cod']) {
+ foreach($lists as $k=>$v) {
+ if($MODULE[$v['mid']]['module'] == 'mall') {
+ $db->query("UPDATE ".get_table($v['mid'])." SET orders=orders+1,sales=sales+$v[number],amount=amount-$v[number] WHERE itemid=$v[mallid]");
+ } else {
+ $db->query("UPDATE ".get_table($v['mid'])." SET amount=amount-$v[number] WHERE itemid=$v[mallid]");
+ }
+ }
+ }
+ message($L['trade_send_success'], $forward, 3);
+ } else {
+ $head_title = $L['trade_send_title'];
+ $send_types = explode('|', trim($MOD['send_types']));
+ $send_time = timetodate($DT_TIME, 3);
+ }
+ break;
+ case 'cod_success'://货到付款,确认完成
+ if($td['status'] != 7 || !$td['cod'] || !$td['send_time']) message($L['trade_msg_deny']);
+ foreach($lists as $k=>$v) {
+ $db->query("UPDATE {$table} SET status=4,updatetime=$DT_TIME WHERE itemid=$v[itemid]");
+ }
+ $db->query("INSERT INTO {$table_log} (oid,addtime,title,note) VALUES ('$itemid','$DT_TIME','$L[log_get]','')");
+ $db->query("INSERT INTO {$table_log} (oid,addtime,title,note) VALUES ('$itemid','$DT_TIME','$L[log_success]','')");
+ //交易成功
+ message($L['trade_success'], $forward, 3);
+
+ break;
+ case 'add_time'://增加确认收货时间
+ if($td['status'] != 3) message($L['trade_msg_deny']);
+ if($submit) {
+ $add_time = intval($add_time);
+ $add_time > 0 or message($L['trade_addtime_null']);
+ $add_time = $td['add_time'] + $add_time;
+ foreach($lists as $k=>$v) {
+ $db->query("UPDATE {$table} SET add_time='$add_time' WHERE itemid=$v[itemid]");
+ }
+ $db->query("INSERT INTO {$table_log} (oid,addtime,title,note) VALUES ('$itemid','$DT_TIME','$L[log_addtime]','')");
+ message($L['trade_addtime_success'], $forward);
+ } else {
+ $head_title = $L['trade_addtime_title'];
+ }
+ break;
+ case 'get_pay'://买家确认超时 卖家申请直接付款
+ $gone = $DT_TIME - $td['updatetime'];
+ if($td['status'] != 3 || $gone < ($MOD['trade_day']*86400 + $td['add_time']*3600)) message($L['trade_msg_deny']);
+ //交易成功
+ $money = $td['amount'] + $td['fee'];
+ money_add($td['seller'], $money);
+ money_record($td['seller'], $money, $L['in_site'], 'system', $L['trade_record_pay'], lang($L['trade_buyer_timeout'], array($itemid)));
+ //网站服务费
+ $G = $db->get_one("SELECT groupid FROM {$DT_PRE}member WHERE username='".$td['seller']."'");
+ $SG = cache_read('group-'.$G['groupid'].'.php');
+ if($SG['commission']) {
+ $fee = dround($money*$SG['commission']/100);
+ if($fee > 0) {
+ money_add($td['seller'], -$fee);
+ money_record($td['seller'], -$fee, $L['in_site'], 'system', $L['trade_fee'], $L['trade_order_id'].$itemid);
+ }
+ }
+ foreach($lists as $k=>$v) {
+ $db->query("UPDATE {$table} SET status=4,updatetime=$DT_TIME WHERE itemid=$v[itemid]");
+ }
+ $db->query("INSERT INTO {$table_log} (oid,addtime,title,note) VALUES ('$itemid','$DT_TIME','$L[log_getpay]','')");
+ $db->query("INSERT INTO {$table_log} (oid,addtime,title,note) VALUES ('$itemid','$DT_TIME','$L[log_success]','')");
+ message($L['trade_success'], $forward, 3);
+ break;
+ case 'comment'://交易评价
+ if($MODULE[$td['mid']]['module'] != 'mall') message($L['trade_msg_deny_comment']);
+ if($submit) {
+ $db->query("INSERT INTO {$table_log} (oid,addtime,title,note) VALUES ('$itemid','$DT_TIME','$L[log_seller_coment]','')");
+ foreach($lists as $k=>$v) {
+ $mid = $v['mid'];
+ $itemid = $v['itemid'];
+ $mallid = $v['mallid'];
+ $star = intval($stars[$itemid]);
+ in_array($star, array(1, 2, 3, 4, 5)) or $star = 5;
+ $content = dhtmlspecialchars(banword($BANWORD, $contents[$itemid], false));
+ $db->query("UPDATE {$table} SET buyer_star=$star WHERE itemid=$itemid");
+ $s = 'b'.$star;
+ $db->query("UPDATE {$DT_PRE}mall_comment_".$mid." SET buyer_star=$star,buyer_comment='$content',buyer_ctime=$DT_TIME WHERE itemid=$itemid");
+ $db->query("UPDATE {$DT_PRE}mall_stat_".$mid." SET bcomment=bcomment+1,`$s`=`$s`+1 WHERE mallid=$mallid");
+ }
+ message($L['trade_msg_comment_success'], $forward);
+ }
+ $head_title = $L['trade_comment_title'];
+ break;
+ case 'comment_detail'://评价详情
+ if($MODULE[$td['mid']]['module'] != 'mall') message($L['trade_msg_deny_comment']);
+ $comments = $O = $C = array();
+ foreach($lists as $k=>$v) {
+ $id = $v['itemid'];
+ $c = $db->get_one("SELECT * FROM {$DT_PRE}mall_comment_$v[mid] WHERE itemid=$id");
+ $c['seller_thumbs'] = $c['seller_thumbs'] ? explode('|', $c['seller_thumbs']) : array();
+ $comments[$k] = $c;
+ $O[$id] = $v;
+ $C[$id] = $c;
+ }
+ if($submit) {
+ $oid = intval($oid);
+ if(isset($C[$oid])) {
+ $content = dhtmlspecialchars(banword($BANWORD, $content, false));
+ $content or message($L['trade_msg_empty_explain']);
+ if($C[$oid]['buyer_reply']) message($L['trade_msg_explain_again']);
+ $db->query("UPDATE {$DT_PRE}mall_comment_".$O[$oid]['mid']." SET buyer_reply='$content',buyer_rtime=$DT_TIME WHERE itemid=$oid");
+ dmsg($L['trade_msg_explain_success'], '?action='.$action.'&step='.$step.'&itemid='.$itemid);
+ }
+ }
+ $head_title = $L['trade_comment_show_title'];
+ break;
+ case 'close'://关闭交易
+ if($td['status'] == 0) {
+ foreach($lists as $k=>$v) {
+ $db->query("UPDATE {$table} SET status=9,updatetime=$DT_TIME WHERE itemid=$v[itemid]");
+ }
+ $db->query("INSERT INTO {$table_log} (oid,addtime,title,note) VALUES ('$itemid','$DT_TIME','$L[log_seller_close]','')");
+ dmsg($L['trade_close_success'], $forward);
+ } else if($td['status'] == 1) {
+ foreach($lists as $k=>$v) {
+ $db->query("UPDATE {$table} SET status=9,updatetime=$DT_TIME WHERE itemid=$v[itemid]");
+ }
+ $db->query("INSERT INTO {$table_log} (oid,addtime,title,note) VALUES ('$itemid','$DT_TIME','$L[log_seller_close]','')");
+ dmsg($L['trade_close_success'], $forward);
+ } else if($td['status'] == 8) {
+ foreach($lists as $k=>$v) {
+ $db->query("DELETE FROM {$table} WHERE itemid=$v[itemid]");
+ }
+ $db->query("DELETE FROM {$table_log} WHERE itemid=$itemid");
+ dmsg($L['trade_delete_success'], $forward);
+ } else {
+ message($L['trade_msg_deny']);
+ }
+ break;
+ }
+} else if($action == 'muti') {//批量发货
+ if($submit) {
+ ($itemid && is_array($itemid)) or message($L['trade_msg_muti_choose']);
+ is_date($send_time) or message($L['msg_express_date_error']);
+ $send_type = trim(dhtmlspecialchars($send_type));
+ $itemids = implode(',', $itemid);
+ $condition = "pid=0 AND seller='$_username' AND status=2 AND itemid IN ($itemids)";
+ $tds = array();
+ $result = $db->query("SELECT * FROM {$table} WHERE $condition ORDER BY itemid DESC LIMIT 50");
+ while($r = $db->fetch_array($result)) {
+ $tds[] = $r;
+ }
+ foreach($tds as $td) {
+ $itemid = $td['itemid'];
+ $send_no = trim(dhtmlspecialchars($send_nos[$itemid]));
+ $status = $td['status'] == 7 ? 7 : 3;
+ $lists = get_orders($itemid);
+ foreach($lists as $k=>$v) {
+ $db->query("UPDATE {$table} SET status=$status,updatetime=$DT_TIME,send_type='$send_type',send_no='$send_no',send_time='$send_time' WHERE itemid=$v[itemid]");
+ }
+ $db->query("INSERT INTO {$table_log} (oid,addtime,title,note) VALUES ('$itemid','$DT_TIME','$L[log_send]','')");
+ $touser = $td['buyer'];
+ $title = lang($L['trade_message_t3'], array($itemid));
+ $url = $memberurl.'order.php?itemid='.$itemid;
+ $content = lang($L['trade_message_c3'], array($myurl, $_username, $timenow, $url));
+ $content = ob_template('messager', 'mail');
+ send_message($touser, $title, $content);
+
+ //send sms
+ if($DT['sms'] && $_sms && $touser && isset($sendsms)) {
+ $touser = userinfo($touser);
+ if($touser['mobile']) {
+ $message = lang('sms->ord_send', array($itemid, $send_type, $send_no, $send_time));
+ $message = strip_sms($message);
+ $word = word_count($message);
+ $sms_num = ceil($word/$DT['sms_len']);
+ if($sms_num <= $_sms) {
+ $sms_code = send_sms($touser['mobile'], $message, $word);
+ if(strpos($sms_code, $DT['sms_ok']) !== false) {
+ $tmp = explode('/', $sms_code);
+ if(is_numeric($tmp[1])) $sms_num = $tmp[1];
+ if($sms_num) sms_add($_username, -$sms_num);
+ if($sms_num) sms_record($_username, -$sms_num, $_username, $L['trade_sms_send'], $itemid);
+ $_sms = $_sms - $sms_num;
+ }
+ }
+ }
+ }
+ //send sms
+
+ //更新商品数据 限货到付款的商品
+ if($td['cod']) {
+ foreach($lists as $k=>$v) {
+ if($MODULE[$v['mid']]['module'] == 'mall') {
+ $db->query("UPDATE ".get_table($v['mid'])." SET orders=orders+1,sales=sales+$v[number],amount=amount-$v[number] WHERE itemid=$v[mallid]");
+ } else {
+ $db->query("UPDATE ".get_table($v['mid'])." SET orders=orders+1,amount=amount-$v[number] WHERE itemid=$v[mallid]");
+ }
+ if(is_skuid($td['skuid'])) stock_update(0, $td['skuid'], $td['seller'], -$v['number'], $td['buyer'], $L['stock_pay'], $L['stock_no'].$itemid);
+ }
+ }
+ }
+ dmsg($L['trade_send_success'], '?action=muti');
+ } else {
+ require DT_ROOT.'/module/mall/global.func.php';
+ $sfields = $L['trade_sfields'];
+ $dfields = array('title', 'title ', 'amount', 'fee', 'fee_name', 'buyer', 'buyer_name', 'buyer_address', 'buyer_postcode', 'buyer_mobile', 'buyer_phone', 'send_type', 'send_no', 'note');
+ $mallid = isset($mallid) ? intval($mallid) : 0;
+ $cod = isset($cod) ? intval($cod) : 0;
+ $nav = isset($nav) ? intval($nav) : -1;
+ (isset($buyer) && check_name($buyer)) or $buyer = '';
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = is_date($fromdate) ? datetotime($fromdate.' 0:0:0') : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = is_date($todate) ? datetotime($todate.' 23:59:59') : 0;
+ $status = isset($status) && isset($dstatus[$status]) ? intval($status) : '';
+ $condition = "pid=0 AND seller='$_username' AND status=2";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($status !== '') $condition .= " AND status='$status'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ if($mallid) $condition .= " AND mallid=$mallid";
+ if($buyer) $condition .= " AND buyer='$buyer'";
+ if($cod) $condition .= " AND cod=1";
+ if(in_array($nav, array(0,1,2,3,5,6))) {
+ $condition .= " AND status=$nav";
+ $status = $nav;
+ } else if($nav == 4) {
+ $condition .= " AND status=$nav AND buyer_star=0";
+ $status = $nav;
+ }
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $status_select = dselect($dstatus, 'status', $L['status'], $status, '', 1, '', 1);
+ $lists = $pids = array();
+ $result = $db->query("SELECT * FROM {$table} WHERE $condition ORDER BY itemid DESC LIMIT 100");
+ while($r = $db->fetch_array($result)) {
+ if($r['amount'] > $r['price']*$r['number']) $pids[] = $r['itemid'];
+ $r['addtime'] = timetodate($r['addtime'], 5);
+ $r['linkurl'] = ($DT_PC ? DT_PATH : DT_MOB).'api/redirect.php?mid='.$r['mid'].'&itemid='.$r['mallid'];
+ $r['par'] = '';
+ if(strpos($r['note'], '|') !== false) list($r['note'], $r['par']) = explode('|', $r['note']);
+ $r['dstatus'] = $_status[$r['status']];
+ $r['money'] = $r['amount'] + $r['fee'];
+ $r['money'] = number_format($r['money'], 2, '.', '');
+ $r['sku'] = $r['skuid'] ? get_sku($r['skuid'], $r['seller']) : array();
+ $lists[] = $r;
+ }
+ if($pids) {
+ $result = $db->query("SELECT * FROM {$table} WHERE pid IN (".implode(',', $pids).") ORDER BY itemid DESC");
+ while($r = $db->fetch_array($result)) {
+ $r['linkurl'] = ($DT_PC ? DT_PATH : DT_MOB).'api/redirect.php?mid='.$r['mid'].'&itemid='.$r['mallid'];
+ $r['par'] = '';
+ if(strpos($r['note'], '|') !== false) list($r['note'], $r['par']) = explode('|', $r['note']);
+ $tags[$r['pid']][] = $r;
+ }
+ }
+ $send_types = explode('|', trim($MOD['send_types']));
+ $send_time = timetodate($DT_TIME, 3);
+ $t = $db->get_one("SELECT send_type FROM {$table} WHERE seller='$_username' AND send_type<>'' ORDER BY itemid DESC");
+ $send_type = $t ? $t['send_type'] : '';
+ $head_title = $L['trade_muti_send_title'];
+ }
+} else if($action == 'express') {//我的快递
+ $sfields = $L['express_sfields'];
+ $dfields = array('title', 'title', 'send_type ', 'send_no');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $status = isset($status) && isset($dsend_status[$status]) ? intval($status) : '';
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $status_select = dselect($dsend_status, 'status', $L['status'], $status, '', 1, '', 1);
+ $condition = "pid=0 AND send_no<>'' AND seller='$_username'";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($status !== '') $condition .= " AND send_status='$status'";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition");
+ $items = $r['num'];
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $lists = array();
+ $result = $db->query("SELECT * FROM {$table} WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['addtime'] = timetodate($r['addtime'], 5);
+ $r['updatetime'] = timetodate($r['updatetime'], 5);
+ $r['dstatus'] = $_send_status[$r['send_status']];
+ $lists[] = $r;
+ }
+ $head_title = $L['express_title'];
+} else {
+ $sfields = $L['trade_sfields'];
+ $dfields = array('title', 'title ', 'amount', 'fee', 'fee_name', 'buyer', 'buyer_name', 'buyer_address', 'buyer_postcode', 'buyer_mobile', 'buyer_phone', 'send_type', 'send_no', 'note', 'seller_note');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $mallid = isset($mallid) ? intval($mallid) : 0;
+ $mallid or $mallid = '';
+ $itemid or $itemid = '';
+ $cod = isset($cod) ? intval($cod) : 0;
+ $nav = isset($nav) ? intval($nav) : -1;
+ (isset($buyer) && check_name($buyer)) or $buyer = '';
+ (isset($skuid) && is_skuid($skuid)) or $skuid = '';
+ isset($datetype) && in_array($datetype, array('addtime', 'updatetime')) or $datetype = 'addtime';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ $status = isset($status) && isset($dstatus[$status]) ? intval($status) : '';
+ $condition = "seller='$_username'";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+ if($status !== '') $condition .= " AND status='$status'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ if($mallid) $condition .= " AND mallid=$mallid";
+ if($skuid) $condition .= " AND skuid='$skuid'";
+ if($buyer) $condition .= " AND buyer='$buyer'";
+ if($cod) $condition .= " AND cod=1";
+ if(in_array($nav, array(0,1,2,3,5,6))) {
+ $condition .= " AND status=$nav";
+ $status = $nav;
+ } else if($nav == 4) {
+ $condition .= " AND status=$nav AND buyer_star=0";
+ $status = $nav;
+ }
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $status_select = dselect($dstatus, 'status', $L['status'], $status, '', 1, '', 1);
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition");
+ $items = $r['num'];
+ $pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+ $orders = $r['num'];
+ $lists = $tags = $pids = array();
+ $amount = $fee = $money = 0;
+ $result = $db->query("SELECT pid,itemid FROM {$table} WHERE $condition ORDER BY itemid DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $pid = $r['pid'] ? $r['pid'] : $r['itemid'];
+ $pids[$pid] = $pid;
+ }
+ if($pids) {
+ $result = $db->query("SELECT * FROM {$table} WHERE itemid IN (".implode(',', $pids).") ORDER BY itemid DESC");
+ while($r = $db->fetch_array($result)) {
+ $r['gone'] = $DT_TIME - $r['updatetime'];
+ if($r['status'] == 3) {
+ if($r['gone'] > ($MOD['trade_day']*86400 + $r['add_time']*3600)) {
+ $r['lefttime'] = 0;
+ } else {
+ $r['lefttime'] = secondstodate($MOD['trade_day']*86400 + $r['add_time']*3600 - $r['gone']);
+ }
+ }
+ $r['par'] = '';
+ if(strpos($r['note'], '|') !== false) list($r['note'], $r['par']) = explode('|', $r['note']);
+ $r['addtime'] = timetodate($r['addtime'], $DT_PC ? 5 : 3);
+ $r['linkurl'] = ($DT_PC ? DT_PATH : DT_MOB).'api/redirect.php?mid='.$r['mid'].'&itemid='.$r['mallid'];
+ $r['dstatus'] = $_status[$r['status']];
+ $r['money'] = $r['amount'] + $r['fee'];
+ $r['money'] = number_format($r['money'], 2, '.', '');
+ $amount += $r['amount'];
+ $fee += $r['fee'];
+ $lists[] = $r;
+ }
+ $result = $db->query("SELECT * FROM {$table} WHERE pid IN (".implode(',', $pids).") ORDER BY itemid DESC");
+ while($r = $db->fetch_array($result)) {
+ $r['par'] = '';
+ if(strpos($r['note'], '|') !== false) list($r['note'], $r['par']) = explode('|', $r['note']);
+ $r['linkurl'] = ($DT_PC ? DT_PATH : DT_MOB).'api/redirect.php?mid='.$r['mid'].'&itemid='.$r['mallid'];
+ $tags[$r['pid']][] = $r;
+ }
+ }
+ $money = $amount + $fee;
+ $money = number_format($money, 2, '.', '');
+ $head_title = $L['trade_title'];
+}
+if($DT_PC) {
+ //
+} else {
+ $wx_jssdk = array();
+ if(($action == 'muti' || $step == 'send_goods') && in_array($DT_MBS, array('weixin', 'wxxcx'))) {
+ $WX = cache_read('weixin.php');
+ if($WX['appid'] && $WX['appsecret']) {
+ require DT_ROOT.'/api/weixin/jssdk.php';
+ $jssdk = new JSSDK($WX['appid'], $WX['appsecret']);
+ $wx_jssdk = $jssdk->GetSignPackage();
+ }
+ }
+ if((!$action || $action == 'index') && !$kw) $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : 'biz.php');
+ $head_name = $head_title;
+}
+include template('trade', $module);
+?>
\ No newline at end of file
diff --git a/module/member/type.inc.php b/module/member/type.inc.php
new file mode 100644
index 0000000..5884712
--- /dev/null
+++ b/module/member/type.inc.php
@@ -0,0 +1,31 @@
+ 4 && !in_array($MODULE[$mid]['module'], array('sell', 'mall'))) $mid = 0;
+require DT_ROOT.'/include/type.class.php';
+$do = new dtype;
+$do->item = $item.($mid > 4 ? '-'.$mid : '').'-'.$_userid;
+$TYPE = $do->get_list();
+if($submit) {
+ if($MG['type_limit'] && $post[0]['typename'] && count($TYPE) > $MG['type_limit']) dalert(lang($L['type_msg_limit'], array($MG['type_limit'])), 'goback');
+ $do->update($post);
+ dmsg($L['op_update_success'], '?item='.$item.'&mid='.$mid);
+} else {
+ $head_title = lang($L['type_title'], array($names[$item]));
+ $types = $TYPE;
+ $parent_option = ''.$L['type_parent'].' '.$do->parent_option($TYPE);
+ $parent_select = ''.$parent_option .' ';
+ foreach($types as $k=>$v) {
+ $types[$k]['style_select'] = dstyle('post['.$v['typeid'].'][style]', $v['style']);
+ $types[$k]['parent_select'] = ''.str_replace('"'.$v['parentid'].'"', '"'.$v['parentid'].'" selected', $parent_option).' ';
+ }
+ $new_style = dstyle('post[0][style]');
+ $lists = sort_type($types);
+ include template('type', $module);
+}
+?>
\ No newline at end of file
diff --git a/module/member/validate.inc.php b/module/member/validate.inc.php
new file mode 100644
index 0000000..b1d2acd
--- /dev/null
+++ b/module/member/validate.inc.php
@@ -0,0 +1,181 @@
+ 3) $_SESSION['email_code'] = '';
+ (preg_match("/^[0-9]{6}$/", $code) && $_SESSION['email_code'] == md5($email.'|'.$code.'|'.$username.'|VE')) or message($L['register_pass_emailcode']);
+ $db->query("UPDATE {$DT_PRE}member SET vemail=0 WHERE email='$email'");
+ $db->query("UPDATE {$DT_PRE}member SET email='$email',vemail=1 WHERE userid=$_userid");
+ $db->query("INSERT INTO {$DT_PRE}validate (title,history,type,username,ip,addtime,status,editor,edittime) VALUES ('$email','$user[email]','email','$username','$DT_IP','$DT_TIME','3','validate','$DT_TIME')");
+ userclean($username);
+ unset($_SESSION['email_save'], $_SESSION['email_code'], $_SESSION['email_time'], $_SESSION['email_send']);
+ } else if($step == 1) {
+ captcha($captcha);
+ is_email($email) or message($L['member_email_null']);
+ if($user['vemail'] && $user['email'] == $email) message($L['send_email_exist']);
+ $emailcode = random(6, '0-9');
+ $_SESSION['email_save'] = $email;
+ $_SESSION['email_code'] = md5($email.'|'.$emailcode.'|'.$username.'|VE');
+ $_SESSION['email_time'] = $DT_TIME;
+ $_SESSION['email_oppo'] = 0;
+ $_SESSION['email_send'] = $_SESSION['email_send'] + 1;
+ $title = $L['register_msg_emailcode'];
+ $content = ob_template('emailcode', 'mail');
+ send_mail($email, $title, stripslashes($content));
+ #log_write($content, 'mail', 1);
+ } else {
+ $seconds = $second < 180 ? 180 - $second : 0;
+ $email or $email = $_email;
+ }
+ }
+ break;
+ case 'mobile':
+ $MOD['vmobile'] or dheader('index.php');
+ $could_mobile or message($L['send_sms_close']);
+ $head_title = $L['validate_mobile_title'];
+ if($user['vmobile']) {
+ $action = 'v'.$action;
+ } else {
+ (isset($mobile) && is_mobile($mobile)) or $mobile = '';
+ $session = new dsession();
+ isset($_SESSION['mobile_send']) or $_SESSION['mobile_send'] = 0;
+ isset($_SESSION['mobile_time']) or $_SESSION['mobile_time'] = 0;
+ $second = $DT_TIME - $_SESSION['mobile_time'];
+ if($step == 2) {
+ $mobile = $_SESSION['mobile_save'];
+ is_mobile($mobile) or dheader('?action='.$action);
+ $code = isset($code) ? trim($code) : '';
+ $_SESSION['mobile_oppo'] = $_SESSION['mobile_oppo'] + 1;
+ if($_SESSION['mobile_oppo'] > 3) $_SESSION['mobile_code'] = '';
+ (preg_match("/^[0-9]{6}$/", $code) && $_SESSION['mobile_code'] == md5($mobile.'|'.$code.'|'.$username.'|VM')) or message($L['register_pass_mobilecode']);
+ $db->query("UPDATE {$DT_PRE}member SET vmobile=0 WHERE mobile='$mobile'");
+ $db->query("UPDATE {$DT_PRE}member SET mobile='$mobile',vmobile=1 WHERE userid=$_userid");
+ $db->query("INSERT INTO {$DT_PRE}validate (title,history,type,username,ip,addtime,status,editor,edittime) VALUES ('$mobile','$user[mobile]','mobile','$username','$DT_IP','$DT_TIME','3','validate','$DT_TIME')");
+ userclean($username);
+ unset($_SESSION['mobile_save'], $_SESSION['mobile_code'], $_SESSION['mobile_time'], $_SESSION['mobile_send']);
+ } else if($step == 1) {
+ captcha($captcha);
+ if(!is_mobile($mobile)) message($L['member_mobile_null']);
+ if($user['vmobile'] && $user['mobile'] == $mobile) message($L['send_mobile_exist']);
+ if(max_sms($mobile)) message($L['sms_msg_max']);
+ $mobilecode = random(6, '0-9');
+ $_SESSION['mobile_save'] = $mobile;
+ $_SESSION['mobile_code'] = md5($mobile.'|'.$mobilecode.'|'.$username.'|VM');
+ $_SESSION['mobile_time'] = $DT_TIME;
+ $_SESSION['mobile_oppo'] = 0;
+ $_SESSION['mobile_send'] = $_SESSION['mobile_send'] + 1;
+ $content = lang('sms->sms_code', array($mobilecode, $MOD['auth_days']*10)).$DT['sms_sign'];
+ send_sms($mobile, $content);
+ #log_write($content, 'sms', 1);
+ } else {
+ $seconds = $second < 180 ? 180 - $second : 0;
+ $mobile or $mobile = $_mobile;
+ }
+ }
+ break;
+ case 'truename':
+ $MOD['vtruename'] or dheader('index.php');
+ $head_title = $L['validate_truename_title'];
+ $va = $db->get_one("SELECT * FROM {$DT_PRE}validate WHERE type='$action' AND username='$username'");
+ if($user['vtruename'] || $va) {
+ $action = 'v'.$action;
+ } else {
+ if($submit) {
+ captcha($captcha);
+ if(!$truename) message($L['validate_truename_name']);
+ if(!$thumb) message($L['validate_truename_image']);
+ $truename = dhtmlspecialchars($truename);
+ $thumb = dhtmlspecialchars($thumb);
+ $thumb1 = dhtmlspecialchars($thumb1);
+ $thumb2 = dhtmlspecialchars($thumb2);
+ $db->query("INSERT INTO {$DT_PRE}validate (title,history,type,username,ip,addtime,status,editor,edittime,thumb,thumb1,thumb2) VALUES ('$truename','$user[truename]','$action','$username','$DT_IP','$DT_TIME','2','system','$DT_TIME','$thumb','$thumb1','$thumb2')");
+ clear_upload($thumb.$thumb1.$thumb2, $db->insert_id(), 'validate');
+ dmsg($L['validate_truename_success'], '?action=index'.$action);
+ }
+ }
+ break;
+ case 'company':
+ ($MOD['vcompany'] && $MG['type']) or dheader('?action=index');
+ $head_title = $L['validate_company_title'];
+ $va = $db->get_one("SELECT * FROM {$DT_PRE}validate WHERE type='$action' AND username='$username'");
+ if($user['vcompany'] || $va) {
+ $action = 'v'.$action;
+ } else {
+ if($submit) {
+ captcha($captcha);
+ if(!$company) message($L['validate_company_name']);
+ if(!$thumb) message($L['validate_company_image']);
+ $company = dhtmlspecialchars($company);
+ $thumb = dhtmlspecialchars($thumb);
+ $thumb1 = dhtmlspecialchars($thumb1);
+ $thumb2 = dhtmlspecialchars($thumb2);
+ $db->query("INSERT INTO {$DT_PRE}validate (title,history,type,username,ip,addtime,status,editor,edittime,thumb,thumb1,thumb2) VALUES ('$company','$user[company]','$action','$username','$DT_IP','$DT_TIME','2','system','$DT_TIME','$thumb','$thumb1','$thumb2')");
+ clear_upload($thumb.$thumb1.$thumb2, $db->insert_id(), 'validate');
+ dmsg($L['validate_company_success'], '?action='.$action);
+ }
+ }
+ break;
+ case 'shop':
+ ($MOD['vshop'] && $MG['homepage']) or dheader('?action=index');
+ $head_title = $L['validate_shop_title'];
+ $va = $db->get_one("SELECT * FROM {$DT_PRE}validate WHERE type='$action' AND username='$username'");
+ if($user['vshop'] || $va) {
+ $action = 'v'.$action;
+ } else {
+ if($submit) {
+ captcha($captcha);
+ if(!$shop) message($L['validate_shop_name']);
+ if(!$thumb) message($L['validate_shop_image']);
+ $shop = dhtmlspecialchars($shop);
+ $thumb = dhtmlspecialchars($thumb);
+ $thumb1 = dhtmlspecialchars($thumb1);
+ $thumb2 = dhtmlspecialchars($thumb2);
+ $db->query("INSERT INTO {$DT_PRE}validate (title,history,type,username,ip,addtime,status,editor,edittime,thumb,thumb1,thumb2) VALUES ('$shop','$user[shop]','$action','$username','$DT_IP','$DT_TIME','2','system','$DT_TIME','$thumb','$thumb1','$thumb2')");
+ clear_upload($thumb.$thumb1.$thumb2, $db->insert_id(), 'validate');
+ dmsg($L['validate_shop_success'], '?action='.$action);
+ }
+ }
+ break;
+ case 'bank':
+ $head_title = $L['validate_bank_title'];
+ break;
+ default:
+ $user = userinfo($_username);
+ extract($user);
+ $head_title = $L['validate_title'];
+ break;
+}
+if($DT_PC) {
+ //
+} else {
+ if((!$action || $action == 'index') && !$kw) $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : '');
+ $head_name = $head_title;
+}
+include template('validate', $module);
+?>
\ No newline at end of file
diff --git a/module/member/weixin.inc.php b/module/member/weixin.inc.php
new file mode 100644
index 0000000..d20c384
--- /dev/null
+++ b/module/member/weixin.inc.php
@@ -0,0 +1,50 @@
+query("SELECT * FROM {$DT_PRE}weixin_user WHERE username='$_username' ORDER BY visittime DESC");
+while($r = $db->fetch_array($result)) {
+ if($i++) {
+ $db->query("UPDATE {$DT_PRE}weixin_user SET username='' WHERE itemid=$r[itemid]");
+ } else {
+ $W = $r;
+ }
+}
+switch($action) {
+ case 'ajax':
+ exit($W ? 'ok' : 'ko');
+ break;
+ case 'unbind':
+ $W or message();
+ $db->query("UPDATE {$DT_PRE}weixin_user SET username='' WHERE itemid=$W[itemid]");
+ dmsg($L['op_success'], '?action=index');
+ break;
+ case 'push':
+ $W or message();
+ $push = $W['push'] ? 0 : 1;
+ $db->query("UPDATE {$DT_PRE}weixin_user SET push=$push WHERE itemid=$W[itemid]");
+ dmsg($push ? $L['weixin_push_open'] : $L['weixin_push_close'], '?action=index');
+ break;
+ default:
+ if($W) {
+ $W['headimgurl'] or $W['headimgurl'] = DT_PATH.'api/weixin/image/headimg.jpg';
+ $sign = ($W['credittime'] && timetodate($W['credittime'], 3) == timetodate($DT_TIME, 3)) ? 1 : 0;
+ $timeout = $DT_TIME - $W['visittime'] > 172800 ? 1 : 0;
+ }
+ $auth = encrypt($_username.md5(DT_IP.DT_UA), DT_KEY.'WXQR');
+ $head_title = $L['weixin_title'];
+ break;
+}
+if($DT_PC) {
+ //
+} else {
+ if((!$action || $action == 'index') && !$kw) $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : '');
+ $head_name = $head_title;
+}
+include template('weixin', $module);
+?>
\ No newline at end of file
diff --git a/module/photo/admin/config.inc.php b/module/photo/admin/config.inc.php
new file mode 100644
index 0000000..403efa7
--- /dev/null
+++ b/module/photo/admin/config.inc.php
@@ -0,0 +1,27 @@
+
\ No newline at end of file
diff --git a/module/photo/admin/html.inc.php b/module/photo/admin/html.inc.php
new file mode 100644
index 0000000..437d6d7
--- /dev/null
+++ b/module/photo/admin/html.inc.php
@@ -0,0 +1,119 @@
+get_one("SELECT * FROM {$DT_PRE}category WHERE moduleid=$moduleid AND catid>$catids ORDER BY catid");
+ if($CAT) {
+ $bcatid = $catid = $CAT['catid'];
+ $total = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $num = 50;
+ $bfid = $fid;
+ isset($fpage) or $fpage = 1;
+ if($fpage <= $total) {
+ $fid = $fpage;
+ tohtml('list', $module);
+ $fid = $bfid;
+ msg($MOD['name'].' ['.$CAT['catname'].'] 第'.$fpage.'页至第'.($fpage+$num-1).'页生成成功'.progress(0, $fid, $tid), '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids='.$catids.'&fid='.$fid.'&tid='.$tid.'&all='.$all.'&one='.$one.'&fpage='.($fpage+$num), 0);
+ }
+ $fid++;
+ msg($MOD['name'].' ['.$CAT['catname'].'] 生成成功'.progress(0, $fid, $tid), '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids='.$catid.'&fid='.$fid.'&tid='.$tid.'&all='.$all.'&one='.$one);
+ } else {
+ $all ? msg($MOD['name'].'列表生成成功', '?moduleid='.$moduleid.'&file='.$file.'&action=show&all='.$all.'&one='.$one) : msg($MOD['name'].'列表生成成功', $this_forward);
+ }
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}category WHERE moduleid=$moduleid");
+ $tid = $r['num'];
+ msg('', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids=0&fid=1&&tid='.$tid.'&all='.$all.'&one='.$one);
+ }
+ break;
+ case 'show':
+ $update = (isset($update) && $update) ? 1 : 0;
+ if(!$update && !$MOD['show_html']) {
+ if($one) dheader( '?file=html&action=back&mid='.$moduleid);
+ $all ? msg($MOD['name'].'生成成功', $this_forward) : dmsg($MOD['name'].'生成成功', $this_forward);
+ }
+ $catid = isset($catid) ? intval($catid) : '';
+ $sql = $catid ? " AND catid=$catid" : '';
+ if(!isset($fid)) {
+ $r = $db->get_one("SELECT min(itemid) AS fid FROM {$table} WHERE status=3 {$sql}");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ }
+ isset($sid) or $sid = $fid;
+ if(!isset($tid)) {
+ $r = $db->get_one("SELECT max(itemid) AS tid FROM {$table} WHERE status=3 {$sql}");
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ }
+ if($update) {
+ require DT_ROOT.'/module/'.$module.'/'.$module.'.class.php';
+ $do = new $module($moduleid);
+ }
+ isset($num) or $num = 100;
+ if($fid <= $tid) {
+ $result = $db->query("SELECT itemid FROM {$table} WHERE status=3 AND itemid>=$fid {$sql} ORDER BY itemid LIMIT 0,$num");
+ if($db->affected_rows($result)) {
+ while($r = $db->fetch_array($result)) {
+ $itemid = $r['itemid'];
+ $update ? $do->update($itemid) : tohtml('show', $module);
+ }
+ $itemid += 1;
+ } else {
+ $itemid = $fid + $num;
+ }
+ } else {
+ if($update) {
+ $all ? msg('', '?moduleid='.$moduleid.'&file='.$file.'&action=index&all=1&one='.$one) : dmsg('更新成功', $this_forward);
+ } else {
+ if($one) dheader( '?file=html&action=back&mid='.$moduleid);
+ $all ? msg($MOD['name'].'生成成功', $this_forward) : dmsg($MOD['name'].'生成成功', $this_forward);
+ }
+ }
+ msg('ID从'.$fid.'至'.($itemid-1).$MOD['name'].($update ? '更新' : '生成').'成功'.progress($sid, $fid, $tid), "?moduleid=$moduleid&file=$file&action=$action&sid=$sid&fid=$itemid&tid=$tid&num=$num&update=$update&all=$all&one=$one", 0);
+ break;
+ case 'cate':
+ $catid or msg('请选择分类');
+ isset($num) or $num = 50;
+ isset($fid) or $fid = 1;
+ $total = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ if($fpage && $tpage) {
+ $fid = $fpage;
+ $num = $tpage - $fpage + 1;
+ tohtml('list', $module);
+ dmsg('生成成功', $this_forward);
+ }
+ if($fid <= $total) {
+ tohtml('list', $module);
+ msg('第'.$fid.'页至第'.($fid+$num-1).'页生成成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catid='.$catid.'&fid='.($fid+$num).'&num='.$num.'&fpage='.$fpage.'&tpage='.$tpage, 0);
+ } else {
+ dmsg('生成成功', $this_forward);
+ }
+ break;
+ case 'item':
+ $catid or msg('请选择分类');
+ msg('', '?moduleid='.$moduleid.'&file='.$file.'&action=show&catid='.$catid.'&num='.$num);
+ break;
+ default:
+ $r = $db->get_one("SELECT min(itemid) AS fid,max(itemid) AS tid FROM {$table} WHERE status=3");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ include tpl('html', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/photo/admin/index.inc.php b/module/photo/admin/index.inc.php
new file mode 100644
index 0000000..dacf587
--- /dev/null
+++ b/module/photo/admin/index.inc.php
@@ -0,0 +1,349 @@
+ 9 ? " AND level>0" : " AND level=$level";
+ if($open) $condition .= " AND open=$open";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+ if($thumb) $condition .= " AND thumb<>''";
+ if($guest) $condition .= " AND username=''";
+ if($ip) $condition .= " AND ip='$ip'";
+ if($username) $condition .= " AND username='$username'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+
+ $timetype = strpos($dorder[$order], 'edit') === false ? 'add' : '';
+}
+switch($action) {
+ case 'add':
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ $do->add($post);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ if($MOD['show_html'] && $post['status'] > 2) $do->tohtml($do->itemid);
+ dmsg('添加成功', '?moduleid='.$moduleid.'&id='.$do->itemid.'&tm='.($DT_TIME+5));
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $content = '';
+ $status = $open = 3;
+ $addtime = timetodate($DT_TIME);
+ $username = $_username;
+ $item = array();
+ $menuid = 0;
+ isset($url) or $url = '';
+ if($url) {
+ $tmp = fetch_url($url);
+ if($tmp) extract($tmp);
+ }
+ $history = 0;
+ include tpl('edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ $item = $do->get_one();
+ extract($item);
+ $history = history($moduleid, $itemid);
+ $addtime = timetodate($addtime);
+ $menuon = array('4', '3', '2', '1');
+ $menuid = $menuon[$status];
+ include tpl($action, $module);
+ }
+ break;
+ case 'move':
+ if($submit) {
+ $fromids or msg('请填写来源ID');
+ if($tocatid) {
+ $db->query("UPDATE {$table} SET catid=$tocatid WHERE `{$fromtype}` IN ($fromids)");
+ dmsg('移动成功', $forward);
+ } else {
+ msg('请选择目标分类');
+ }
+ } else {
+ $itemid = $itemid ? implode(',', $itemid) : '';
+ $menuid = 5;
+ include tpl($action);
+ }
+ break;
+ case 'update':
+ is_array($itemid) or msg('请选择'.$MOD['name']);
+ foreach($itemid as $v) {
+ $do->update($v);
+ }
+ dmsg('更新成功', $forward);
+ break;
+ case 'tohtml':
+ is_array($itemid) or msg('请选择'.$MOD['name']);
+ $html_itemids = $itemid;
+ foreach($html_itemids as $itemid) {
+ tohtml('show', $module);
+ }
+ dmsg('生成成功', $forward);
+ break;
+ case 'delete':
+ $itemid or msg('请选择'.$MOD['name']);
+ isset($recycle) ? $do->recycle($itemid) : $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'restore':
+ $itemid or msg('请选择'.$MOD['name']);
+ $do->restore($itemid);
+ dmsg('还原成功', $forward);
+ break;
+ case 'clear':
+ $do->clear();
+ dmsg('清空成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择'.$MOD['name']);
+ $level = intval($level);
+ $do->level($itemid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ case 'recycle':
+ $lists = $do->get_list('status=0'.$condition, $dorder[$order]);
+ $menuid = 4;
+ include tpl('index', $module);
+ break;
+ case 'reject':
+ if($itemid && !$psize) {
+ $do->reject($itemid);
+ dmsg('拒绝成功', $forward);
+ } else {
+ $lists = $do->get_list('status=1'.$condition, $dorder[$order]);
+ $menuid = 3;
+ include tpl('index', $module);
+ }
+ break;
+ case 'check':
+ if($itemid && !$psize) {
+ $do->check($itemid);
+ dmsg('审核成功', $forward);
+ } else {
+ $lists = $do->get_list('status=2'.$condition, $dorder[$order]);
+ $menuid = 2;
+ include tpl('index', $module);
+ }
+ break;
+ case 'item':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if(isset($update)) {
+ $thumb = '';
+ if($muti_upload) {
+ foreach(explode('|', $muti_upload) as $v) {
+ if(is_url($v)) {
+ $thumb .= $v;
+ $db->query("INSERT INTO {$table_item} (item,thumb) VALUES ('$itemid', '$v')");
+ }
+ }
+ }
+ $do->item_update($post);
+ if($MOD['show_html']) tohtml('show', $module);
+ dmsg('保存成功', '?moduleid='.$moduleid.'&action='.$action.'&itemid='.$itemid);
+ } else {
+ $lists = $do->item_list("item=$itemid");
+ $item = $do->get_one();
+ if($items != $item['items']) $db->query("UPDATE {$table} SET items=$items WHERE itemid=$itemid");
+ $menuid = 1;
+ include tpl($action, $module);
+ }
+ break;
+ case 'item_delete':
+ $itemid or msg();
+ $do->item_delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'dir':
+ $itemid or msg();
+ if(file_ext($name) == 'zip' && is_file(DT_ROOT.'/file/temp/'.$name)) {
+ $name = substr($name, 0, -4);
+ dir_create(DT_ROOT.'/file/temp/'.$name);
+ require DT_ROOT.'/admin/unzip.class.php';
+ $zip = new unzip;
+ $zip->extract_zip(DT_ROOT.'/file/temp/'.$name.'.zip', DT_ROOT.'/file/temp/'.$name);
+ file_del(DT_ROOT.'/file/temp/'.$name.'.zip');
+ }
+ preg_match("/[a-z0-9_\-]/i", $name) or msg('目录名应为数字、字母、下划线、中划线的组合');
+ $dir = DT_ROOT.'/file/temp/'.$name;
+ is_dir($dir) or msg('目录不存在');
+ require DT_ROOT.'/include/image.class.php';
+ require DT_ROOT.'/include/bmp.func.php';
+ if($DT['ftp_remote'] && $DT['remote_url']) {
+ require DT_ROOT.'/include/ftp.class.php';
+ $ftp = new dftp($DT['ftp_host'], $DT['ftp_user'], $DT['ftp_pass'], $DT['ftp_port'], $DT['ftp_path'], $DT['ftp_pasv'], $DT['ftp_ssl']);
+ }
+ $i = 0;
+ foreach(get_file($dir) as $f) {
+ if(is_image($f)) {
+ $info = getimagesize($f);
+ if(!$info) continue;
+ $img_w = $info[0];
+ $img_h = $info[1];
+ if($img_w < $DT['middle_w']) continue;
+ $ext = file_ext($f);
+ $size = filesize($f);
+ if($DT['bmp_jpg'] && $ext == 'bmp') {
+ $bmp = imagecreatefrombmp($f);
+ if($bmp) {
+ $f = str_replace('.bmp', '.jpg', $f);
+ $ext = 'jpg';
+ imagejpeg($bmp, $f);
+ }
+ }
+ if($DT['max_image'] && $img_w > $DT['max_image']) {
+ $img_h = intval($DT['max_image']*$img_h/$img_w);
+ $img_w = $DT['max_image'];
+ $image = new image($f);
+ $image->thumb($img_w, $img_h);
+ }
+ $file = 'file/upload/'.timetodate($DT_TIME, $DT['uploaddir']).'/'.date('H-i-s', $DT_TIME).'-'.rand(10, 99).'-'.$_userid.'.'.$ext;
+ $L = $file;
+ $M = $file.'.middle.'.$ext;
+ $T = $file.'.thumb.'.$ext;
+ if(file_copy($f, DT_ROOT.'/'.$L)) {
+ file_copy($f, DT_ROOT.'/'.$M);
+ file_copy($f, DT_ROOT.'/'.$T);
+ if($DT['water_type'] == 2) {
+ $image = new image(DT_ROOT.'/'.$L);
+ $image->waterimage();
+ } else if($DT['water_type'] == 1) {
+ $image = new image(DT_ROOT.'/'.$L);
+ $image->watertext();
+ }
+ $image = new image(DT_ROOT.'/'.$M);
+ $image->thumb($DT['middle_w'], $DT['middle_h']);
+ $image = new image(DT_ROOT.'/'.$T);
+ $image->thumb(100, 100);
+ $saveto = linkurl($T);
+ if($DT['ftp_remote'] && $DT['remote_url']) {
+ if($ftp->connected) {
+ $exp = explode("file/upload/", $saveto);
+ $_saveto = 'file/upload/'.$exp[1];
+ $remote = $exp[1];
+ if($ftp->dftp_put($_saveto, $remote)) {
+ $saveto = $DT['remote_url'].$remote;
+ $DT['ftp_save'] or file_del(DT_ROOT.'/'.$_saveto);
+ if(strpos($_saveto, '.thumb.') !== false) {
+ $local = str_replace('.thumb.'.$ext, '', $_saveto);
+ $remote = str_replace('.thumb.'.$ext, '', $exp[1]);
+ $ftp->dftp_put($local, $remote);
+ $DT['ftp_save'] or file_del(DT_ROOT.'/'.$local);
+ $local = str_replace('.thumb.'.$ext, '.middle.'.$ext, $_saveto);
+ $remote = str_replace('.thumb.'.$ext, '.middle.'.$ext, $exp[1]);
+ $ftp->dftp_put($local, $remote);
+ $DT['ftp_save'] or file_del(DT_ROOT.'/'.$local);
+ }
+ }
+ }
+ }
+ if($DT['uploadlog']) $db->query("INSERT INTO {$DT_PRE}upload_".($_userid%10)." (item,fileurl,filesize,fileext,upfrom,width,height,moduleid,username,ip,addtime,itemid) VALUES ('".md5($saveto)."','$saveto','$size','$ext','photo','$img_w','$img_h','$moduleid','$_username','$DT_IP','$DT_TIME','$itemid')");
+ $db->query("INSERT INTO {$table_item} (item, thumb) VALUES ('$itemid', '$saveto')");
+ $i++;
+ }
+ }
+ }
+ dir_delete($dir);
+ msg('成功添加 '.$i.' 张图片', '?moduleid='.$moduleid.'&action=item&itemid='.$itemid);
+ break;
+ case 'zip':
+ $itemid or msg();
+ $_FILES['uploadfile']['size'] or msg('请选择zip文件');
+ require DT_ROOT.'/include/upload.class.php';
+ $name = date('YmdHis').mt_rand(10, 99).$_userid;
+ $upload = new upload($_FILES, 'file/temp/', $name.'.zip', 'zip');
+ $upload->adduserid = false;
+ if($upload->save()) {
+ dir_create(DT_ROOT.'/file/temp/'.$name);
+ require DT_ROOT.'/admin/unzip.class.php';
+ $zip = new unzip;
+ $zip->extract_zip(DT_ROOT.'/file/temp/'.$name.'.zip', DT_ROOT.'/file/temp/'.$name);
+ file_del(DT_ROOT.'/file/temp/'.$name.'.zip');
+ if(glob(DT_ROOT.'/file/temp/'.$name.'/*.*')) {
+ msg('上传并解压缩成功,正在读取..', '?moduleid='.$moduleid.'&action=dir&name='.$name.'&itemid='.$itemid);
+ } else {
+ msg('解压缩失败,请检查目录权限');
+ }
+ } else {
+ msg($upload->errmsg);
+ }
+ break;
+ default:
+ $lists = $do->get_list('status=3'.$condition, $dorder[$order]);
+ $menuid = 1;
+ include tpl('index', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/photo/admin/install.inc.php b/module/photo/admin/install.inc.php
new file mode 100644
index 0000000..5afac0d
--- /dev/null
+++ b/module/photo/admin/install.inc.php
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/module/photo/admin/menu.inc.php b/module/photo/admin/menu.inc.php
new file mode 100644
index 0000000..c50d2ab
--- /dev/null
+++ b/module/photo/admin/menu.inc.php
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/module/photo/admin/template/edit.tpl.php b/module/photo/admin/template/edit.tpl.php
new file mode 100644
index 0000000..32f2c4d
--- /dev/null
+++ b/module/photo/admin/template/edit.tpl.php
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+单页采编
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/photo/admin/template/html.tpl.php b/module/photo/admin/template/html.tpl.php
new file mode 100644
index 0000000..339891c
--- /dev/null
+++ b/module/photo/admin/template/html.tpl.php
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/photo/admin/template/index.tpl.php b/module/photo/admin/template/index.tpl.php
new file mode 100644
index 0000000..5ae91d5
--- /dev/null
+++ b/module/photo/admin/template/index.tpl.php
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+取消', 0, 'onchange="this.form.action=\'?moduleid='.$moduleid.'&file='.$file.'&action=level\';this.form.submit();"');?>
+
+
+
+'.$pages.'' : '';?>
+
+ $DT_TIME) { ?>
+
+
+
+
\ No newline at end of file
diff --git a/module/photo/admin/template/setting.tpl.php b/module/photo/admin/template/setting.tpl.php
new file mode 100644
index 0000000..ce3ac3f
--- /dev/null
+++ b/module/photo/admin/template/setting.tpl.php
@@ -0,0 +1,464 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/photo/admin/uninstall.inc.php b/module/photo/admin/uninstall.inc.php
new file mode 100644
index 0000000..ff2e6d7
--- /dev/null
+++ b/module/photo/admin/uninstall.inc.php
@@ -0,0 +1,6 @@
+query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_data_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_item_".$moduleid."`");
+?>
\ No newline at end of file
diff --git a/module/photo/common.inc.php b/module/photo/common.inc.php
new file mode 100644
index 0000000..621b9bd
--- /dev/null
+++ b/module/photo/common.inc.php
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/module/photo/global.func.php b/module/photo/global.func.php
new file mode 100644
index 0000000..14c370a
--- /dev/null
+++ b/module/photo/global.func.php
@@ -0,0 +1,37 @@
+$v) {
+ $T[$k]['linkurl'] = str_replace('{destoon_page}', $k + 1, $demo_url);
+ $T[$k]['page'] = $k + 1;
+ if($page == $k + 1) $j = $i;
+ $i++;
+ }
+ if($i < 5) return $T;
+ $N = $T;
+ $N = array_merge($N, $T);
+ $N = array_merge($N, $T);
+ if(isset($N[$j + $i - 2])) $S[] = $N[$j + $i - 2];
+ if(isset($N[$j + $i - 1])) $S[] = $N[$j + $i - 1];
+ if(isset($N[$j + $i])) $S[] = $N[$j + $i];
+ if(isset($N[$j + $i + 1])) $S[] = $N[$j + $i + 1];
+ if(isset($N[$j + $i + 2])) $S[] = $N[$j + $i + 2];
+ return $S;
+}
+
+function next_photo($page, $items, $demo_url) {
+ if($page == $items) return 'javascript:PhotoLast();';
+ $demo_url = str_replace(array('%7B', '%7D'), array('{', '}'), $demo_url);
+ $p = $page == $items ? 1 : $page + 1;
+ return str_replace('{destoon_page}', $p, $demo_url).'#p';
+}
+
+function prev_photo($page, $items, $demo_url) {
+ $demo_url = str_replace(array('%7B', '%7D'), array('{', '}'), $demo_url);
+ $p = $page == 1 ? $items : $page - 1;
+ return str_replace('{destoon_page}', $p, $demo_url).'#p';
+}
+?>
\ No newline at end of file
diff --git a/module/photo/index.htm.php b/module/photo/index.htm.php
new file mode 100644
index 0000000..323d570
--- /dev/null
+++ b/module/photo/index.htm.php
@@ -0,0 +1,46 @@
+0';
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].'index.php?page={destoon_page}');
+ $tags = array();
+ if($items) {
+ $order = $MOD['order'];
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put(str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename), $data);
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/photo/index.inc.php b/module/photo/index.inc.php
new file mode 100644
index 0000000..b54d97a
--- /dev/null
+++ b/module/photo/index.inc.php
@@ -0,0 +1,40 @@
+ 1 ? 'index.php?page='.$page : '');
+} else {
+ $condition = 'status=3 AND open=3 AND items>0';
+ if($cityid) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize);
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+}
+$seo_file = 'index';
+include DT_ROOT.'/include/seo.inc.php';
+include template($MOD['template_index'] ? $MOD['template_index'] : 'index', $module);
+?>
\ No newline at end of file
diff --git a/module/photo/list.htm.php b/module/photo/list.htm.php
new file mode 100644
index 0000000..00f5fa4
--- /dev/null
+++ b/module/photo/list.htm.php
@@ -0,0 +1,94 @@
+0';
+$condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+if($page == 1) {
+ $items = $db->count($table, $condition);
+ if($items != $CAT['item']) {
+ $CAT['item'] = $items;
+ $db->query("UPDATE {$DT_PRE}category SET item=$items WHERE catid=$catid");
+ }
+} else {
+ $items = $CAT['item'];
+}
+$pagesize = $MOD['pagesize'];
+$showpage = 1;
+$datetype = 3;
+$target = '_blank';
+$width = 168;
+$height = 124;
+$template = $CAT['template'] ? $CAT['template'] : ($MOD['template_list'] ? $MOD['template_list'] : 'list');
+$total = max(ceil($items/$MOD['pagesize']), 1);
+if(isset($fid) && isset($num)) {
+ $page = $fid;
+ $topage = $fid + $num - 1;
+ $total = $topage < $total ? $topage : $total;
+}
+for(; $page <= $total; $page++) {
+ $offset = ($page-1)*$pagesize;
+ $pages = listpages($CAT, $items, $page, $pagesize);
+ $tags = array();
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}");
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $seo_file = 'list';
+ include DT_ROOT.'/include/seo.inc.php';
+ $destoon_task = "moduleid=$moduleid&html=list&catid=$catid&page=$page";
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].($page > 1 ?listurl($CAT, $page) : $CAT['linkurl']);
+ $filename = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, $page);
+ $_tags = $tags;
+ $DT_PC = $GLOBALS['DT_PC'] = 1;
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ if($DT['pcharset']) $filename = convert($filename, DT_CHARSET, $DT['pcharset']);
+ file_put($filename, $data);
+ if($page == 1) {
+ $indexname = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, 0);
+ if($DT['pcharset']) $indexname = convert($indexname, DT_CHARSET, $DT['pcharset']);
+ file_copy($filename, $indexname);
+ }
+ if($EXT['mobile_enable']) {
+ include DT_ROOT.'/include/mobile.htm.php';
+ $head_pc = str_replace($MOD['mobile'], $MOD['linkurl'], $head_mobile);
+ if($CAT['parentid']) $PCAT = get_cat($CAT['parentid']);
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($CAT, '{destoon_page}'));
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $tags = array();
+ foreach($_tags as $r) {
+ $r['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $r['linkurl']);
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ if($items) $js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid;
+ $head_title = $head_name = $CAT['catname'];
+ $filename = str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename);
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put($filename, $data);
+ if($page == 1) file_copy($filename, str_replace(DT_ROOT, DT_ROOT.'/mobile', $indexname));
+ }
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/photo/photo.class.php b/module/photo/photo.class.php
new file mode 100644
index 0000000..b9c78c0
--- /dev/null
+++ b/module/photo/photo.class.php
@@ -0,0 +1,350 @@
+moduleid = $moduleid;
+ $this->table = $table;
+ $this->table_data = $table_data;
+ $this->table_item = $table_item;
+ $this->split = $MOD['split'];
+ $this->fields = array('catid','areaid','level','title','style','fee','introduce','thumb','banner','status','hits','open','password','question','answer','username','addtime', 'editor','edittime','ip','template', 'linkurl','filepath','domain','note');
+ }
+
+ function photo($moduleid) {
+ $this->__construct($moduleid);
+ }
+
+ function pass($post) {
+ if(!is_array($post)) return false;
+ if(!$post['catid']) return $this->_(lang('message->pass_catid'));
+ if(strlen($post['title']) < 3) return $this->_(lang('message->pass_title'));
+ if(!is_url($post['thumb'])) return $this->_(lang('message->pass_thumb'));
+ if(!$post['password'] && $post['open'] == 2) return $this->_(lang('photo->pass_password'));
+ if(!$post['question'] && $post['open'] == 1) return $this->_(lang('photo->pass_question'));
+ if(!$post['answer'] && $post['open'] == 1) return $this->_(lang('photo->pass_answer'));
+ if(DT_MAX_LEN && strlen(clear_img($post['content'])) > DT_MAX_LEN) $this->_(lang('message->pass_max'));
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $_username, $_userid, $_cname;
+ $post['filepath'] = (isset($post['filepath']) && is_filepath($post['filepath'])) ? file_vname($post['filepath']) : '';
+ $post['addtime'] = (isset($post['addtime']) && is_time($post['addtime'])) ? datetotime($post['addtime']) : DT_TIME;
+ $post['editor'] = $_cname ? $_cname : $_username;
+ $post['edittime'] = DT_TIME;
+ $post['content'] = stripslashes($post['content']);
+ $post['fee'] = dround($post['fee']);
+ $post['content'] = save_local($post['content']);
+ if($MOD['clear_link']) $post['content'] = clear_link($post['content']);
+ if($MOD['save_remotepic']) $post['content'] = save_remote($post['content']);
+ if($MOD['introduce_length']) $post['introduce'] = addslashes(get_intro($post['content'], $MOD['introduce_length']));
+ if($this->itemid) {
+ $new = $post['content'];
+ if($post['thumb']) $new .= ' ';
+ $r = $this->get_one();
+ $old = $r['content'];
+ if($r['thumb']) $old .= ' ';
+ delete_diff($new, $old);
+ } else {
+ $post['ip'] = DT_IP;
+ }
+ $content = $post['content'];
+ unset($post['content']);
+ $post = dhtmlspecialchars($post);
+ $post['content'] = addslashes(dsafe($content));
+ return array_map("trim", $post);
+ }
+
+ function get_one() {
+ $r = DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$this->itemid");
+ if($r) {
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ $t = DB::get_one("SELECT content FROM {$content_table} WHERE itemid=$this->itemid");
+ $r['content'] = $t ? $t['content'] : '';
+ return $r;
+ } else {
+ return array();
+ }
+ }
+
+ function get_list($condition = 'status=3', $order = 'addtime DESC', $cache = '') {
+ global $MOD, $pages, $page, $pagesize, $offset, $items, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition", $cache);
+ $items = $r['num'];
+ }
+ $pages = defined('CATID') ? listpages(1, CATID, $items, $page, $pagesize, 10, $MOD['linkurl']) : pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = $catids = $CATS = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize", $cache);
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $catids[$r['catid']] = $r['catid'];
+ $lists[] = $r;
+ }
+ if($catids) {
+ $result = DB::query("SELECT catid,catname,linkurl FROM ".DT_PRE."category WHERE catid IN (".implode(',', $catids).")");
+ while($r = DB::fetch_array($result)) {
+ $CATS[$r['catid']] = $r;
+ }
+ if($CATS) {
+ foreach($lists as $k=>$v) {
+ $lists[$k]['catname'] = $v['catid'] ? $CATS[$v['catid']]['catname'] : '';
+ $lists[$k]['caturl'] = $v['catid'] ? $MOD['linkurl'].$CATS[$v['catid']]['linkurl'] : '';
+ }
+ }
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $MOD;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ DB::query("REPLACE INTO {$content_table} (itemid,content) VALUES ('$this->itemid', '$post[content]')");
+ $this->update($this->itemid);
+ if($post['status'] == 3 && $post['username'] && $MOD['credit_add']) {
+ credit_add($post['username'], $MOD['credit_add']);
+ credit_record($post['username'], $MOD['credit_add'], 'system', lang('my->credit_record_add', array($MOD['name'])), 'ID:'.$this->itemid);
+ }
+ clear_upload($post['content'].$post['thumb'], $this->itemid);
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $this->delete($this->itemid, false);
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ DB::query("REPLACE INTO {$content_table} (itemid,content) VALUES ('$this->itemid', '$post[content]')");
+ $this->update($this->itemid);
+ clear_upload($post['content'].$post['thumb'], $this->itemid);
+ if($post['status'] > 2) {
+ history($this->moduleid, $this->itemid, 'del');
+ $this->tohtml($this->itemid, $post['catid']);
+ }
+ return true;
+ }
+
+ function tohtml($itemid = 0, $catid = 0) {
+ global $module, $MOD;
+ if($MOD['show_html'] && $itemid) tohtml('show', $module, "itemid=$itemid");
+ }
+
+ function update($itemid) {
+ $item = DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$itemid");
+ $update = '';
+ $keyword = $item['title'].','.strip_tags(cat_pos(get_cat($item['catid']), ','));
+ if($keyword != $item['keyword']) {
+ $keyword = str_replace("//", '', addslashes($keyword));
+ $update .= ",keyword='$keyword'";
+ }
+ $item['itemid'] = $itemid;
+ $linkurl = itemurl($item);
+ if($linkurl != $item['linkurl']) $update .= ",linkurl='$linkurl'";
+ if($update) DB::query("UPDATE {$this->table} SET ".(substr($update, 1))." WHERE itemid=$itemid");
+ }
+
+ function recycle($itemid) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->recycle($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=0 WHERE itemid=$itemid");
+ $this->delete($itemid, false);
+ return true;
+ }
+ }
+
+ function restore($itemid) {
+ global $module, $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->restore($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=3 WHERE itemid=$itemid");
+ if($MOD['show_html']) tohtml('show', $module, "itemid=$itemid");
+ return true;
+ }
+ }
+
+ function delete($itemid, $all = true) {
+ global $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->delete($v, $all);
+ }
+ } else {
+ $this->itemid = $itemid;
+ $r = $this->get_one();
+ if($MOD['show_html']) {
+ $_file = DT_ROOT.'/'.$MOD['moduledir'].'/'.$r['linkurl'];
+ html_del($_file);
+ }
+ if($all) {
+ $userid = get_user($r['username']);
+ if($r['thumb']) delete_upload($r['thumb'], $userid);
+ if($r['content']) delete_local($r['content'], $userid);
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ DB::query("DELETE FROM {$content_table} WHERE itemid=$itemid");
+ if($MOD['cat_property']) DB::query("DELETE FROM ".DT_PRE."category_value WHERE moduleid=$this->moduleid AND itemid=$itemid");
+ $result = DB::query("SELECT * FROM {$this->table_item} WHERE item=$itemid");
+ while($rr = DB::fetch_array($result)) {
+ delete_upload($rr['thumb'], $userid);
+ }
+ DB::query("DELETE FROM {$this->table_item} WHERE item=$itemid");
+ if($r['username'] && $MOD['credit_del']) {
+ credit_add($r['username'], -$MOD['credit_del']);
+ credit_record($r['username'], -$MOD['credit_del'], 'system', lang('my->credit_record_del', array($MOD['name'])), 'ID:'.$this->itemid);
+ }
+ history($this->moduleid, $itemid, 'del');
+ }
+ }
+ }
+
+ function check($itemid) {
+ global $_username, $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->check($v); }
+ } else {
+ $this->itemid = $itemid;
+ $item = $this->get_one();
+ if($MOD['credit_add'] && $item['username'] && $item['hits'] < 1) {
+ credit_add($item['username'], $MOD['credit_add']);
+ credit_record($item['username'], $MOD['credit_add'], 'system', lang('my->credit_record_add', array($MOD['name'])), 'ID:'.$this->itemid);
+ }
+ DB::query("UPDATE {$this->table} SET status=3,editor='$_username',edittime=".DT_TIME." WHERE itemid=$itemid");
+ history($this->moduleid, $itemid, 'del');
+ $this->tohtml($itemid);
+ return true;
+ }
+ }
+
+ function reject($itemid) {
+ global $_username;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->reject($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=1,editor='$_username' WHERE itemid=$itemid");
+ return true;
+ }
+ }
+
+ function clear($condition = 'status=0') {
+ $result = DB::query("SELECT itemid FROM {$this->table} WHERE $condition");
+ while($r = DB::fetch_array($result)) {
+ $this->delete($r['itemid']);
+ }
+ }
+
+ function level($itemid, $level) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET level=$level WHERE itemid IN ($itemids)");
+ }
+
+ function item_list($condition = 'status=3', $order = 'listorder ASC,itemid ASC', $cache = '') {
+ global $MOD, $pages, $page, $pagesize, $offset, $items, $sum;
+ if($MOD['maxitem'] > 0 && $MOD['maxitem'] < 100) {
+ $pagesize = $MOD['maxitem'];
+ $offset = ($page-1)*$pagesize;
+ }
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table_item} WHERE $condition", $cache);
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = $catids = $CATS = array();
+ $result = DB::query("SELECT * FROM {$this->table_item} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize", $cache);
+ while($r = DB::fetch_array($result)) {
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function item_update($post) {
+ global $L, $thumb;
+ $post = dhtmlspecialchars($post);
+ foreach($post as $v) {
+ $thumb .= $v['thumb'];
+ }
+ if($thumb) clear_upload($thumb, $this->itemid, $this->table_item);
+ if(isset($post[0])) {
+ if(is_url($post[0]['thumb'])) {
+ $thumb = $post[0]['thumb'];
+ $listorder = intval($post[0]['listorder']);
+ $introduce = $post[0]['introduce'];
+ if($introduce == $L['photo_intro']) $introduce = '';
+ DB::query("INSERT INTO {$this->table_item} (item,thumb,introduce,listorder) VALUES ('$this->itemid', '$thumb','$introduce','$listorder')");
+ }
+ unset($post[0]);
+ }
+ foreach($post as $k=>$v) {
+ if(isset($v['delete'])) {
+ $this->item_delete($k);
+ continue;
+ }
+ if($v['thumb']) {
+ $thumb = $v['thumb'];
+ $listorder = intval($v['listorder']);
+ $introduce = $v['introduce'];
+ if($introduce == $L['photo_intro']) $introduce = '';
+ DB::query("UPDATE {$this->table_item} SET thumb='$thumb',introduce='$introduce',listorder='$listorder' WHERE itemid=$k");
+ } else {
+ $this->item_delete($k);
+ }
+ }
+ }
+
+ function item_delete($itemid = 0) {
+ global $_userid;
+ if($itemid) {
+ $r = DB::get_one("SELECT thumb FROM {$this->table_item} WHERE itemid=$itemid");
+ if($r) {
+ delete_upload($r['thumb'], $_userid);
+ DB::query("DELETE FROM {$this->table_item} WHERE itemid=$itemid");
+ }
+ } else {
+ $result = DB::query("SELECT thumb FROM {$this->table_item} WHERE item=$this->itemid");
+ while($r = DB::fetch_array($result)) {
+ delete_upload($r['thumb'], $_userid);
+ }
+ DB::query("DELETE FROM {$this->table_item} WHERE item=$this->itemid");
+ }
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/photo/task.inc.php b/module/photo/task.inc.php
new file mode 100644
index 0000000..8ba1747
--- /dev/null
+++ b/module/photo/task.inc.php
@@ -0,0 +1,89 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3) exit;
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ $currency = $MOD['fee_currency'];
+ $fee_unit = $currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $fee_name = $currency == 'money' ? $DT['money_name'] : $DT['credit_name'];
+ $inner = false;
+ if(check_group($_groupid, $MOD['group_show'])) {
+ if($fee) {
+ $inner = true;
+ if($MG['fee_mode'] && $MOD['fee_mode']) {
+ $user_status = 3;
+ } else {
+ $mid = $moduleid;
+ if($_userid) {
+ $user_status = check_pay($mid, $itemid) ? 3 : 2;
+ } else {
+ $user_status = 0;
+ }
+ }
+ } else {
+ $user_status = 3;
+ }
+ } else {
+ $inner = true;
+ $user_status = $_userid ? 1 : 0;
+ }
+ if($_username && $_username == $item['username']) $user_status = 3;
+ if($inner) {
+ if($user_status == 3) {
+ $T = array();
+ $result = $db->query("SELECT itemid,thumb,introduce FROM {$table_item} WHERE item=$itemid ORDER BY listorder ASC,itemid ASC");
+ while($r = $db->fetch_array($result)) {
+ $T[] = $r;
+ }
+ $demo_url = $MOD['linkurl'].itemurl($item, '{destoon_page}');
+ $next_photo = $items > 1 ? next_photo($page, $items, $demo_url) : $linkurl;
+ $prev_photo = $items > 1 ? prev_photo($page, $items, $demo_url) : $linkurl;
+ if($T) {
+ $S = side_photo($T, $page, $demo_url);
+ } else {
+ $S = array();
+ $T[0]['thumb'] = DT_SKIN.'image/spacer.gif';
+ $T[0]['introduce'] = $L['no_picture'];
+ }
+ $P = $T[$page-1];
+ $P['src'] = str_replace('.thumb.'.file_ext($P['thumb']), '', $P['thumb']);
+ $action = 'side';
+ $content = strip_nr(ob_template('content', 'chip'), true);
+ echo 'Inner("side", \''.$content.'\');';
+ $action = '';
+ }
+ $content = strip_nr(ob_template('content', 'chip'), true);
+ echo 'Inner("photo", \''.$content.'\');';
+ }
+ $update = '';
+ if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+ if($MOD['hits']) echo 'Inner("hits", \''.$item['hits'].'\');';
+ if($MOD['show_html'] && $task_item && $DT_TIME - @filemtime(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl']) > $task_item) tohtml('show', $module);
+} else if($html == 'list') {
+ $catid or exit;
+ if($MOD['list_html'] && $task_list && $CAT) {
+ $num = 1;
+ $totalpage = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $demo = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, '{DEMO}');
+ $fid = $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $page + 1;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $totalpage + 1 - $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ }
+} else if($html == 'index') {
+ if($DT['cache_hits'] && $MOD['hits']) {
+ $file = DT_CACHE.'/hits-'.$moduleid;
+ if($DT_TIME - @filemtime($file.'.dat') > $DT['cache_hits'] || @filesize($file.'.php') > 102400) update_hits($moduleid, $table);
+ }
+ if($MOD['index_html']) {
+ $file = DT_ROOT.'/'.$MOD['moduledir'].'/'.$DT['index'].'.'.$DT['file_ext'];
+ if($DT_TIME - @filemtime($file) > $task_index) tohtml('index', $module);
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/photo/view.inc.php b/module/photo/view.inc.php
new file mode 100644
index 0000000..a749cd8
--- /dev/null
+++ b/module/photo/view.inc.php
@@ -0,0 +1,70 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid AND status=3");
+if($item) {
+ extract($item);
+} else {
+ include load('404.inc');
+}
+$CAT = get_cat($catid);
+if(!check_group($_groupid, $CAT['group_show'])) include load('403.inc');
+if($open < 3) {
+ $_key = $open == 2 ? $password : $answer;
+ $str = get_cookie('photo_'.$itemid);
+ $pass = $str == md5(md5(DT_IP.$open.$_key.DT_KEY.'PHOTO'));
+ if($_username && $_username == $username) $pass = true;
+} else {
+ $pass = true;
+}
+$pass or dheader($modurl.'private.php?itemid='.$itemid);
+require DT_ROOT.'/include/content.class.php';
+if(DC::fee($item['fee'], $MOD['fee_view'])) {
+ if($MG['fee_mode'] && $MOD['fee_mode']) {
+ $user_status = 3;
+ } else if($_userid && check_pay($moduleid, $itemid)) {
+ $user_status = 3;
+ } else {
+ $user_status = 0;
+ }
+} else {
+ $user_status = 3;
+}
+$user_status == 3 or dheader($linkurl);
+
+$adddate = timetodate($addtime, 3);
+$editdate = timetodate($edittime, 3);
+$linkurl = $modurl.$linkurl;
+$pagesize = 30;
+$offset = ($page-1)*$pagesize;
+$pages = pages($items, $page, $pagesize);
+$T = array();
+$i = 1;
+$result = $db->query("SELECT itemid,thumb,introduce FROM {$table_item} WHERE item=$itemid ORDER BY listorder ASC,itemid ASC LIMIT $offset,$pagesize");
+while($r = $db->fetch_array($result)) {
+ $r['number'] = $offset + $i++;
+ $r['linkurl'] = $modurl.itemurl($item, $r['number']).($DT_PC ? '#p' : '');
+ $r['thumb'] = str_replace('.thumb.', '.middle.', $r['thumb']);
+ $r['title'] = $r['introduce'] ? dsubstr($r['introduce'], 46, '..') : ' ';
+ $T[] = $r;
+}
+
+$update = '';
+if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+$seo_file = 'show';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $MOD['template_view'] ? $MOD['template_view'] : 'view';
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+} else {
+ $head_title = $head_name = $CAT['catname'];
+ if($sns_app) $seo_title = $MOD['name'];
+ $foot = '';
+}
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/quote/admin/config.inc.php b/module/quote/admin/config.inc.php
new file mode 100644
index 0000000..d500b52
--- /dev/null
+++ b/module/quote/admin/config.inc.php
@@ -0,0 +1,26 @@
+
\ No newline at end of file
diff --git a/module/quote/admin/install.inc.php b/module/quote/admin/install.inc.php
new file mode 100644
index 0000000..36fe7e5
--- /dev/null
+++ b/module/quote/admin/install.inc.php
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/module/quote/admin/price.inc.php b/module/quote/admin/price.inc.php
new file mode 100644
index 0000000..65fa5fb
--- /dev/null
+++ b/module/quote/admin/price.inc.php
@@ -0,0 +1,108 @@
+get_one("SELECT * FROM {$table_product} WHERE itemid=$pid") : array();
+$M = ($P && $P['market']) ? explode('|', '所属市场|'.$P['market']) : array();
+require DT_ROOT.'/module/'.$module.'/price.class.php';
+$do = new price;
+if(in_array($action, array('', 'check'))) {
+ $sfields = array('公司', '会员', 'IP', '电话', 'QQ', '微信', '编辑', '备注');
+ $dfields = array('company', 'username', 'ip', 'telephone', 'qq', 'wx', 'editor', 'note');
+ $sorder = array('结果排序方式', '添加时间降序', '添加时间升序', '更新时间降序', '更新时间升序', '报价价格降序', '报价价格升序');
+ $dorder = array('addtime DESC', 'addtime DESC', 'addtime ASC', 'edittime DESC', 'edittime ASC', 'price DESC', 'price ASC');
+
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ $itemid or $itemid = '';
+ $pid or $pid = '';
+ $market = isset($market) ? intval($market) : 0;
+ $minprice = isset($minprice) ? dround($minprice) : '';
+ $minprice or $minprice = '';
+ $maxprice = isset($maxprice) ? dround($maxprice) : '';
+ $maxprice or $maxprice = '';
+ (isset($username) && check_name($username)) or $username = '';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $order_select = dselect($sorder, 'order', '', $order);
+ $condition = '';
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ if($minprice) $condition .= " AND price>=$minprice";
+ if($maxprice) $condition .= " AND price<=$maxprice";
+ if($market) $condition .= " AND market=$market";
+ if($pid) $condition .= " AND pid=$pid";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ if($fromtime) $condition .= " AND addtime>=$fromtime";
+ if($totime) $condition .= " AND addtime<=$totime";
+ if($username) $condition .= " AND username='$username'";
+}
+switch($action) {
+ case 'add':
+ $P or msg('未指定产品');
+ if($submit) {
+ if($do->pass($post)) {
+ $do->add($post);
+ dmsg('添加成功', '?moduleid='.$moduleid.'&file='.$file.'&pid='.$post['pid']);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $username = $_username;
+ $status = 3;
+ $addtime = timetodate($DT_TIME);
+ $menuid = 0;
+ include tpl('price_edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($do->get_one());
+ $addtime = timetodate($addtime);
+ $menuid = 1;
+ include tpl('price_edit', $module);
+ }
+ break;
+ case 'delete':
+ $itemid or msg('请选择信息');
+ $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'check':
+ if($itemid && !$psize) {
+ $do->check($itemid);
+ dmsg('审核成功', $forward);
+ } else {
+ $lists = $do->get_list('status=2'.$condition, $dorder[$order]);
+ $menuid = 2;
+ include tpl('price', $module);
+ }
+ break;
+ default:
+ $lists = $do->get_list('status=3'.$condition, $dorder[$order]);
+ if($P && $P['item'] != $items && substr_count($condition, 'AND') == 1) $db->query("UPDATE {$table_product} SET item=$items WHERE itemid=$pid");
+ $menuid = 1;
+ include tpl('price', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/quote/admin/product.inc.php b/module/quote/admin/product.inc.php
new file mode 100644
index 0000000..ddb056b
--- /dev/null
+++ b/module/quote/admin/product.inc.php
@@ -0,0 +1,221 @@
+pass($post)) {
+ $do->add($post);
+ dmsg('添加成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catid='.$post['catid']);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $content = '';
+ $username = $_username;
+ $status = 3;
+ $addtime = timetodate($DT_TIME);
+ $menuid = 0;
+ include tpl('product_edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ extract($do->get_one());
+ $addtime = timetodate($addtime);
+ $menuid = 1;
+ include tpl('product_edit', $module);
+ }
+ break;
+ case 'delete':
+ $itemid or msg('请选择产品');
+ $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择产品');
+ $level = intval($level);
+ $do->level($itemid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ default:
+ $sfields = array('标题', '简介', '计量单位', '主要市场', '编辑', '参数名1', '参数名2', '参数名3', '参数值1', '参数值2', '参数值3');
+ $dfields = array('title', 'content', 'unit', 'market', 'editor', 'n1', 'n2', 'n3', 'v1', 'v2', 'v3');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $sorder = array('结果排序方式', '添加时间降序', '添加时间升序', '报价时间降序', '报价时间升序', '报价数量降序', '报价数量升序', '浏览次数降序', '浏览次数升序', '最新价格降序', '最新价格升序', '参考低价降序', '参考低价升序', '参考高价降序', '参考高价升序', '推荐级别降序', '推荐级别升序', '信息ID降序', '信息ID升序');
+ $dorder = array('addtime DESC', 'addtime DESC', 'addtime ASC', 'edittime DESC', 'edittime ASC', 'item DESC', 'item ASC', 'hits DESC', 'hits ASC', 'price DESC', 'price ASC', 'minprice DESC', 'minprice ASC', 'maxprice DESC', 'maxprice ASC', 'level DESC', 'level ASC', 'itemid DESC', 'itemid ASC');
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ $level = isset($level) ? intval($level) : 0;
+ isset($datetype) && in_array($datetype, array('addtime', 'edittime')) or $datetype = 'edittime';
+ (isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+ $fromtime = $fromdate ? datetotime($fromdate) : 0;
+ (isset($todate) && is_time($todate)) or $todate = '';
+ $totime = $todate ? datetotime($todate) : 0;
+ $itemid or $itemid = '';
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $level_select = level_select('level', '级别', $level, 'all');
+ $order_select = dselect($sorder, 'order', '', $order);
+
+ $condition = '1';
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($catid) $condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($level) $condition .= $level > 9 ? " AND level>0" : " AND level=$level";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+ if($itemid) $condition .= " AND itemid=$itemid";
+ $timetype = strpos($dorder[$order], 'edit') === false ? 'add' : '';
+
+ $lists = $do->get_list($condition, $dorder[$order]);
+ include tpl('product', $module);
+ break;
+}
+
+class product {
+ var $itemid;
+ var $table;
+ var $fields;
+
+ function __construct() {
+ global $table_product;
+ $this->table = $table_product;
+ $this->fields = array('title','catid','level','style','unit','minprice','maxprice','n1','n2','n3','v1','v2','v3','market','addtime','editor','edittime','seo_title','seo_keywords','seo_description','content');
+ }
+
+ function product() {
+ $this->__construct();
+ }
+
+ function pass($post) {
+ if(!is_array($post)) return false;
+ if(!$post['catid']) return $this->_('请选择所属分类');
+ if(!$post['title']) return $this->_('请填写产品标题');
+ if(!$post['unit']) return $this->_('请填写计量单位');
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $_username;
+ $post['addtime'] = (isset($post['addtime']) && is_time($post['addtime'])) ? datetotime($post['addtime']) : DT_TIME;
+ $post['editor'] = $_username;
+ $post['edittime'] = DT_TIME;
+ $post['minprice'] = dround($post['minprice']);
+ $post['maxprice'] = dround($post['maxprice']);
+ $post['content'] = addslashes(save_remote(save_local(stripslashes($post['content']))));
+ if($this->itemid) {
+ $new = $post['content'];
+ $r = $this->get_one();
+ $old = $r['content'];
+ delete_diff($new, $old);
+ }
+ return array_map("trim", $post);
+ }
+
+ function get_one($condition = '') {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid='$this->itemid' $condition");
+ }
+
+ function get_list($condition = '1', $order = 'addtime DESC') {
+ global $pages, $page, $pagesize, $offset, $pagesize, $MOD, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition");
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ $lists = $catids = $CATS = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].rewrite('price.php?itemid='.$r['itemid']);
+ $catids[$r['catid']] = $r['catid'];
+ $lists[] = $r;
+ }
+ if($catids) {
+ $result = DB::query("SELECT catid,catname,linkurl FROM ".DT_PRE."category WHERE catid IN (".implode(',', $catids).")");
+ while($r = DB::fetch_array($result)) {
+ $CATS[$r['catid']] = $r;
+ }
+ if($CATS) {
+ foreach($lists as $k=>$v) {
+ $lists[$k]['catname'] = $v['catid'] ? $CATS[$v['catid']]['catname'] : '';
+ $lists[$k]['caturl'] = $v['catid'] ? $MOD['linkurl'].rewrite('product.php?catid='.$v['catid']) : '';
+ }
+ }
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $MOD, $L;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ clear_upload($post['content'], $this->itemid, $this->table);
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ clear_upload($post['content'], $this->itemid, $this->table);
+ return true;
+ }
+
+ function delete($itemid) {
+ global $MOD, $L;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->delete($v); }
+ } else {
+ $this->itemid = $itemid;
+ $r = $this->get_one();
+ $userid = get_user($r['username']);
+ if($r['content']) delete_local($r['content'], $userid);
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ }
+ }
+
+ function level($itemid, $level) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET level=$level WHERE itemid IN ($itemids)");
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/quote/admin/remkdir.inc.php b/module/quote/admin/remkdir.inc.php
new file mode 100644
index 0000000..8fd6f49
--- /dev/null
+++ b/module/quote/admin/remkdir.inc.php
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/module/quote/admin/template/edit.tpl.php b/module/quote/admin/template/edit.tpl.php
new file mode 100644
index 0000000..f97b981
--- /dev/null
+++ b/module/quote/admin/template/edit.tpl.php
@@ -0,0 +1,172 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+单页采编
+
+
+
+
+
\ No newline at end of file
diff --git a/module/quote/admin/template/html.tpl.php b/module/quote/admin/template/html.tpl.php
new file mode 100644
index 0000000..339891c
--- /dev/null
+++ b/module/quote/admin/template/html.tpl.php
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/quote/admin/template/index.html b/module/quote/admin/template/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/quote/admin/template/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/quote/admin/template/index.tpl.php b/module/quote/admin/template/index.tpl.php
new file mode 100644
index 0000000..0488cd3
--- /dev/null
+++ b/module/quote/admin/template/index.tpl.php
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+取消', 0, 'onchange="this.form.action=\'?moduleid='.$moduleid.'&file='.$file.'&action=level\';this.form.submit();"');?>
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/quote/admin/template/price.tpl.php b/module/quote/admin/template/price.tpl.php
new file mode 100644
index 0000000..bf0ff97
--- /dev/null
+++ b/module/quote/admin/template/price.tpl.php
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+ 至
+
+
+$v) {
+ echo ''.$v.' ';
+}
+?>
+
+
+
+
+价格: ~
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/quote/admin/template/price_edit.tpl.php b/module/quote/admin/template/price_edit.tpl.php
new file mode 100644
index 0000000..41c7dd7
--- /dev/null
+++ b/module/quote/admin/template/price_edit.tpl.php
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/quote/admin/template/product.tpl.php b/module/quote/admin/template/product.tpl.php
new file mode 100644
index 0000000..0a5957b
--- /dev/null
+++ b/module/quote/admin/template/product.tpl.php
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+>添加时间
+>报价时间
+
+ 至
+
+
+
+
+
+
+
+
+
+
+
+
+
+取消', 0, 'onchange="this.form.action=\'?moduleid='.$moduleid.'&file='.$file.'&action=level\';this.form.submit();"');?>
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/quote/admin/template/product_edit.tpl.php b/module/quote/admin/template/product_edit.tpl.php
new file mode 100644
index 0000000..776905d
--- /dev/null
+++ b/module/quote/admin/template/product_edit.tpl.php
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/quote/admin/template/setting.tpl.php b/module/quote/admin/template/setting.tpl.php
new file mode 100644
index 0000000..fad4e67
--- /dev/null
+++ b/module/quote/admin/template/setting.tpl.php
@@ -0,0 +1,463 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/quote/admin/uninstall.inc.php b/module/quote/admin/uninstall.inc.php
new file mode 100644
index 0000000..a696642
--- /dev/null
+++ b/module/quote/admin/uninstall.inc.php
@@ -0,0 +1,7 @@
+query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_data_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_price_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_product_".$moduleid."`");
+?>
\ No newline at end of file
diff --git a/module/quote/common.inc.php b/module/quote/common.inc.php
new file mode 100644
index 0000000..cc0ba12
--- /dev/null
+++ b/module/quote/common.inc.php
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/module/quote/index.html b/module/quote/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/quote/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/quote/list.inc.php b/module/quote/list.inc.php
new file mode 100644
index 0000000..b9f4a39
--- /dev/null
+++ b/module/quote/list.inc.php
@@ -0,0 +1,88 @@
+count($table, $condition, $CFG['db_expires']);
+ } else {
+ if($page == 1) {
+ $items = $db->count($table, $condition, $CFG['db_expires']);
+ if($items != $CAT['item']) {
+ $CAT['item'] = $items;
+ $db->query("UPDATE {$DT_PRE}category SET item=$items WHERE catid=$catid");
+ }
+ } else {
+ $items = $CAT['item'];
+ }
+ }
+ $pagesize = $MOD['pagesize'];
+ $offset = ($page-1)*$pagesize;
+ $pages = listpages($CAT, $items, $page, $pagesize);
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ $showpage = 1;
+ $datetype = 5;
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].listurl($CAT, $page > 1 ? $page : 0);
+} else {
+ if(!$CAT || $CAT['moduleid'] != $moduleid) message($L['msg_not_cate']);
+ if(!check_group($_groupid, $MOD['group_list']) || !check_group($_groupid, $CAT['group_list'])) message($L['msg_no_right']);
+ $condition = "status=3";
+ $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($cityid) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($CAT, '{destoon_page}'));
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid;
+ }
+ if($CAT['parentid']) $PCAT = get_cat($CAT['parentid']);
+ $head_title = $head_name = $CAT['catname'];
+}
+$seo_file = 'list';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $CAT['template'] ? $CAT['template'] : ($MOD['template_list'] ? $MOD['template_list'] : 'list');
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/quote/my.inc.php b/module/quote/my.inc.php
new file mode 100644
index 0000000..8cac8f5
--- /dev/null
+++ b/module/quote/my.inc.php
@@ -0,0 +1,220 @@
+get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND status>1");
+ $limit_used = $r['num'];
+ $limit_free = $mod_limit > $limit_used ? $mod_limit - $limit_used : 0;
+}
+switch($action) {
+ case 'add':
+ if($mod_limit && $limit_used >= $mod_limit) dalert(lang($L['info_limit'], array($mod_limit, $limit_used)), $_userid ? '?mid='.$mid : '?action=index');
+ if($MG['hour_limit']) {
+ $today = $DT_TIME - 3600;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND addtime>$today");
+ if($r && $r['num'] >= $MG['hour_limit']) dalert(lang($L['hour_limit'], array($MG['hour_limit'])), $_userid ? '?mid='.$mid : '?action=index');
+ }
+ if($MG['day_limit']) {
+ $today = $DT_TODAY - 86400;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND addtime>$today");
+ if($r && $r['num'] >= $MG['day_limit']) dalert(lang($L['day_limit'], array($MG['day_limit'])), $_userid ? '?mid='.$mid : '?action=index');
+ }
+
+ if($mod_free_limit >= 0) {
+ $fee_add = ($MOD['fee_add'] && (!$MOD['fee_mode'] || !$MG['fee_mode']) && $limit_used >= $mod_free_limit && $_userid) ? dround($MOD['fee_add']) : 0;
+ } else {
+ $fee_add = 0;
+ }
+ $fee_currency = $MOD['fee_currency'];
+ $fee_unit = $fee_currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $need_password = $fee_add && $fee_currency == 'money' && $fee_add > $DT['quick_pay'];
+ $need_captcha = $MOD['captcha_add'] == 2 ? $MG['captcha'] : $MOD['captcha_add'];
+ $need_question = $MOD['question_add'] == 2 ? $MG['question'] : $MOD['question_add'];
+ $could_color = check_group($_groupid, $MOD['group_color']) && $MOD['credit_color'] && $_userid;
+
+ if($submit) {
+ if($fee_add && $fee_add > ($fee_currency == 'money' ? $_money : $_credit)) dalert($L['balance_lack']);
+ if($need_password && !is_payword($_username, $password)) dalert($L['error_payword']);
+
+ if($MG['add_limit']) {
+ $last = $db->get_one("SELECT addtime FROM {$table} WHERE $sql ORDER BY itemid DESC");
+ if($last && $DT_TIME - $last['addtime'] < $MG['add_limit']) dalert(lang($L['add_limit'], array($MG['add_limit'])));
+ }
+ $msg = captcha($captcha, $need_captcha, true);
+ if($msg) dalert($msg);
+ $msg = question($answer, $need_question, true);
+ if($msg) dalert($msg);
+ $post['clear_link'] = $MOD['clear_link'];
+ if($do->pass($post)) {
+ $CAT = get_cat($post['catid']);
+ if(!$CAT || !check_group($_groupid, $CAT['group_add'])) dalert(lang($L['group_add'], array($CAT['catname'])));
+ $post['addtime'] = $post['level'] = $post['fee'] = 0;
+ $post['style'] = $post['template'] = $post['note'] = $post['filepath'] = '';
+ $need_check = $MOD['check_add'] == 2 ? $MG['check'] : $MOD['check_add'];
+ $post['status'] = get_status(3, $need_check);
+ $post['hits'] = 0;
+ $post['username'] = $_username;
+ $post['save_remotepic'] = $MOD['save_remotepic'] ? 1 : 0;
+ $post['clear_link'] = $MOD['clear_link'] ? 1 : 0;
+ $post['introduce_length'] = $MOD['introduce_length'] ? $MOD['introduce_length'] : 0;
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($could_color && $color && $_credit > $MOD['credit_color']) {
+ $post['style'] = $color;
+ credit_add($_username, -$MOD['credit_color']);
+ credit_record($_username, -$MOD['credit_color'], 'system', $L['title_color'], '['.$MOD['name'].']'.$post['title']);
+ }
+ $do->add($post);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ if($MOD['show_html'] && $post['status'] > 2) $do->tohtml($do->itemid);
+ if($fee_add) {
+ if($fee_currency == 'money') {
+ money_add($_username, -$fee_add);
+ money_record($_username, -$fee_add, $L['in_site'], 'system', lang($L['credit_record_add'], array($MOD['name'])), 'ID:'.$do->itemid);
+ } else {
+ credit_add($_username, -$fee_add);
+ credit_record($_username, -$fee_add, 'system', lang($L['credit_record_add'], array($MOD['name'])), 'ID:'.$do->itemid);
+ }
+ }
+
+ $msg = $post['status'] == 2 ? $L['success_check'] : $L['success_add'];
+ $js = '';
+ if(isset($post['sync_sina']) && $post['sync_sina']) $js .= sync_weibo('sina', $moduleid, $do->itemid);
+ if($_userid) {
+ set_cookie('dmsg', $msg);
+ $forward = '?mid='.$mid.'&status='.$post['status'];
+ $msg = '';
+ } else {
+ $forward = '?mid='.$mid.'&action=add';
+ }
+ $js .= 'window.onload=function(){parent.window.location="'.$forward.'";}';
+ dalert($msg, '', $js);
+ } else {
+ dalert($do->errmsg, '', ($need_captcha ? reload_captcha() : '').($need_question ? reload_question() : ''));
+ }
+ } else {
+ $_catid = $catid;
+ foreach($do->fields as $v) {
+ $$v = '';
+ }
+ $content = '';
+ $catid = $_catid;
+ $areaid = $cityid;
+ $item = array();
+ }
+ break;
+ case 'edit':
+ $itemid or message();
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['username'] != $_username) message();
+
+ if($MG['edit_limit'] < 0) message($L['edit_refuse']);
+ if($MG['edit_limit'] && $DT_TIME - $item['addtime'] > $MG['edit_limit']*86400) message(lang($L['edit_limit'], array($MG['edit_limit'])));
+
+ if($submit) {
+ $post['clear_link'] = $MOD['clear_link'];
+ if($do->pass($post)) {
+ $CAT = get_cat($post['catid']);
+ if(!$CAT || !check_group($_groupid, $CAT['group_add'])) dalert(lang($L['group_add'], array($CAT['catname'])));
+ $post['addtime'] = timetodate($item['addtime']);
+ $post['level'] = $item['level'];
+ $post['fee'] = $item['fee'];
+ $post['style'] = addslashes($item['style']);
+ $post['template'] = addslashes($item['template']);
+ $post['filepath'] = addslashes($item['filepath']);
+ $post['note'] = addslashes($item['note']);
+ $need_check = $MOD['check_add'] == 2 ? $MG['check'] : $MOD['check_add'];
+ $post['status'] = get_status($item['status'], $need_check);
+ $post['hits'] = $item['hits'];
+ $post['username'] = $_username;
+ $post['save_remotepic'] = $MOD['save_remotepic'] ? 1 : 0;
+ $post['clear_link'] = $MOD['clear_link'] ? 1 : 0;
+ $post['get_introduce'] = $MOD['get_introduce'] ? 1 : 0;
+ $post['introduce_length'] = $MOD['introduce_length'] ? $MOD['introduce_length'] : 0;
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ $do->edit($post);
+ if($post['status'] < 3 && $item['status'] > 2) history($moduleid, $itemid, 'set', $item);
+ set_cookie('dmsg', $post['status'] == 2 ? $L['success_edit_check'] : $L['success_edit']);
+ dalert('', '', 'parent.window.location="'.($post['status'] == 2 ? '?mid='.$moduleid.'&status=2' : $forward).'"');
+ } else {
+ dalert($do->errmsg);
+ }
+ } else {
+ extract($item);
+ }
+ break;
+ case 'delete':
+ $MG['delete'] or message();
+ $itemid or message();
+ $itemids = is_array($itemid) ? $itemid : array($itemid);
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $db->get_one("SELECT username FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['username'] != $_username) message();
+ $do->recycle($itemid);
+ }
+ dmsg($L['success_delete'], $forward);
+ break;
+ default:
+ $status = isset($status) ? intval($status) : 3;
+ in_array($status, array(1, 2, 3)) or $status = 3;
+ $condition = "username='$_username'";
+ $condition .= " AND status=$status";
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($catid) $condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ $timetype = strpos($MOD['order'], 'edit') === false ? 'add' : '';
+ $lists = $do->get_list($condition, $MOD['order']);
+ break;
+}
+if($_userid) {
+ $nums = array();
+ for($i = 1; $i < 4; $i++) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE username='$_username' AND status=$i");
+ $nums[$i] = $r['num'];
+ }
+}
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MODULE[2]['linkurl'], $MODULE[2]['mobile'], $DT_URL);
+} else {
+ $foot = '';
+ if($action == 'add' || $action == 'edit') {
+ //
+ } else {
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ foreach($lists as $k=>$v) {
+ $lists[$k]['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $v['linkurl']);
+ $lists[$k]['date'] = timetodate($v[$time], 5);
+ }
+ $pages = mobile_pages($items, $page, $pagesize);
+ $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : 'my.php');
+ }
+}
+$head_title = lang($L['module_manage'], array($MOD['name']));
+include template($MOD['template_my'] ? $MOD['template_my'] : 'my_'.$module, 'member');
+?>
\ No newline at end of file
diff --git a/module/quote/price.inc.php b/module/quote/price.inc.php
new file mode 100644
index 0000000..f45fe30
--- /dev/null
+++ b/module/quote/price.inc.php
@@ -0,0 +1,138 @@
+get_one("SELECT * FROM {$table_product} WHERE itemid=$itemid");
+$P or dheader('product.php');
+$could_add = check_group($_groupid, $MOD['group_add_price']);
+$MARKET = $P['market'] ? explode('|', $L['price_market'].'|'.$P['market']) : array();
+if($could_add) {
+ $need_captcha = $MOD['captcha_add'] == 2 ? $MG['captcha'] : $MOD['captcha_add'];
+ if($submit) {
+ $sql = $_userid ? "username='$_username'" : "ip='$DT_IP'";
+ $today = $DT_TODAY - 86400;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_price} WHERE $sql AND pid=$itemid AND addtime>$today");
+ $limit_used = $r['num'];
+ if($limit_used > 0) dalert($L['msg_added']);
+ $msg = captcha($captcha, $need_captcha, true);
+ if($msg) dalert($msg);
+ $need_check = $MOD['check_add'] == 2 ? $MG['check'] : $MOD['check_add'];
+ $post['addtime'] = 0;
+ $post['status'] = get_status(3, $need_check);
+ $post['pid'] = $itemid;
+ $post['username'] = $_username;
+ if($_userid) $post['company'] = $_company;
+ require DT_ROOT.'/module/'.$module.'/price.class.php';
+ $do = new price;
+ if($do->pass($post)) {
+ $do->add($post);
+ $msg = $post['status'] == 2 ? $L['msg_check'] : $L['msg_ok'];
+ dalert($msg, '', 'parent.window.location=parent.window.location;');
+ } else {
+ dalert($do->errmsg, '', ($need_captcha ? reload_captcha() : '').($need_question ? reload_question() : ''));
+ }
+ }
+}
+$market = isset($market) ? intval($market) : 0;
+$areaid = isset($areaid) ? intval($areaid) : 0;
+(isset($fromdate) && is_time($fromdate)) or $fromdate = '';
+$fromtime = $fromdate ? datetotime($fromdate) : 0;
+(isset($todate) && is_time($todate)) or $todate = '';
+$totime = $todate ? datetotime($todate) : 0;
+$items = 0;
+$tags = array();
+$showpage = 1;
+$condition = "status=3 AND pid=$itemid";
+$_condition = $condition;
+if($keyword) $condition .= match_kw('company', $keyword);
+if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+if($market) $condition .= " AND market=$market";
+if($fromtime) $condition .= " AND edittime>=$fromtime";
+if($totime) $condition .= " AND edittime<=$totime";
+$items = $db->count($table_price, $condition, $DT['cache_search']);
+$pages = $DT_PC ? pages($items, $page, $pagesize) : mobile_pages($items, $page, $pagesize);
+$tags = array();
+$result = $db->query("SELECT * FROM {$table_price} WHERE $condition ORDER BY addtime DESC LIMIT $offset,$pagesize");
+while($r = $db->fetch_array($result)) {
+ $tags[] = $r;
+}
+if(!$DT_BOT && $page == 1) {
+ $update = 'hits=hits+1';
+ if($_condition == $condition && $items != $P['item']) $update .= ",item=$items";
+ $db->query("UPDATE LOW_PRIORITY {$table_product} SET $update WHERE itemid=$itemid", 'UNBUFFERED');
+}
+if($pages) {
+ $t = explode(' ', '#record">', $pages);
+ $pages = str_replace('"/>', '#record"/>', $pages);
+}
+if($totime) {
+ $_totime = $totime;
+} else {
+ $r = $db->get_one("SELECT MAX(addtime) as maxtime FROM {$table_price} WHERE status=3 AND pid=$itemid");
+ $_totime = $r['maxtime'] ? $r['maxtime'] : $P['edittime'];
+}
+$_fromtime = datetotime(timetodate($_totime, 3)) - 15*86400;
+$condition = "status=3 AND pid=$itemid AND addtime>=$_fromtime AND addtime<=$_totime";
+if($areaid) $condition .= ($ARE['child']) ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+$lists = $dates = array();
+$result = $db->query("SELECT * FROM {$table_price} WHERE $condition ORDER BY addtime ASC", $areaid ? '' : 'CACHE');
+while($r = $db->fetch_array($result)) {
+ $r['date'] = timetodate($r['addtime'], 3);
+ $dates[$r['date']] = 0;
+ $lists[] = $r;
+}
+$chart_title = $P['title'].$L['price_chart'];
+$name = $areaid ? $ARE['areaname'] : $L['allcity'];
+$xd = $yd = $sd = '';
+if(count($dates) > 1) {
+ foreach($dates as $k=>$v) {
+ $price = get_all($k, $lists);
+ $xd .= ($xd == '' ? '' : ',')."'".$k."'";
+ $yd .= ($yd == '' ? '' : ',')."'".$price."'";
+ }
+ $ld = "'".$name."'";
+ $sd = "{name:'".$name."',type:'line',data: [".$yd."]}";
+ if($MARKET) {
+ $i = 0;
+ foreach($MARKET as $kk=>$vv) {
+ if($kk) {
+ $yd = '';
+ foreach($dates as $k=>$v) {
+ $price = get_mkt($k, $kk, $lists);
+ $yd .= ($yd == '' ? '' : ',')."'".$price."'";
+ }
+ $ld .= ",'".$vv."'";
+ $sd .= ",{name:'".$vv."',type:'line',data: [".$yd."]}";
+ }
+ }
+ }
+}
+if($P['seo_title']) {
+ $head_title = $P['seo_title'];
+} else {
+ $head_title = $P['title'].$L['price_title'];
+ if($P['v1']) $head_title = $head_title.' '.$P['v1'];
+ if($P['v2']) $head_title = $head_title.' '.$P['v2'];
+ if($P['v3']) $head_title = $head_title.' '.$P['v3'];
+}
+$head_title = $head_title.$DT['seo_delimiter'].$MOD['name'];
+$head_keywords = $P['seo_keywords'];
+$head_description = $P['seo_description'];
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+} else {
+ if($job == 'ajax') {
+ if($tags) include template('list-quote-price', 'tag');
+ exit;
+ }
+ $js_load = $MOD['mobile'].'price.php?itemid='.$itemid.'&job=ajax';
+ $head_name = $L['price_title'];
+ if($sns_app) $seo_title = $MOD['name'];
+ $EXT['mobile_ajax'] = 0;
+}
+include template($MOD['template_price'] ? $MOD['template_price'] : 'price', $module);
+?>
\ No newline at end of file
diff --git a/module/quote/show.inc.php b/module/quote/show.inc.php
new file mode 100644
index 0000000..8b26813
--- /dev/null
+++ b/module/quote/show.inc.php
@@ -0,0 +1,95 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if($item && $item['status'] > 2) {
+ if($MOD['show_html'] && is_file(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl'])) d301($MOD['linkurl'].$item['linkurl']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ } else {
+ include load('404.inc');
+ }
+ $CAT = get_cat($catid);
+ if(!check_group($_groupid, $CAT['group_show'])) include load('403.inc');
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ $CP = $MOD['cat_property'] && $CAT['property'];
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+ }
+ $adddate = timetodate($addtime, 3);
+ $editdate = timetodate($edittime, 3);
+ $linkurl = $MOD['linkurl'].$linkurl;
+ $update = '';
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ if($fee) {
+ $user_status = 4;
+ $destoon_task = "moduleid=$moduleid&html=show&itemid=$itemid";
+ $description = DC::description($content, $MOD['pre_view']);
+ } else {
+ $user_status = 3;
+ }
+ $pages = '';
+ if(strpos($content, 'pagebreak') !== false) {
+ $contents = DC::pagebreak($content);
+ if($contents) {
+ $total = count($contents);
+ $pages = pages($total, $page, 1, $MOD['linkurl'].itemurl($item, '{destoon_page}'));
+ if($pages) $pages = substr($pages, 0, strpos($pages, ''));
+ $content = $contents[$page-1];
+ }
+ }
+ if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ if($lazy) $content = DC::lazy($content);
+ $content = DC::format($content, $DT_PC);
+ }
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].($page > 1 ? itemurl($item, $page) : $item['linkurl']);
+} else {
+ $itemid or dheader($MOD['mobile']);
+ $item = $db->get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ ($item && $item['status'] > 2) or message($L['msg_not_exist']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $CAT = get_cat($catid);
+ if(!check_group($_groupid, $MOD['group_show']) || !check_group($_groupid, $CAT['group_show'])) message($L['msg_no_right']);
+ $member = array();
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ include DT_ROOT.'/mobile/api/content.inc.php';
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ $pages = '';
+ $total = 1;
+ if(strpos($content, 'pagebreak') !== false) {
+ $contents = DC::pagebreak($content);
+ if($contents) {
+ $total = count($contents);
+ $pages = mobile_pages($total, $page, 1, $MOD['mobile'].itemurl($item, '{destoon_page}'));
+ $content = isset($contents[$page-1]) ? $contents[$page-1] : '';
+ }
+ }
+ if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ if($share_icon) $share_icon = DC::icon($thumb, $content);
+ DC::format($content, $DT_PC);
+ }
+ $editdate = timetodate($edittime, 5);
+ $update = '';
+ $head_title = $head_name = $CAT['catname'];
+ $js_item = 1;
+ $foot = '';
+}
+if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+$seo_file = 'show';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $item['template'] ? $item['template'] : ($CAT['show_template'] ? $CAT['show_template'] : ($MOD['template_show'] ? $MOD['template_show'] : 'show'));
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/quote/task.inc.php b/module/quote/task.inc.php
new file mode 100644
index 0000000..9aa3edc
--- /dev/null
+++ b/module/quote/task.inc.php
@@ -0,0 +1,85 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3) exit;
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ $currency = $MOD['fee_currency'];
+ $fee_unit = $currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $fee_name = $currency == 'money' ? $DT['money_name'] : $DT['credit_name'];
+ $inner = false;
+ if(check_group($_groupid, $MOD['group_show'])) {
+ if($fee) {
+ $inner = true;
+ if($MG['fee_mode'] && $MOD['fee_mode']) {
+ $user_status = 3;
+ } else {
+ $mid = $moduleid;
+ if($_userid) {
+ $user_status = check_pay($mid, $itemid) ? 3 : 2;
+ } else {
+ $user_status = 0;
+ }
+ }
+ } else {
+ $user_status = 3;
+ }
+ } else {
+ $inner = true;
+ $user_status = $_userid ? 1 : 0;
+ }
+ if($_username && $_username == $item['username']) $user_status = 3;
+ if($inner) {
+ if($user_status == 3 || $user_status == 2) {
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $content = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $content['content'];
+ if(strpos($content, 'pagebreak') !== false) {
+ $contents = DC::pagebreak($content);
+ if($contents) {
+ $total = count($contents);
+ $pages = pages($total, $page, 1, $MOD['linkurl'].itemurl($item, '{destoon_page}'));
+ if($pages) $pages = substr($pages, 0, strpos($pages, ''));
+ $content = $contents[$page-1];
+ }
+ }
+ if($content) {
+ if($user_status == 2) $description = DC::description($content, $MOD['pre_view']);
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, 1);
+ $content = DC::format($content, $DT_PC);
+ }
+ }
+ $content = strip_nr(ob_template('content', 'chip'), true);
+ echo 'Inner("content", \''.$content.'\');';
+ }
+ $update = '';
+ if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+ if($MOD['hits']) echo 'Inner("hits", \''.$item['hits'].'\');';
+ if($MOD['show_html'] && $task_item && $DT_TIME - @filemtime(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl']) > $task_item) tohtml('show', $module);
+} else if($html == 'list') {
+ $catid or exit;
+ if($MOD['list_html'] && $task_list && $CAT) {
+ $num = 1;
+ $totalpage = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $demo = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, '{DEMO}');
+ $fid = $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $page + 1;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $totalpage + 1 - $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ }
+} else if($html == 'index') {
+ if($DT['cache_hits'] && $MOD['hits']) {
+ $file = DT_CACHE.'/hits-'.$moduleid;
+ if($DT_TIME - @filemtime($file.'.dat') > $DT['cache_hits'] || @filesize($file.'.php') > 102400) update_hits($moduleid, $table);
+ }
+ if($MOD['index_html']) {
+ $file = DT_ROOT.'/'.$MOD['moduledir'].'/'.$DT['index'].'.'.$DT['file_ext'];
+ if($DT_TIME - @filemtime($file) > $task_index) tohtml('index', $module);
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/sell/admin/config.inc.php b/module/sell/admin/config.inc.php
new file mode 100644
index 0000000..17db300b
--- /dev/null
+++ b/module/sell/admin/config.inc.php
@@ -0,0 +1,26 @@
+
\ No newline at end of file
diff --git a/module/sell/admin/index.html b/module/sell/admin/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/sell/admin/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/sell/admin/order.inc.php b/module/sell/admin/order.inc.php
new file mode 100644
index 0000000..f36d980
--- /dev/null
+++ b/module/sell/admin/order.inc.php
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/module/sell/admin/remkdir.inc.php b/module/sell/admin/remkdir.inc.php
new file mode 100644
index 0000000..60e1511
--- /dev/null
+++ b/module/sell/admin/remkdir.inc.php
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/module/sell/admin/setting.inc.php b/module/sell/admin/setting.inc.php
new file mode 100644
index 0000000..f8cff99
--- /dev/null
+++ b/module/sell/admin/setting.inc.php
@@ -0,0 +1,51 @@
+$v) {
+ if(strpos($k, 'seo_') === false) continue;
+ seo_check($v) or msg('SEO信息包含非法字符');
+ }
+ update_setting($moduleid, $setting);
+ cache_module($moduleid);
+ if($setting['php_list_urlid'] != $MOD['php_list_urlid'] || $setting['htm_list_urlid'] != $MOD['htm_list_urlid'] || $setting['htm_list_prefix'] != $MOD['htm_list_prefix'] || $setting['list_html'] != $MOD['list_html']) {
+ $_MOD = $MOD;
+ $MOD = $setting;
+ $result = $db->query("SELECT * FROM {$DT_PRE}category WHERE moduleid=$moduleid");
+ while($r = $db->fetch_array($result)) {
+ update_category($r);
+ }
+ cache_category($moduleid);
+ $MOD = $_MOD;
+ }
+ if($setting['php_item_urlid'] != $MOD['php_item_urlid'] || $setting['htm_item_urlid'] != $MOD['htm_item_urlid'] || $setting['htm_item_prefix'] != $MOD['htm_item_prefix'] || $setting['show_html'] != $MOD['show_html']) {
+ msg('设置保存成功,开始更新地址', '?moduleid='.$moduleid.'&file=html&action=show&update=1&num=1000');
+ }
+ dmsg('设置保存成功', '?moduleid='.$moduleid.'&file='.$file.'&tab='.$tab);
+} else {
+ $GROUP = cache_read('group.php');
+ $r = $db->get_one("SELECT MAX(itemid) AS maxid FROM {$table}");
+ $maxid = $r['maxid'];
+ extract(dhtmlspecialchars($MOD));
+ if($kw) {
+ $all = 1;
+ ob_start();
+ }
+ include tpl('setting', $module);
+ if($kw) {
+ $data = $content = ob_get_contents();
+ ob_clean();
+ $data = preg_replace('\'(?!((<.*?)|(]*?)>)|([^>]*?)|([^>]*?))\'si', ''.$kw.' ', $data);
+ $data = preg_replace('//', '', $data, 1);
+ echo $data ? $data : $content;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/sell/admin/template/html.tpl.php b/module/sell/admin/template/html.tpl.php
new file mode 100644
index 0000000..339891c
--- /dev/null
+++ b/module/sell/admin/template/html.tpl.php
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/sell/admin/template/index.tpl.php b/module/sell/admin/template/index.tpl.php
new file mode 100644
index 0000000..a6dad59
--- /dev/null
+++ b/module/sell/admin/template/index.tpl.php
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+批量延长过期时间
+天
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+取消', 0, 'onchange="this.form.action=\'?moduleid='.$moduleid.'&file='.$file.'&action=level\';this.form.submit();"');?>
+
+设置类型为
+$v) { ?>
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/sell/admin/template/setting.tpl.php b/module/sell/admin/template/setting.tpl.php
new file mode 100644
index 0000000..434231c
--- /dev/null
+++ b/module/sell/admin/template/setting.tpl.php
@@ -0,0 +1,566 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/sell/admin/uninstall.inc.php b/module/sell/admin/uninstall.inc.php
new file mode 100644
index 0000000..5ce9a14
--- /dev/null
+++ b/module/sell/admin/uninstall.inc.php
@@ -0,0 +1,6 @@
+query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_data_".$moduleid."`");
+$db->query("DROP TABLE IF EXISTS `".$DT_PRE.$module."_search_".$moduleid."`");
+?>
\ No newline at end of file
diff --git a/module/sell/common.inc.php b/module/sell/common.inc.php
new file mode 100644
index 0000000..382c673
--- /dev/null
+++ b/module/sell/common.inc.php
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/module/sell/compare.inc.php b/module/sell/compare.inc.php
new file mode 100644
index 0000000..c6c6c12
--- /dev/null
+++ b/module/sell/compare.inc.php
@@ -0,0 +1,41 @@
+without_permission'), 'goback');
+$itemid && is_array($itemid) or dalert($L['compare_choose'], 'goback');
+if(is_array($itemid)) {
+ $DT_URL = $MOD['linkurl'].'compare.php?';
+ foreach($itemid as $id) {
+ $DT_URL .= '&itemid[]='.$id;
+ }
+ $DT_URL = str_replace('?&', '?', $DT_URL);
+}
+$itemid = array_unique($itemid);
+$item_nums = count($itemid);
+$item_nums < 7 or dalert($L['compare_max'], 'goback');
+$item_nums > 1 or dalert($L['compare_min'], 'goback');
+$itemid = implode(',', $itemid);
+$tags = array();
+$result = $db->query("SELECT * FROM {$table} WHERE itemid IN ($itemid) ORDER BY addtime DESC");
+while($r = $db->fetch_array($result)) {
+ if($r['status'] != 3) continue;
+ $r['editdate'] = timetodate($r['edittime'], 3);
+ $r['adddate'] = timetodate($r['addtime'], 3);
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['userurl'] = userurl($r['username']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $r['mobile'] = $MOD['mobile'].$r['linkurl'];
+ $tags[] = $r;
+}
+$head_title = $L['compare_title'].$DT['seo_delimiter'].$MOD['name'];
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+} else {
+ $forward = $MOD['mobile'];
+ $head_title = $L['compare_title'];
+ $foot = '';
+}
+include template($MOD['template_compare'] ? $MOD['template_compare'] : 'compare', $module);
+?>
\ No newline at end of file
diff --git a/module/sell/global.func.php b/module/sell/global.func.php
new file mode 100644
index 0000000..7ca7b97
--- /dev/null
+++ b/module/sell/global.func.php
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/module/sell/index.htm.php b/module/sell/index.htm.php
new file mode 100644
index 0000000..8f6ee23
--- /dev/null
+++ b/module/sell/index.htm.php
@@ -0,0 +1,55 @@
+get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].'index.php?page={destoon_page}');
+ $tags = array();
+ if($items) {
+ $order = $MOD['order'];
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put(str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename), $data);
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/sell/index.inc.php b/module/sell/index.inc.php
new file mode 100644
index 0000000..e2836cd
--- /dev/null
+++ b/module/sell/index.inc.php
@@ -0,0 +1,41 @@
+ 1 ? 'index.php?page='.$page : '');
+} else {
+ $condition = "status=3";
+ if($cityid) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize);
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+}
+$seo_file = 'index';
+include DT_ROOT.'/include/seo.inc.php';
+include template($MOD['template_index'] ? $MOD['template_index'] : 'index', $module);
+?>
\ No newline at end of file
diff --git a/module/sell/inquiry.inc.php b/module/sell/inquiry.inc.php
new file mode 100644
index 0000000..efc6da7
--- /dev/null
+++ b/module/sell/inquiry.inc.php
@@ -0,0 +1,128 @@
+ -1 or dalert(lang('message->without_permission'), 'goback');
+include load('misc.lang');
+$limit_used = $limit_free = 0;
+if($MG['inquiry_limit']) {
+ if(is_array($itemid) && count($itemid) > $MG['inquiry_limit']) dalert(lang($L['inquiry_limit'], array($MG['inquiry_limit'])), 'goback');
+ $today = $DT_TODAY - 86400;
+ $sql = $_userid ? "fromuser='$_username'" : "ip='$DT_IP'";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}message WHERE $sql AND addtime>$today AND typeid=1 AND status=3");
+ $limit_used = $r['num'];
+ $limit_used < $MG['inquiry_limit'] or dalert(lang($L['message_limit'], array($MG['inquiry_limit'], $limit_used)), 'goback');
+ $limit_free = $MG['inquiry_limit'] > $limit_used ? $MG['inquiry_limit'] - $limit_used : 0;
+}
+require DT_ROOT.'/include/post.func.php';
+$user = array();
+if($_userid) {
+ $user = userinfo($_username);
+ $company = $user['company'];
+ $truename = $user['truename'];
+ $telephone = $user['telephone'] ? $user['telephone'] : $user['mobile'];
+ $email = $user['mail'] ? $user['mail'] : $user['email'];
+ $qq = $user['qq'];
+ $wx = $user['wx'];
+ $ali = $user['ali'];
+ $skype = $user['skype'];
+}
+$need_captcha = $MOD['captcha_inquiry'] == 2 ? $MG['captcha'] : $MOD['captcha_inquiry'];
+$need_question = $MOD['question_inquiry'] == 2 ? $MG['question'] : $MOD['question_inquiry'];
+if($submit) {
+ preg_match("/^[0-9\,]{1,}$/", $itemids) or dalert($L['inquiry_itemid'], 'goback');
+ captcha($captcha, $need_captcha);
+ question($answer, $need_question);
+ $title = dhtmlspecialchars(trim($title));
+ if(!$title) message($L['msg_type_title']);
+ $content = dhtmlspecialchars(trim($content));
+ if(!$content) message($L['msg_type_content']);
+ if(!$_userid) {
+ $truename = dhtmlspecialchars(trim($truename));
+ if(!$truename) message($L['msg_type_truename']);
+ $telephone = dhtmlspecialchars(trim($telephone));
+ if(!$telephone) message($L['msg_type_telephone']);
+ $email = dhtmlspecialchars(trim($email));
+ $company = dhtmlspecialchars(trim($company));
+ if($DT['im_qq']) $qq = dhtmlspecialchars(trim($qq));
+ if($DT['im_wx']) $wx = dhtmlspecialchars(trim($wx));
+ if($DT['im_ali'])$ali = dhtmlspecialchars(trim($ali));
+ if($DT['im_skype']) $skype = dhtmlspecialchars(trim($skype));
+ }
+ $type = dhtmlspecialchars(implode(',', $type));
+ $content = nl2br($content);
+ if($type) $content = $L['content_type'].$type.' '.$content;
+ if($company) $content .= ' '.$L['content_company'].''.$company.' ';
+ if($truename) $content .= ' '.$L['content_truename'].''.$truename.' ';
+ if($telephone) $content .= ' '.$L['content_telephone'].''.$telephone.' ';
+ if(is_email($email)) $content .= ' '.$L['content_email'].''.$email.' ';
+ if($DT['im_qq'] && is_qq($qq)) $content .= ' '.$L['content_qq'].' '.im_qq($qq).' '.$qq.' ';
+ if($DT['im_wx'] && is_wx($wx)) $content .= ' '.$L['content_wx'].' '.im_wx($wx, $_username).' '.$wx.' ';
+ if($DT['im_ali'] && $ali) $content .= ' '.$L['content_ali'].' '.im_ali($ali).' '.$ali.' ';
+ if($DT['im_skype'] && $skype) $content .= ' '.$L['content_skype'].' '.im_skype($skype).' '.$skype.' ';
+ if(is_date($date)) $content .= ' '.lang($L['content_date'], array($date));
+ $result = $db->query("SELECT * FROM {$table} WHERE itemid IN ($itemids) AND status=3 LIMIT 30");
+ $i = $j = 0;
+ while($r = $db->fetch_array($result)) {
+ if($_username && $_username == $r['username']) continue;
+ $linkurl = $MOD['linkurl'].$r['linkurl'];
+ $message = $L['content_product'].''.$r['title'].' '.$content;
+ $itemid = $r['itemid'];
+ ++$i;
+ if(send_message($r['username'], $title, $message, 1, $_username, $moduleid, $itemid)) {
+ $db->query("UPDATE {$table} SET messages=messages+1 WHERE itemid=$itemid");
+ ++$j;
+ }
+ //send sms
+ if($DT['sms'] && $_sms && $r['username'] && isset($sendsms)) {
+ $touser = userinfo($r['username']);
+ if($touser['mobile']) {
+ $message = lang('sms->sms_inquiry', array($r['tag'] ? $r['tag'] : $r['title'], $r['itemid'], $truename, $telephone));
+ $message = strip_sms($message);
+ $word = word_count($message);
+ $sms_num = ceil($word/$DT['sms_len']);
+ if($sms_num <= $_sms) {
+ $sms_code = send_sms($touser['mobile'], $message, $word);
+ if(strpos($sms_code, $DT['sms_ok']) !== false) {
+ $tmp = explode('/', $sms_code);
+ if(is_numeric($tmp[1])) $sms_num = $tmp[1];
+ if($sms_num) sms_add($_username, -$sms_num);
+ if($sms_num) sms_record($_username, -$sms_num, $_username, $L['sms_inquiry'], 'ID:'.$r['itemid']);
+ $_sms = $_sms - $sms_num;
+ }
+ }
+ }
+ }
+ //send sms
+ }
+ if($i == 1) message($L['inquiry_success'], $DT_PC ? $linkurl : str_replace($MOD['linkurl'], $MOD['mobile'], $linkurl));
+ if($i == $j) message($L['inquiry_success'], $forward);
+ dalert(lang($L['inquiry_result'], array($i, $j)), $forward);
+}
+$itemid or dalert($L['inquiry_itemid'], 'goback');
+$itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+$list = array();
+$result = $db->query("SELECT * FROM {$table} WHERE itemid IN ($itemids) AND status=3 LIMIT 30");
+while($r = $db->fetch_array($result)) {
+ if(!$r['username']) continue;
+ if($r['username'] == $_username) dalert($L['inquiry_self'], 'goback');
+ $list[] = $r;
+}
+$total = count($list);
+if($total < 1) dalert($L['inquiry_no_info'], 'goback');
+$itype = explode('|', trim($MOD['inquiry_type']));
+$iask = explode('|', trim($MOD['inquiry_ask']));
+$date = timetodate($DT_TIME + 5*86400, 3);
+$title = $total == 1 ? lang($L['inquiry_message_title'], array($list[0]['title'])) : lang($L['inquiry_message_title_multi'], array($DT['sitename']));
+$head_title = ($total == 1 ? $L['inquiry_head_title'].$DT['seo_delimiter'].$list[0]['title'] : $L['inquiry_head_title_multi']).$DT['seo_delimiter'].$MOD['name'];
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+} else {
+ $forward = $MOD['mobile'].$list[0]['linkurl'];
+ $head_name = $L['inquiry_head_title'];
+ if($sns_app) $seo_title = $MOD['name'];
+ $js_pull = 0;
+ $foot = '';
+}
+include template($MOD['template_inquiry'] ? $MOD['template_inquiry'] : 'inquiry', $module);
+?>
\ No newline at end of file
diff --git a/module/sell/list.htm.php b/module/sell/list.htm.php
new file mode 100644
index 0000000..4432f7b
--- /dev/null
+++ b/module/sell/list.htm.php
@@ -0,0 +1,91 @@
+count($table, $condition);
+ if($items != $CAT['item']) {
+ $CAT['item'] = $items;
+ $db->query("UPDATE {$DT_PRE}category SET item=$items WHERE catid=$catid");
+ }
+} else {
+ $items = $CAT['item'];
+}
+$pagesize = $MOD['pagesize'];
+$showpage = 1;
+$datetype = 5;
+$template = $CAT['template'] ? $CAT['template'] : ($MOD['template_list'] ? $MOD['template_list'] : 'list');
+$total = max(ceil($items/$MOD['pagesize']), 1);
+if(isset($fid) && isset($num)) {
+ $page = $fid;
+ $topage = $fid + $num - 1;
+ $total = $topage < $total ? $topage : $total;
+}
+for(; $page <= $total; $page++) {
+ $offset = ($page-1)*$pagesize;
+ $pages = listpages($CAT, $items, $page, $pagesize);
+ $tags = array();
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}");
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $seo_file = 'list';
+ include DT_ROOT.'/include/seo.inc.php';
+ $destoon_task = "moduleid=$moduleid&html=list&catid=$catid&page=$page";
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].($page > 1 ?listurl($CAT, $page) : $CAT['linkurl']);
+ $filename = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, $page);
+ $_tags = $tags;
+ $DT_PC = $GLOBALS['DT_PC'] = 1;
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ if($DT['pcharset']) $filename = convert($filename, DT_CHARSET, $DT['pcharset']);
+ file_put($filename, $data);
+ if($page == 1) {
+ $indexname = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, 0);
+ if($DT['pcharset']) $indexname = convert($indexname, DT_CHARSET, $DT['pcharset']);
+ file_copy($filename, $indexname);
+ }
+ if($EXT['mobile_enable']) {
+ include DT_ROOT.'/include/mobile.htm.php';
+ $head_pc = str_replace($MOD['mobile'], $MOD['linkurl'], $head_mobile);
+ if($CAT['parentid']) $PCAT = get_cat($CAT['parentid']);
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($CAT, '{destoon_page}'));
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $tags = array();
+ foreach($_tags as $r) {
+ $r['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $r['linkurl']);
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ if($items) $js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid;
+ $head_title = $head_name = $CAT['catname'];
+ $filename = str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename);
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put($filename, $data);
+ if($page == 1) file_copy($filename, str_replace(DT_ROOT, DT_ROOT.'/mobile', $indexname));
+ }
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/sell/list.inc.php b/module/sell/list.inc.php
new file mode 100644
index 0000000..614e848
--- /dev/null
+++ b/module/sell/list.inc.php
@@ -0,0 +1,92 @@
+count($table, $condition, $CFG['db_expires']);
+ } else {
+ if($page == 1) {
+ $items = $db->count($table, $condition, $CFG['db_expires']);
+ if($items != $CAT['item']) {
+ $CAT['item'] = $items;
+ $db->query("UPDATE {$DT_PRE}category SET item=$items WHERE catid=$catid");
+ }
+ } else {
+ $items = $CAT['item'];
+ }
+ }
+ $pagesize = $MOD['pagesize'];
+ $offset = ($page-1)*$pagesize;
+ $pages = listpages($CAT, $items, $page, $pagesize);
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ }
+ $showpage = 1;
+ $datetype = 5;
+ $seo_file = 'list';
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].listurl($CAT, $page > 1 ? $page : 0);
+} else {
+ if(!$CAT || $CAT['moduleid'] != $moduleid) message($L['msg_not_cate']);
+ if(!check_group($_groupid, $MOD['group_list']) || !check_group($_groupid, $CAT['group_list'])) message($L['msg_no_right']);
+ $condition = "status=3";
+ $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($cityid) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE {$condition}", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($CAT, '{destoon_page}'));
+ $tags = array();
+ if($items) {
+ $order = $MOD['order'];
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid;
+ }
+ if($CAT['parentid']) $PCAT = get_cat($CAT['parentid']);
+ $head_title = $head_name = $CAT['catname'];
+}
+$seo_file = 'list';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $CAT['template'] ? $CAT['template'] : ($MOD['template_list'] ? $MOD['template_list'] : 'list');
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/sell/my.inc.php b/module/sell/my.inc.php
new file mode 100644
index 0000000..7a291dc
--- /dev/null
+++ b/module/sell/my.inc.php
@@ -0,0 +1,285 @@
+get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND status>1");
+ $limit_used = $r['num'];
+ $limit_free = $mod_limit > $limit_used ? $mod_limit - $limit_used : 0;
+}
+if(check_group($_groupid, $MOD['group_refresh'])) $MOD['credit_refresh'] = 0;
+switch($action) {
+ case 'add':
+ if($mod_limit && $limit_used >= $mod_limit) dalert(lang($L['info_limit'], array($mod_limit, $limit_used)), $_userid ? '?mid='.$mid : '?action=index');
+ if($MG['hour_limit']) {
+ $today = $DT_TIME - 3600;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND addtime>$today");
+ if($r && $r['num'] >= $MG['hour_limit']) dalert(lang($L['hour_limit'], array($MG['hour_limit'])), $_userid ? '?mid='.$mid : '?action=index');
+ }
+ if($MG['day_limit']) {
+ $today = $DT_TODAY - 86400;
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $sql AND addtime>$today");
+ if($r && $r['num'] >= $MG['day_limit']) dalert(lang($L['day_limit'], array($MG['day_limit'])), $_userid ? '?mid='.$mid : '?action=index');
+ }
+
+ if($mod_free_limit >= 0) {
+ $fee_add = ($MOD['fee_add'] && (!$MOD['fee_mode'] || !$MG['fee_mode']) && $limit_used >= $mod_free_limit && $_userid) ? dround($MOD['fee_add']) : 0;
+ } else {
+ $fee_add = 0;
+ }
+ $fee_currency = $MOD['fee_currency'];
+ $fee_unit = $fee_currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $need_password = $fee_add && $fee_currency == 'money' && $fee_add > $DT['quick_pay'];
+ $need_captcha = $MOD['captcha_add'] == 2 ? $MG['captcha'] : $MOD['captcha_add'];
+ $need_question = $MOD['question_add'] == 2 ? $MG['question'] : $MOD['question_add'];
+ $could_elite = check_group($_groupid, $MOD['group_elite']) && $MOD['credit_elite'] && $_userid;
+ $could_color = check_group($_groupid, $MOD['group_color']) && $MOD['credit_color'] && $_userid;
+
+ if($submit) {
+ if($fee_add && $fee_add > ($fee_currency == 'money' ? $_money : $_credit)) dalert($L['balance_lack']);
+ if($need_password && !is_payword($_username, $password)) dalert($L['error_payword']);
+
+ if(!$_userid) {
+ if(strlen($post['company']) < 4) dalert($L['type_company']);
+ if($AREA) {
+ if(!isset($AREA[$post['areaid']])) dalert($L['type_area']);
+ } else {
+ if(!$post['areaid']) dalert($L['type_area']);
+ }
+ if(strlen($post['truename']) < 4) dalert($L['type_truename']);
+ if(strlen($post['mobile']) < 7) dalert($L['type_mobile']);
+ }
+
+ if($MG['add_limit']) {
+ $last = $db->get_one("SELECT addtime FROM {$table} WHERE $sql ORDER BY itemid DESC");
+ if($last && $DT_TIME - $last['addtime'] < $MG['add_limit']) dalert(lang($L['add_limit'], array($MG['add_limit'])));
+ }
+ $msg = captcha($captcha, $need_captcha, true);
+ if($msg) dalert($msg);
+ $msg = question($answer, $need_question, true);
+ if($msg) dalert($msg);
+
+ if($do->pass($post)) {
+ $CAT = get_cat($post['catid']);
+ if(!$CAT || !check_group($_groupid, $CAT['group_add'])) dalert(lang($L['group_add'], array($CAT['catname'])));
+ if($MOD['upload_thumb'] && $MG['upload'] && strlen($post['thumbs'][0]) < 5) dalert($L['sell_upload_image']);
+ $post['addtime'] = $post['level'] = $post['fee'] = 0;
+ $post['style'] = $post['template'] = $post['note'] = $post['filepath'] = '';
+ $need_check = $MOD['check_add'] == 2 ? $MG['check'] : $MOD['check_add'];
+ $post['status'] = get_status(3, $need_check);
+ $post['hits'] = 0;
+ $post['username'] = $_username;
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($could_elite && isset($elite) && $post['thumbs'][0] && $_credit > $MOD['credit_elite']) {
+ $post['level'] = 1;
+ credit_add($_username, -$MOD['credit_elite']);
+ credit_record($_username, -$MOD['credit_elite'], 'system', lang($L['credit_record_elite'], array($MOD['name'])), $post['title']);
+ }
+ if($could_color && $color && $_credit > $MOD['credit_color']) {
+ $post['style'] = $color;
+ credit_add($_username, -$MOD['credit_color']);
+ credit_record($_username, -$MOD['credit_color'], 'system', $L['title_color'], '['.$MOD['name'].']'.$post['title']);
+ }
+ $do->add($post);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ if($MOD['show_html'] && $post['status'] > 2) $do->tohtml($do->itemid);
+ if($fee_add) {
+ if($fee_currency == 'money') {
+ money_add($_username, -$fee_add);
+ money_record($_username, -$fee_add, $L['in_site'], 'system', lang($L['credit_record_add'], array($MOD['name'])), 'ID:'.$do->itemid);
+ } else {
+ credit_add($_username, -$fee_add);
+ credit_record($_username, -$fee_add, 'system', lang($L['credit_record_add'], array($MOD['name'])), 'ID:'.$do->itemid);
+ }
+ }
+ $msg = $post['status'] == 2 ? $L['success_check'] : $L['success_add'];
+ $js = '';
+ if(isset($post['sync_sina']) && $post['sync_sina']) $js .= sync_weibo('sina', $moduleid, $do->itemid);
+ if($_userid) {
+ set_cookie('dmsg', $msg);
+ $forward = '?mid='.$mid.'&status='.$post['status'];
+ $msg = '';
+ } else {
+ $forward = '?mid='.$mid.'&action=add';
+ }
+ $js .= 'window.onload=function(){parent.window.location="'.$forward.'";}';
+ dalert($msg, '', $js);
+ } else {
+ dalert($do->errmsg, '', ($need_captcha ? reload_captcha() : '').($need_question ? reload_question() : ''));
+ }
+ } else {
+ if($itemid) {
+ $MG['copy'] && $_userid or dheader(($DT_PC ? $MODULE[2]['linkurl'] : $MODULE[2]['mobile']).'account.php?action=group&itemid=1');
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['username'] != $_username) message();
+ extract($item);
+ $totime = $totime > $DT_TIME ? timetodate($totime, 6) : '';
+ } else {
+ $_catid = $catid;
+ foreach($do->fields as $v) {
+ $$v = '';
+ }
+ $content = '';
+ $catid = $_catid;
+ $days = 3;
+ $totime = '';
+ $typeid = 0;
+ $mycatid = 0;
+ }
+ $item = $thumbs = array();
+ $mycatid_select = type_select($module.'-'.$moduleid.'-'.$_userid, 0, 'post[mycatid]', $L['type_default']);
+ }
+ break;
+ case 'edit':
+ $itemid or message();
+ $do->itemid = $itemid;
+ $item = $do->get_one();
+ if(!$item || $item['username'] != $_username) message();
+
+ if($MG['edit_limit'] < 0) message($L['edit_refuse']);
+ if($MG['edit_limit'] && $DT_TIME - $item['addtime'] > $MG['edit_limit']*86400) message(lang($L['edit_limit'], array($MG['edit_limit'])));
+
+ if($submit) {
+ if($do->pass($post)) {
+ $CAT = get_cat($post['catid']);
+ if(!$CAT || !check_group($_groupid, $CAT['group_add'])) dalert(lang($L['group_add'], array($CAT['catname'])));
+ $post['addtime'] = timetodate($item['addtime']);
+ $post['level'] = $item['level'];
+ $post['fee'] = $item['fee'];
+ $post['style'] = addslashes($item['style']);
+ $post['template'] = addslashes($item['template']);
+ $post['filepath'] = addslashes($item['filepath']);
+ $post['note'] = addslashes($item['note']);
+ $need_check = $MOD['check_add'] == 2 ? $MG['check'] : $MOD['check_add'];
+ $post['status'] = get_status($item['status'], $need_check);
+ $post['hits'] = $item['hits'];
+ $post['username'] = $_username;
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ $do->edit($post);
+ if($post['status'] < 3 && $item['status'] > 2) history($moduleid, $itemid, 'set', $item);
+ set_cookie('dmsg', $post['status'] == 2 ? $L['success_edit_check'] : $L['success_edit']);
+ dalert('', '', 'parent.window.location="'.($post['status'] == 2 ? '?mid='.$moduleid.'&status=2' : $forward).'"');
+ } else {
+ dalert($do->errmsg);
+ }
+ } else {
+ extract($item);
+ $thumbs = get_thumbs($item);
+ $totime = $totime ? timetodate($totime, 6) : '';
+ $mycatid_select = type_select($module.'-'.$moduleid.'-'.$_userid, 0, 'post[mycatid]', $L['type_default'], $mycatid);
+ }
+ break;
+ case 'delete':
+ $MG['delete'] or message();
+ $itemid or message();
+ $itemids = is_array($itemid) ? $itemid : array($itemid);
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $db->get_one("SELECT username FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['username'] != $_username) message();
+ $do->recycle($itemid);
+ }
+ dmsg($L['success_delete'], $forward);
+ break;
+ case 'refresh':
+ $MG['refresh_limit'] > -1 or dheader(($DT_PC ? $MODULE[2]['linkurl'] : $MODULE[2]['mobile']).'account.php?action=group&itemid=1');
+ $itemid or message($L['select_info']);
+ if($MOD['credit_refresh'] && $_credit < $MOD['credit_refresh']) message($L['credit_lack']);
+ $itemids = $itemid;
+ $s = $f = 0;
+ foreach($itemids as $itemid) {
+ $do->itemid = $itemid;
+ $item = $db->get_one("SELECT username,edittime FROM {$table} WHERE itemid=$itemid");
+ $could_refresh = $item && $item['username'] == $_username;
+ if($could_refresh && $MG['refresh_limit'] && $DT_TIME - $item['edittime'] < $MG['refresh_limit']) $could_refresh = false;
+ if($could_refresh && $MOD['credit_refresh'] && ($MOD['credit_refresh'] > $_credit || $_credit < 0)) $could_refresh = false;
+ if($could_refresh) {
+ $do->refresh($itemid);
+ $s++;
+ if($MOD['credit_refresh']) $_credit = $_credit - $MOD['credit_refresh'];
+ } else {
+ $f++;
+ }
+ }
+ if($MOD['credit_refresh'] && $s) {
+ $credit = $s*$MOD['credit_refresh'];
+ credit_add($_username, -$credit);
+ credit_record($_username, -$credit, 'system', lang($L['credit_record_refresh'], array($MOD['name'])), lang($L['refresh_total'], array($s)));
+ }
+ $msg = lang($L['refresh_success'], array($s));
+ if($f) $msg = $msg.' '.lang($L['refresh_fail'], array($f));
+ dmsg($msg, $forward);
+ break;
+ default:
+ $status = isset($status) ? intval($status) : 3;
+ in_array($status, array(1, 2, 3, 4)) or $status = 3;
+ $typeid = isset($typeid) ? ($typeid === '' ? -1 : intval($typeid)) : -1;
+ $mycatid = isset($mycatid) ? ($mycatid === '' ? -1 : intval($mycatid)) : -1;
+ $mycat_select = type_select($module.'-'.$moduleid.'-'.$_userid, 0, 'mycatid', $L['type_default'], $mycatid, '', $L['type_my']);
+
+ $condition = "username='$_username' AND status=$status";
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($catid) $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ if($typeid >= 0) $condition .= " AND typeid=$typeid";
+ if($mycatid >= 0) $condition .= " AND mycatid IN (".type_child($mycatid, $MTYPE).")";
+
+ $timetype = strpos($MOD['order'], 'add') !== false ? 'add' : '';
+ $lists = $do->get_list($condition, $MOD['order']);
+ foreach($lists as $k=>$v) {
+ $lists[$k]['mycat'] = $v['mycatid'] && isset($MTYPE[$v['mycatid']]) ? set_style($MTYPE[$v['mycatid']]['typename'], $MTYPE[$v['mycatid']]['style']) : $L['type_default'];
+ }
+ break;
+}
+if($_userid) {
+ $nums = array();
+ for($i = 1; $i < 5; $i++) {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE username='$_username' AND status=$i");
+ $nums[$i] = $r['num'];
+ }
+}
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MODULE[2]['linkurl'], $MODULE[2]['mobile'], $DT_URL);
+} else {
+ $foot = '';
+ if($action == 'add' || $action == 'edit') {
+ //
+ } else {
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ foreach($lists as $k=>$v) {
+ $lists[$k]['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $v['linkurl']);
+ $lists[$k]['date'] = timetodate($v[$time], 5);
+ }
+ $pages = mobile_pages($items, $page, $pagesize);
+ $back_link = $MODULE[2]['mobile'].($_cid ? 'child.php' : 'my.php');
+ }
+}
+$head_title = lang($L['module_manage'], array($MOD['name']));
+include template($MOD['template_my'] ? $MOD['template_my'] : 'my_'.$module, 'member');
+?>
\ No newline at end of file
diff --git a/module/sell/sell.class.php b/module/sell/sell.class.php
new file mode 100644
index 0000000..70a04b1
--- /dev/null
+++ b/module/sell/sell.class.php
@@ -0,0 +1,355 @@
+moduleid = $moduleid;
+ $this->table = $table;
+ $this->table_data = $table_data;
+ $this->table_search = $table_search;
+ $this->split = $MOD['split'];
+ $this->fields = array('catid','mycatid','areaid','typeid','level','title','tag','style','fee','introduce','n1','n2','n3','v1','v2','v3','brand','unit','price','minamount','amount','days','thumb','thumb1','thumb2','thumbs','video','tag','status','hits','username','totime','editor','addtime','adddate','edittime','editdate','ip','template','linkurl','filepath','elite','note','company','truename','telephone','mobile','address','email','qq','wx','ali','skype');
+ }
+
+ function sell($moduleid) {
+ $this->__construct($moduleid);
+ }
+
+ function pass($post) {
+ global $MOD;
+ if(!is_array($post)) return false;
+ if(!$post['catid']) return $this->_(lang('message->pass_cate'));
+ if(strlen($post['title']) < 3) return $this->_(lang('message->pass_title'));
+ if($post['totime']) {
+ if(!is_time($post['totime'])) return $this->_(lang('message->pass_date'));
+ if(datetotime($post['totime']) < DT_TIME) return $this->_(lang('message->pass_todate'));
+ }
+ if(DT_MAX_LEN && strlen(clear_img($post['content'])) > DT_MAX_LEN) $this->_(lang('message->pass_max'));
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $TYPE, $_username, $_userid, $_cname;
+ $thumbs = array();
+ foreach($post['thumbs'] as $v) {
+ if(is_url($v)) $thumbs[] = $v;
+ }
+ if($thumbs) {
+ $post['thumb'] = $thumbs[0];
+ array_shift($thumbs);
+ $post['thumbs'] = implode('|', $thumbs);
+ } else {
+ $post['thumb'] = $post['thumbs'] = '';
+ }
+ $post['thumb1'] = $post['thumb2'] = '';
+ is_url($post['video']) or $post['video'] = '';
+ $post['filepath'] = (isset($post['filepath']) && is_filepath($post['filepath'])) ? file_vname($post['filepath']) : '';
+ $post['editor'] = $_cname ? $_cname : $_username;
+ $post['addtime'] = (isset($post['addtime']) && is_time($post['addtime'])) ? datetotime($post['addtime']) : DT_TIME;
+ $post['adddate'] = timetodate($post['addtime'], 3);
+ $post['edittime'] = DT_TIME;
+ $post['editdate'] = timetodate($post['edittime'], 3);
+ $post['totime'] = is_time($post['totime']) ? datetotime($post['totime']) : 0;
+ $post['fee'] = dround($post['fee']);
+ $post['price'] = dround($post['price']);
+ $post['minamount'] = dround($post['minamount']);
+ $post['amount'] = dround($post['amount']);
+ $post['mycatid'] = intval($post['mycatid']);
+ $post['days'] = intval($post['days']);
+ $post['elite'] = $post['elite'] ? 1 : 0;
+ $post['content'] = stripslashes($post['content']);
+ $post['content'] = save_local($post['content']);
+ if($MOD['clear_link']) $post['content'] = clear_link($post['content']);
+ if($MOD['save_remotepic']) $post['content'] = save_remote($post['content']);
+ if($MOD['introduce_length']) $post['introduce'] = addslashes(get_intro($post['content'], $MOD['introduce_length']));
+ if($this->itemid) {
+ $new = $post['content'];
+ $new .= ' ';
+ foreach($thumbs as $v) {
+ $new .= ' ';
+ }
+ $r = $this->get_one();
+ $old = $r['content'];
+ $old .= ' ';
+ foreach(explode('|', $r['thumbs']) as $v) {
+ $old .= ' ';
+ }
+ delete_diff($new, $old);
+ if($r['video'] != $post['video']) delete_upload($r['video'], match_userid($r['video']));
+ } else {
+ $post['ip'] = DT_IP;
+ }
+ $content = $post['content'];
+ unset($post['content']);
+ $post = dhtmlspecialchars($post);
+ $post['content'] = addslashes(dsafe($content));
+ return array_map("trim", $post);
+ }
+
+ function get_one() {
+ $r = DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$this->itemid");
+ if($r) {
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ $t = DB::get_one("SELECT content FROM {$content_table} WHERE itemid=$this->itemid");
+ $r['content'] = $t ? $t['content'] : '';
+ return $r;
+ } else {
+ return array();
+ }
+ }
+
+ function get_list($condition = 'status=3', $order = 'edittime DESC', $cache = '') {
+ global $MOD, $pages, $page, $pagesize, $offset, $items, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition", $cache);
+ $items = $r['num'];
+ }
+ $pages = defined('CATID') ? listpages(1, CATID, $items, $page, $pagesize, 10, $MOD['linkurl']) : pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = $catids = $CATS = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize", $cache);
+ while($r = DB::fetch_array($result)) {
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['userurl'] = userurl($r['username']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $catids[$r['catid']] = $r['catid'];
+ $lists[] = $r;
+ }
+ if($catids) {
+ $result = DB::query("SELECT catid,catname,linkurl FROM ".DT_PRE."category WHERE catid IN (".implode(',', $catids).")");
+ while($r = DB::fetch_array($result)) {
+ $CATS[$r['catid']] = $r;
+ }
+ if($CATS) {
+ foreach($lists as $k=>$v) {
+ $lists[$k]['catname'] = $v['catid'] ? $CATS[$v['catid']]['catname'] : '';
+ $lists[$k]['caturl'] = $v['catid'] ? $MOD['linkurl'].$CATS[$v['catid']]['linkurl'] : '';
+ }
+ }
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $MOD;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ DB::query("REPLACE INTO {$content_table} (itemid,content) VALUES ('$this->itemid', '$post[content]')");
+ $this->update($this->itemid);
+ if($post['status'] == 3 && $post['username'] && $MOD['credit_add']) {
+ credit_add($post['username'], $MOD['credit_add']);
+ credit_record($post['username'], $MOD['credit_add'], 'system', lang('my->credit_record_add', array($MOD['name'])), 'ID:'.$this->itemid);
+ }
+ clear_upload($post['content'].$post['thumb'].$post['thumbs'].$post['video'], $this->itemid);
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $this->delete($this->itemid, false);
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ DB::query("REPLACE INTO {$content_table} (itemid,content) VALUES ('$this->itemid', '$post[content]')");
+ $this->update($this->itemid);
+ clear_upload($post['content'].$post['thumb'].$post['thumbs'].$post['video'], $this->itemid);
+ if($post['status'] > 2) {
+ history($this->moduleid, $this->itemid, 'del');
+ $this->tohtml($this->itemid, $post['catid']);
+ }
+ return true;
+ }
+
+ function tohtml($itemid = 0, $catid = 0) {
+ global $module, $MOD;
+ if($MOD['show_html'] && $itemid) tohtml('show', $module, "itemid=$itemid");
+ }
+
+ function update($itemid) {
+ global $TYPE;
+ $item = DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$itemid");
+ $update = '';
+ $keyword = $item['title'].','.$TYPE[$item['typeid']].','.strip_tags(cat_pos(get_cat($item['catid']), ','));
+ if($keyword != $item['keyword']) {
+ $keyword = str_replace("//", '', addslashes($keyword));
+ $update .= ",keyword='$keyword'";
+ } else {
+ $keyword = str_replace("//", '', addslashes($keyword));
+ }
+ $video = url2video($item['video']);
+ if($video && $video != $item['video']) $update .= ",video='$video'";
+ $item['itemid'] = $itemid;
+ $linkurl = itemurl($item);
+ if($linkurl != $item['linkurl']) $update .= ",linkurl='$linkurl'";
+ $member = $item['username'] ? userinfo($item['username']) : array();
+ if($member) $update .= update_user($member, $item);
+ if($update) DB::query("UPDATE {$this->table} SET ".(substr($update, 1))." WHERE itemid=$itemid");
+ $sorttime = $this->get_sorttime($item['edittime'], $item['vip']);
+ DB::query("REPLACE INTO {$this->table_search} (itemid,catid,areaid,status,content,sorttime) VALUES ($itemid,'$item[catid]','$item[areaid]','$item[status]','$keyword','$sorttime')");
+ }
+
+ function recycle($itemid) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->recycle($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=0 WHERE itemid=$itemid");
+ DB::query("UPDATE {$this->table_search} SET status=0 WHERE itemid=$itemid");
+ $this->delete($itemid, false);
+ return true;
+ }
+ }
+
+ function restore($itemid) {
+ global $module, $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->restore($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=3 WHERE itemid=$itemid");
+ DB::query("UPDATE {$this->table_search} SET status=3 WHERE itemid=$itemid");
+ if($MOD['show_html']) tohtml('show', $module, "itemid=$itemid");
+ return true;
+ }
+ }
+
+ function delete($itemid, $all = true) {
+ global $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->delete($v, $all);
+ }
+ } else {
+ $this->itemid = $itemid;
+ $r = $this->get_one();
+ if($MOD['show_html']) {
+ $_file = DT_ROOT.'/'.$MOD['moduledir'].'/'.$r['linkurl'];
+ html_del($_file);
+ }
+ if($all) {
+ $userid = get_user($r['username']);
+ if($r['video']) delete_upload($r['video'], $userid);
+ if($r['thumb']) delete_upload($r['thumb'], $userid);
+ if($r['thumbs']) {
+ foreach(explode('|', $r['thumbs']) as $v) {
+ if($v) delete_upload($v, $userid);
+ }
+ }
+ if($r['content']) delete_local($r['content'], $userid);
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ DB::query("DELETE FROM {$this->table_search} WHERE itemid=$itemid");
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ DB::query("DELETE FROM {$content_table} WHERE itemid=$itemid");
+ if($MOD['cat_property']) DB::query("DELETE FROM ".DT_PRE."category_value WHERE moduleid=$this->moduleid AND itemid=$itemid");
+ if($r['username'] && $MOD['credit_del']) {
+ credit_add($r['username'], -$MOD['credit_del']);
+ credit_record($r['username'], -$MOD['credit_del'], 'system', lang('my->credit_record_del', array($MOD['name'])), 'ID:'.$this->itemid);
+ }
+ history($this->moduleid, $itemid, 'del');
+ }
+ }
+ }
+
+ function check($itemid) {
+ global $_username, $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->check($v); }
+ } else {
+ $this->itemid = $itemid;
+ $item = $this->get_one();
+ if($MOD['credit_add'] && $item['username'] && $item['hits'] < 1) {
+ credit_add($item['username'], $MOD['credit_add']);
+ credit_record($item['username'], $MOD['credit_add'], 'system', lang('my->credit_record_add', array($MOD['name'])), 'ID:'.$this->itemid);
+ }
+ $editdate = timetodate(DT_TIME, 3);
+ DB::query("UPDATE {$this->table} SET status=3,editor='$_username',edittime=".DT_TIME.",editdate='$editdate' WHERE itemid=$itemid");
+ $sorttime = $this->get_sorttime(DT_TIME, $item['vip']);
+ DB::query("UPDATE {$this->table_search} SET status=3,sorttime='$sorttime' WHERE itemid=$itemid");
+ history($this->moduleid, $itemid, 'del');
+ $this->tohtml($itemid);
+ return true;
+ }
+ }
+
+ function reject($itemid) {
+ global $_username;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->reject($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=1,editor='$_username' WHERE itemid=$itemid");
+ DB::query("UPDATE {$this->table_search} SET status=1 WHERE itemid=$itemid");
+ return true;
+ }
+ }
+
+ function expire($condition = '') {
+ $result = DB::query("SELECT itemid FROM {$this->table} WHERE status=3 AND totime>0 AND totime<".DT_TIME." $condition");
+ while($r = DB::fetch_array($result)) {
+ $itemid = $r['itemid'];
+ DB::query("UPDATE {$this->table} SET status=4 WHERE itemid=$itemid");
+ DB::query("UPDATE {$this->table_search} SET status=4 WHERE itemid=$itemid");
+ }
+ }
+
+ function clear($condition = 'status=0') {
+ $result = DB::query("SELECT itemid FROM {$this->table} WHERE $condition");
+ while($r = DB::fetch_array($result)) {
+ $this->delete($r['itemid']);
+ }
+ }
+
+ function level($itemid, $level) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET level=$level WHERE itemid IN ($itemids)");
+ }
+
+ function type($itemid, $typeid) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET typeid=$typeid WHERE itemid IN ($itemids)");
+ }
+
+ function refresh($itemid) {
+ $editdate = timetodate(DT_TIME, 3);
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->refresh($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET edittime='".DT_TIME."',editdate='$editdate' WHERE itemid=$itemid");
+ $this->itemid = $itemid;
+ $item = DB::get_one("SELECT vip FROM {$this->table} WHERE itemid=$itemid");
+ $sorttime = $this->get_sorttime(DT_TIME, $item['vip']);
+ DB::query("UPDATE {$this->table_search} SET sorttime='$sorttime' WHERE itemid=$itemid");
+ }
+ }
+
+ function get_sorttime($edittime, $vip) {
+ $sorttime = timetodate($edittime, 'Y-m-d').' '.sprintf('%02d', $vip).':'.timetodate($edittime, 'H:i');
+ return datetotime($sorttime);
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/sell/show.htm.php b/module/sell/show.htm.php
new file mode 100644
index 0000000..bc4bed6
--- /dev/null
+++ b/module/sell/show.htm.php
@@ -0,0 +1,69 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+if(!$item || $item['status'] < 3) return false;
+require_once DT_ROOT.'/include/content.class.php';
+$could_comment = in_array($moduleid, explode(',', $EXT['comment_module'])) ? 1 : 0;
+extract($item);
+$CAT = get_cat($catid);
+$content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+$t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+$content = $_content = $t['content'];
+if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid);
+ if($lazy) $content = DC::lazy($content);
+ $content = DC::format($content, 1);
+}
+$CP = $MOD['cat_property'] && $CAT['property'];
+if($CP) {
+ require_once DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+}
+$adddate = timetodate($addtime, 5);
+$editdate = timetodate($edittime, 5);
+$todate = $totime ? timetodate($totime, 3) : 0;
+$expired = $totime && $totime < $DT_TIME ? true : false;
+$fileurl = $linkurl;
+$linkurl = $MOD['linkurl'].$linkurl;
+$albums = get_albums($item);
+$pics = count($albums);
+$pics_width = $pics*70;
+$amount = number_format($amount, 0, '.', '');
+$fee = DC::fee($item['fee'], $MOD['fee_view']);
+$user_status = 4;
+$seo_file = 'show';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $item['template'] ? $item['template'] : ($CAT['show_template'] ? $CAT['show_template'] : ($MOD['template_show'] ? $MOD['template_show'] : 'show'));
+$destoon_task = "moduleid=$moduleid&html=show&itemid=$itemid";
+if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $linkurl);
+$DT_PC = $GLOBALS['DT_PC'] = 1;
+ob_start();
+include template($template, $module);
+$data = ob_get_contents();
+ob_clean();
+$filename = DT_ROOT.'/'.$MOD['moduledir'].'/'.$fileurl;
+if($DT['pcharset']) $filename = convert($filename, DT_CHARSET, $DT['pcharset']);
+file_put($filename, $data);
+if($EXT['mobile_enable']) {
+ include DT_ROOT.'/include/mobile.htm.php';
+ $head_pc = $linkurl;
+ $could_purchase = (SELL_ORDER && $price > 0 && $minamount > 0 && $amount > 0 && $unit && $username) ? 1 : 0;
+ $could_inquiry = ($user_status == 3 && $username && !$expired) ? 1 : 0;
+ $head_title = $head_name = $CAT['catname'];
+ $js_item = $js_album = 1;
+ $foot = '';
+ if($_content) {
+ $content = $_content;
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, 0);
+ $content = DC::format($content, 0);
+ }
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put(str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename), $data);
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/sell/show.inc.php b/module/sell/show.inc.php
new file mode 100644
index 0000000..b37c8ac
--- /dev/null
+++ b/module/sell/show.inc.php
@@ -0,0 +1,103 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if($item['groupid'] == 2) include load('404.inc');
+ if($item && $item['status'] > 2) {
+ if($MOD['show_html'] && is_file(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl'])) d301($MOD['linkurl'].$item['linkurl']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ } else {
+ include load('404.inc');
+ }
+ $CAT = get_cat($catid);
+ if(!check_group($_groupid, $CAT['group_show'])) include load('403.inc');
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ if($lazy) $content = DC::lazy($content);
+ $content = DC::format($content, $DT_PC);
+ }
+ $CP = $MOD['cat_property'] && $CAT['property'];
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+ }
+ $adddate = timetodate($addtime, 5);
+ $editdate = timetodate($edittime, 5);
+ $todate = $totime ? timetodate($totime, 3) : 0;
+ $expired = $totime && $totime < $DT_TIME ? true : false;
+ $linkurl = $MOD['linkurl'].$linkurl;
+ $albums = get_albums($item);
+ $pics = count($albums);
+ $pics_width = $pics*70;
+ $amount = number_format($amount, 0, '.', '');
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ $update = '';
+ if(check_group($_groupid, $MOD['group_contact'])) {
+ if($fee) {
+ $user_status = 4;
+ $destoon_task = "moduleid=$moduleid&html=show&itemid=$itemid";
+ } else {
+ $user_status = 3;
+ $member = $item['username'] ? userinfo($item['username']) : array();
+ if($item['totime'] && $item['totime'] < $DT_TIME && $item['status'] == 3) {
+ $update .= ",status=4";
+ $db->query("UPDATE {$table_search} SET status=4 WHERE itemid=$itemid");
+ }
+ if($member) {
+ $update_user = update_user($member, $item);
+ if($update_user) $db->query("UPDATE LOW_PRIORITY {$table} SET ".substr($update_user, 1)." WHERE username='$username'", 'UNBUFFERED');
+ }
+ }
+ } else {
+ $user_status = $_userid ? 1 : 0;
+ if($_username && $item['username'] == $_username) {
+ $member = userinfo($item['username']);
+ $user_status = 3;
+ }
+ }
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $linkurl);
+} else {
+ $itemid or dheader($MOD['mobile']);
+ $item = $db->get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ ($item && $item['status'] > 2) or message($L['msg_not_exist']);
+ if($item['groupid'] == 2) message($L['msg_not_exist']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $CAT = get_cat($catid);
+ if(!check_group($_groupid, $MOD['group_show']) || !check_group($_groupid, $CAT['group_show'])) message($L['msg_no_right']);
+ $member = array();
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ include DT_ROOT.'/mobile/api/contact.inc.php';
+ $content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+ $t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+ $content = $t['content'];
+ if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ if($share_icon) $share_icon = DC::icon($thumb, $content);
+ $content = DC::format($content, 0);
+ }
+ $albums = get_albums($item);
+ $editdate = timetodate($edittime, 5);
+ $expired = $totime && $totime < $DT_TIME ? true : false;
+ $could_purchase = (SELL_ORDER && $price > 0 && $minamount > 0 && $amount > 0 && $unit && $username && $username != $_username && !$expired) ? 1 : 0;
+ $could_inquiry = ($user_status == 3 && $username && $username != $_username && !$expired) ? 1 : 0;
+ $update = '';
+ $head_title = $head_name = $CAT['catname'];
+ $js_item = $js_album = 1;
+ $foot = '';
+}
+if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+$seo_file = 'show';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $item['template'] ? $item['template'] : ($CAT['show_template'] ? $CAT['show_template'] : ($MOD['template_show'] ? $MOD['template_show'] : 'show'));
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/sell/sphinx.inc.php b/module/sell/sphinx.inc.php
new file mode 100644
index 0000000..5b5b928
--- /dev/null
+++ b/module/sell/sphinx.inc.php
@@ -0,0 +1,79 @@
+ $DT['max_kw']) message(lang($L['word_limit'], array($DT['min_kw'], $DT['max_kw'])), ($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).'search.php');
+ if($DT['search_limit'] && $page == 1) {
+ if(($DT_TIME - $DT['search_limit']) < get_cookie('last_search')) message(lang($L['time_limit'], array($DT['search_limit'])), ($DT_PC ? $MOD['linkurl'] : $MOD['mobile']).'search.php');
+ set_cookie('last_search', $DT_TIME);
+ }
+ $replacef = explode(' ', $kw);
+ $replacet = array_map('highlight', $replacef);
+ }
+ require DT_ROOT.'/include/sphinx.class.php';
+ $sx = new SphinxClient();
+ if($MOD['sphinx_host'] && $MOD['sphinx_port']) $sx->SetServer($MOD['sphinx_host'], $MOD['sphinx_port']);
+ $sx->SetArrayResult(true);
+ $sx->SetMatchMode(SPH_MATCH_PHRASE);
+ $sx->SetRankingMode(SPH_RANK_NONE);
+ $sx->SetSortMode(SPH_SORT_EXTENDED, 'sorttime desc');
+ $sx->SetFilter('status', array(3));
+ if($catid) $sx->SetFilter('catid', explode(',', $CAT['arrchildid']));
+ if($areaid) $sx->SetFilter('areaid', explode(',', $ARE['arrchildid']));
+ $pagesize = $MOD['pagesize'];
+ $offset = ($page-1)*$pagesize;
+ $sx->SetLimits($offset, $pagesize);
+ $_kw = $kw;
+ $r = $sx->Query($_kw, $MOD['sphinx_name']);
+ $time = $r['time'];
+ $items = $r['total_found'];
+ $total = $r['total'];
+ $pages = $DT_PC ? pages($items > $total ? $total : $items, $page, $pagesize) : mobile_pages($items > $total ? $total : $items, $page, $pagesize);
+ foreach($r['matches'] as $k=>$v) {
+ $ids[$v['id']] = $v['id'];
+ }
+ if($ids) {
+ $condition = "itemid IN (".implode(',', $ids).")";
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition}");
+ while($r = $db->fetch_array($result)) {
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ if($DT_PC) {
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($kw) $r['title'] = str_replace($replacef, $replacet, $r['title']);
+ if($kw) $r['introduce'] = str_replace($replacef, $replacet, $r['introduce']);
+ } else {
+ if($kw) $r['title'] = str_replace($kw, ''.$kw.' ', $r['title']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r['addtime'], 3);
+ }
+ $_tags[$r['itemid']] = $r;
+ }
+ $db->free_result($result);
+ foreach($ids as $id) {
+ $tags[] = $_tags[$id];
+ }
+ if($page == 1 && $kw && $DT['search_kw']) keyword($DT['search_kw'], $_username, $kw, $items, $moduleid);
+ }
+}
+if($DT_PC) {
+ $showpage = 1;
+ $datetype = 5;
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+} else {
+ $lists = $tags;
+ if($lists) $js_load = preg_replace("/(.*)([&?]page=[0-9]*)(.*)/i", "\\1\\3", rewrite($DT_URL, 1)).'&job=ajax';
+ if($job == 'ajax') {
+ if($tags) include template('list-'.$module, 'tag');
+ exit;
+ }
+ $head_title = $MOD['name'].$L['search'];
+}
+$seo_file = 'search';
+include DT_ROOT.'/include/seo.inc.php';
+include template($MOD['template_search'] ? $MOD['template_search'] : 'search', $module);
+?>
\ No newline at end of file
diff --git a/module/sell/task.inc.php b/module/sell/task.inc.php
new file mode 100644
index 0000000..efc3144
--- /dev/null
+++ b/module/sell/task.inc.php
@@ -0,0 +1,71 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3) exit;
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ $currency = $MOD['fee_currency'];
+ $fee_unit = $currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $fee_name = $currency == 'money' ? $DT['money_name'] : $DT['credit_name'];
+ $member = array();
+ if(check_group($_groupid, $MOD['group_contact'])) {
+ if($fee) {
+ if($MG['fee_mode'] && $MOD['fee_mode']) {
+ $user_status = 3;
+ } else {
+ $mid = $moduleid;
+ if($_userid) {
+ $user_status = check_pay($mid, $itemid) ? 3 : 2;
+ } else {
+ $user_status = 0;
+ }
+ }
+ } else {
+ $user_status = 3;
+ }
+ } else {
+ $user_status = $_userid ? 1 : 0;
+ }
+ if($_username && $_username == $item['username']) $user_status = 3;
+ if($user_status == 3 && $item['username']) $member = userinfo($item['username']);
+ $contact = strip_nr(ob_template('contact', 'chip'), true);
+ echo 'Inner("contact", \''.$contact.'\');';
+ if($MOD['hits']) echo 'Inner("hits", \''.$item['hits'].'\');';
+ $update = '';
+ if($item['totime'] && $item['totime'] < $DT_TIME && $item['status'] == 3) {
+ $update .= ",status=4";
+ $db->query("UPDATE {$table_search} SET status=4 WHERE itemid=$itemid");
+ }
+ if($member) {
+ $update_user = update_user($member, $item);
+ if($update_user) $db->query("UPDATE LOW_PRIORITY {$table} SET ".substr($update_user, 1)." WHERE username='$username'", 'UNBUFFERED');
+ }
+ if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+ if($MOD['show_html'] && $task_item && $DT_TIME - @filemtime(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl']) > $task_item) tohtml('show', $module);
+} else if($html == 'list') {
+ $catid or exit;
+ if($MOD['list_html'] && $task_list && $CAT) {
+ $num = 1;
+ $totalpage = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $demo = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, '{DEMO}');
+ $fid = $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $page + 1;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $totalpage + 1 - $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ }
+} else if($html == 'index') {
+ if($DT['cache_hits'] && $MOD['hits']) {
+ $file = DT_CACHE.'/hits-'.$moduleid;
+ if($DT_TIME - @filemtime($file.'.dat') > $DT['cache_hits'] || @filesize($file.'.php') > 102400) update_hits($moduleid, $table);
+ }
+ if($MOD['index_html']) {
+ $file = DT_ROOT.'/'.$MOD['moduledir'].'/'.$DT['index'].'.'.$DT['file_ext'];
+ if($DT_TIME - @filemtime($file) > $task_index) tohtml('index', $module);
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/special/admin/html.inc.php b/module/special/admin/html.inc.php
new file mode 100644
index 0000000..437d6d7
--- /dev/null
+++ b/module/special/admin/html.inc.php
@@ -0,0 +1,119 @@
+get_one("SELECT * FROM {$DT_PRE}category WHERE moduleid=$moduleid AND catid>$catids ORDER BY catid");
+ if($CAT) {
+ $bcatid = $catid = $CAT['catid'];
+ $total = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $num = 50;
+ $bfid = $fid;
+ isset($fpage) or $fpage = 1;
+ if($fpage <= $total) {
+ $fid = $fpage;
+ tohtml('list', $module);
+ $fid = $bfid;
+ msg($MOD['name'].' ['.$CAT['catname'].'] 第'.$fpage.'页至第'.($fpage+$num-1).'页生成成功'.progress(0, $fid, $tid), '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids='.$catids.'&fid='.$fid.'&tid='.$tid.'&all='.$all.'&one='.$one.'&fpage='.($fpage+$num), 0);
+ }
+ $fid++;
+ msg($MOD['name'].' ['.$CAT['catname'].'] 生成成功'.progress(0, $fid, $tid), '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids='.$catid.'&fid='.$fid.'&tid='.$tid.'&all='.$all.'&one='.$one);
+ } else {
+ $all ? msg($MOD['name'].'列表生成成功', '?moduleid='.$moduleid.'&file='.$file.'&action=show&all='.$all.'&one='.$one) : msg($MOD['name'].'列表生成成功', $this_forward);
+ }
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}category WHERE moduleid=$moduleid");
+ $tid = $r['num'];
+ msg('', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids=0&fid=1&&tid='.$tid.'&all='.$all.'&one='.$one);
+ }
+ break;
+ case 'show':
+ $update = (isset($update) && $update) ? 1 : 0;
+ if(!$update && !$MOD['show_html']) {
+ if($one) dheader( '?file=html&action=back&mid='.$moduleid);
+ $all ? msg($MOD['name'].'生成成功', $this_forward) : dmsg($MOD['name'].'生成成功', $this_forward);
+ }
+ $catid = isset($catid) ? intval($catid) : '';
+ $sql = $catid ? " AND catid=$catid" : '';
+ if(!isset($fid)) {
+ $r = $db->get_one("SELECT min(itemid) AS fid FROM {$table} WHERE status=3 {$sql}");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ }
+ isset($sid) or $sid = $fid;
+ if(!isset($tid)) {
+ $r = $db->get_one("SELECT max(itemid) AS tid FROM {$table} WHERE status=3 {$sql}");
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ }
+ if($update) {
+ require DT_ROOT.'/module/'.$module.'/'.$module.'.class.php';
+ $do = new $module($moduleid);
+ }
+ isset($num) or $num = 100;
+ if($fid <= $tid) {
+ $result = $db->query("SELECT itemid FROM {$table} WHERE status=3 AND itemid>=$fid {$sql} ORDER BY itemid LIMIT 0,$num");
+ if($db->affected_rows($result)) {
+ while($r = $db->fetch_array($result)) {
+ $itemid = $r['itemid'];
+ $update ? $do->update($itemid) : tohtml('show', $module);
+ }
+ $itemid += 1;
+ } else {
+ $itemid = $fid + $num;
+ }
+ } else {
+ if($update) {
+ $all ? msg('', '?moduleid='.$moduleid.'&file='.$file.'&action=index&all=1&one='.$one) : dmsg('更新成功', $this_forward);
+ } else {
+ if($one) dheader( '?file=html&action=back&mid='.$moduleid);
+ $all ? msg($MOD['name'].'生成成功', $this_forward) : dmsg($MOD['name'].'生成成功', $this_forward);
+ }
+ }
+ msg('ID从'.$fid.'至'.($itemid-1).$MOD['name'].($update ? '更新' : '生成').'成功'.progress($sid, $fid, $tid), "?moduleid=$moduleid&file=$file&action=$action&sid=$sid&fid=$itemid&tid=$tid&num=$num&update=$update&all=$all&one=$one", 0);
+ break;
+ case 'cate':
+ $catid or msg('请选择分类');
+ isset($num) or $num = 50;
+ isset($fid) or $fid = 1;
+ $total = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ if($fpage && $tpage) {
+ $fid = $fpage;
+ $num = $tpage - $fpage + 1;
+ tohtml('list', $module);
+ dmsg('生成成功', $this_forward);
+ }
+ if($fid <= $total) {
+ tohtml('list', $module);
+ msg('第'.$fid.'页至第'.($fid+$num-1).'页生成成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catid='.$catid.'&fid='.($fid+$num).'&num='.$num.'&fpage='.$fpage.'&tpage='.$tpage, 0);
+ } else {
+ dmsg('生成成功', $this_forward);
+ }
+ break;
+ case 'item':
+ $catid or msg('请选择分类');
+ msg('', '?moduleid='.$moduleid.'&file='.$file.'&action=show&catid='.$catid.'&num='.$num);
+ break;
+ default:
+ $r = $db->get_one("SELECT min(itemid) AS fid,max(itemid) AS tid FROM {$table} WHERE status=3");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ include tpl('html', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/special/admin/index.html b/module/special/admin/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/special/admin/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/special/admin/index.inc.php b/module/special/admin/index.inc.php
new file mode 100644
index 0000000..9e2608e
--- /dev/null
+++ b/module/special/admin/index.inc.php
@@ -0,0 +1,209 @@
+ 9 ? " AND level>0" : " AND level=$level";
+ if($fromtime) $condition .= " AND `$datetype`>=$fromtime";
+ if($totime) $condition .= " AND `$datetype`<=$totime";
+ if($thumb) $condition .= " AND thumb<>''";
+ if($ip) $condition .= " AND ip='$ip'";
+ if($username) $condition .= " AND username='$username'";
+ if($itemid) $condition .= " AND itemid=$itemid";
+
+ $timetype = strpos($dorder[$order], 'edit') === false ? 'add' : '';
+}
+switch($action) {
+ case 'add':
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ $do->add($post);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ if($MOD['show_html'] && $post['status'] > 2) $do->tohtml($do->itemid);
+ if(isset($post['islink'])) {
+ dmsg('添加成功', '?moduleid='.$moduleid.'&action='.$action.'&catid='.$post['catid']);
+ } else {
+ dmsg('专题添加成功,请添加信息..', '?moduleid='.$moduleid.'&id='.$do->itemid.'&tm='.($DT_TIME+5));
+ }
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $content = '';
+ $status = 3;
+ $cfg_photo = 6;
+ $cfg_video = 0;
+ $cfg_type = 10;
+ $addtime = timetodate($DT_TIME);
+ $username = $_username;
+ $item = array();
+ $menuid = 0;
+ isset($url) or $url = '';
+ if($url) {
+ $tmp = fetch_url($url);
+ if($tmp) extract($tmp);
+ }
+ $history = 0;
+ include tpl('edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ if($FD) fields_check($post_fields);
+ if($CP) property_check($post_ppt);
+ if($FD) fields_update($post_fields, $table, $do->itemid);
+ if($CP) property_update($post_ppt, $moduleid, $post['catid'], $do->itemid);
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ $item = $do->get_one();
+ extract($item);
+ $history = history($moduleid, $itemid);
+ $addtime = timetodate($addtime);
+ $menuon = array('4', '3', '2', '1');
+ $menuid = $menuon[$status];
+ include tpl($action, $module);
+ }
+ break;
+ case 'move':
+ if($submit) {
+ $fromids or msg('请填写来源ID');
+ if($tocatid) {
+ $db->query("UPDATE {$table} SET catid=$tocatid WHERE `{$fromtype}` IN ($fromids)");
+ dmsg('移动成功', $forward);
+ } else {
+ msg('请选择目标分类');
+ }
+ } else {
+ $itemid = $itemid ? implode(',', $itemid) : '';
+ $menuid = 5;
+ include tpl($action);
+ }
+ break;
+ case 'update':
+ is_array($itemid) or msg('请选择'.$MOD['name']);
+ foreach($itemid as $v) {
+ $do->update($v);
+ }
+ dmsg('更新成功', $forward);
+ break;
+ case 'tohtml':
+ is_array($itemid) or msg('请选择'.$MOD['name']);
+ $html_itemids = $itemid;
+ foreach($html_itemids as $itemid) {
+ tohtml('show', $module);
+ }
+ dmsg('生成成功', $forward);
+ break;
+ case 'delete':
+ $itemid or msg('请选择'.$MOD['name']);
+ isset($recycle) ? $do->recycle($itemid) : $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'restore':
+ $itemid or msg('请选择'.$MOD['name']);
+ $do->restore($itemid);
+ dmsg('还原成功', $forward);
+ break;
+ case 'clear':
+ $do->clear();
+ dmsg('清空成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择'.$MOD['name']);
+ $level = intval($level);
+ $do->level($itemid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ case 'recycle':
+ $lists = $do->get_list('status=0'.$condition, $dorder[$order]);
+ $menuid = 4;
+ include tpl('index', $module);
+ break;
+ case 'reject':
+ if($itemid && !$psize) {
+ $do->reject($itemid);
+ dmsg('拒绝成功', $forward);
+ } else {
+ $lists = $do->get_list('status=1'.$condition, $dorder[$order]);
+ $menuid = 3;
+ include tpl('index', $module);
+ }
+ break;
+ case 'check':
+ if($itemid && !$psize) {
+ $do->check($itemid);
+ dmsg('审核成功', $forward);
+ } else {
+ $lists = $do->get_list('status=2'.$condition, $dorder[$order]);
+ $menuid = 2;
+ include tpl('index', $module);
+ }
+ break;
+ default:
+ $lists = $do->get_list('status=3'.$condition, $dorder[$order]);
+ $menuid = 1;
+ include tpl('index', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/special/admin/install.inc.php b/module/special/admin/install.inc.php
new file mode 100644
index 0000000..b04f9a2
--- /dev/null
+++ b/module/special/admin/install.inc.php
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/module/special/admin/item.inc.php b/module/special/admin/item.inc.php
new file mode 100644
index 0000000..521b5d2
--- /dev/null
+++ b/module/special/admin/item.inc.php
@@ -0,0 +1,173 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$specialid");
+$special or msg($MOD['name'].'不存在');
+!$special['islink'] or msg($MOD['name'].'为外部链接,无需添加信息');
+$username = $special['username'];
+$type_item = $module.'-'.$moduleid.'-'.$specialid;
+$TYPE = get_type($type_item);
+require DT_ROOT.'/module/'.$module.'/item.class.php';
+$do = new item($specialid);
+$_mid = 5;
+foreach($MODULE as $m) {
+ if($m['module'] == 'article') {
+ $_mid = $m['moduleid'];
+ break;
+ }
+}
+$menus = array (
+ array('添加信息', '?moduleid='.$moduleid.'&file='.$file.'&specialid='.$specialid.'&action=add'),
+ array('批量添加', '?moduleid='.$moduleid.'&file='.$file.'&specialid='.$specialid.'&action=batch&mid='.$_mid),
+ array('信息列表', '?moduleid='.$moduleid.'&file='.$file.'&specialid='.$specialid),
+ array('信息分类', 'javascript:Dwidget(\'?file=type&item='.$type_item.'\', \'['.$special['title'].'] 专题信息分类\');'),
+);
+$MOD['level'] = $MOD['level_item'];
+switch($action) {
+ case 'add':
+ if($submit) {
+ if($do->pass($post)) {
+ $post['username'] = $username;
+ $do->add($post);
+ dmsg('添加成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&specialid='.$specialid.'&typeid='.$post['typeid']);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ foreach($do->fields as $v) {
+ isset($$v) or $$v = '';
+ }
+ $content = '';
+ $addtime = timetodate($DT_TIME);
+ $typeid = 0;
+ $item = array();
+ $menuid = 0;
+ $tname = $menus[$menuid][0];
+ include tpl('item_edit', $module);
+ }
+ break;
+ case 'edit':
+ $itemid or msg();
+ $do->itemid = $itemid;
+ if($submit) {
+ if($do->pass($post)) {
+ $post['username'] = $username;
+ $do->edit($post);
+ dmsg('修改成功', $forward);
+ } else {
+ msg($do->errmsg);
+ }
+ } else {
+ $item = $do->get_one();
+ extract($item);
+ $addtime = timetodate($addtime);
+ $menuid = 0;
+ $tname = $menus[$menuid][0];
+ include tpl('item_edit', $module);
+ }
+ break;
+ case 'batch':
+ if($submit) {
+ $mid or msg('请选择模型');
+ $itemid or msg('请选择'.$MODULE[$mid]['name']);
+ $typeid or msg('请选择分类');
+ $specialid or msg('请选择专题');
+ $itemids = implode(',', $itemid);
+ $table = get_table($mid);
+ $result = $db->query("SELECT * FROM {$table} WHERE itemid IN ($itemids)");
+ while($r = $db->fetch_array($result)) {
+ $post = array();
+ $post['specialid'] = $specialid;
+ $post['mid'] = $mid;
+ $post['tid'] = $r['itemid'];
+ $post['username'] = $username;
+ $post['typeid'] = $typeid;
+ $post['level'] = $level;
+ $post['title'] = $r['title'];
+ $post['style'] = $r['style'];
+ if(strpos($r['linkurl'], '://') === false) $r['linkurl'] = $MODULE[$mid]['linkurl'].$r['linkurl'];
+ $post['linkurl'] = $r['linkurl'];
+ $post['thumb'] = $r['thumb'];
+ $post['introduce'] = $r['introduce'];
+ $post = daddslashes($post);
+ $do->add($post);
+ }
+ dmsg('添加成功', '?moduleid='.$moduleid.'&file='.$file.'&specialid='.$specialid);
+ } else {
+ $lists = array();
+ $pages = '';
+ $tname = '选择信息';
+ if($mid) {
+ $table = get_table($mid);
+ $condition = 'status=3';
+ if($keyword) $condition .= match_kw('keyword', $keyword);
+ if($catid) $condition .= $CAT['child'] ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition");
+ $items = $r['num'];
+ $pages = pages($items, $page, $pagesize);
+ $result = $db->query("SELECT * FROM {$table} WHERE $condition ORDER BY addtime DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $C = get_cat($r['catid']);
+ $r['caturl'] = $MODULE[$mid]['linkurl'].$C['linkurl'];
+ $r['catname'] = $C['catname'];
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ if(strpos($r['linkurl'], '://') === false) $r['linkurl'] = $MODULE[$mid]['linkurl'].$r['linkurl'];
+ $lists[] = $r;
+ }
+ $tname = $MODULE[$mid]['name'].'列表';
+ }
+ include tpl('item_batch', $module);
+ }
+ break;
+ case 'delete':
+ $itemid or msg('请选择信息');
+ isset($recycle) ? $do->recycle($itemid) : $do->delete($itemid);
+ dmsg('删除成功', $forward);
+ break;
+ case 'level':
+ $itemid or msg('请选择信息');
+ $level = intval($level);
+ $do->level($itemid, $level);
+ dmsg('级别设置成功', $forward);
+ break;
+ case 'type':
+ $itemid or msg('请选择信息');
+ $typeid = intval($typeid);
+ $do->type($itemid, $typeid);
+ dmsg('分类设置成功', $forward);
+ break;
+ default:
+ $sfields = array('标题', '简介', '会员名');
+ $dfields = array('title', 'introduce', 'username');
+ isset($fields) && isset($dfields[$fields]) or $fields = 0;
+ $sorder = array('结果排序方式', '添加时间降序', '添加时间升序', '修改时间降序', '修改时间升序', '推荐级别降序', '推荐级别升序', '信息ID降序', '信息ID升序');
+ $dorder = array($MOD['order'], 'addtime DESC', 'addtime ASC', 'edittime DESC', 'edittime ASC', 'level DESC', 'level ASC', 'itemid DESC', 'itemid ASC');
+ isset($order) && isset($dorder[$order]) or $order = 0;
+ $level = isset($level) ? intval($level) : 0;
+ $typeid = isset($typeid) ? intval($typeid) : 0;
+ $thumb = isset($thumb) ? intval($thumb) : 0;
+ $itemid or $itemid = '';
+
+ $fields_select = dselect($sfields, 'fields', '', $fields);
+ $level_select = level_select('level', '级别', $level, 'all');
+ $order_select = dselect($sorder, 'order', '', $order);
+ $type_select = type_select($TYPE, 0, 'typeid', '默认', $typeid);
+
+ $condition = "specialid=$specialid";
+ if($keyword) $condition .= match_kw($dfields[$fields], $keyword);
+ if($level) $condition .= $level > 9 ? " AND level>0" : " AND level=$level";
+ if($typeid) $condition .= " AND typeid=$typeid";
+ if($thumb) $condition .= " AND thumb<>''";
+ if($itemid) $condition .= " AND itemid=$itemid";
+
+ $lists = $do->get_list($condition);
+ if($condition == "specialid=$specialid" && $items != $special['items']) $db->query("UPDATE {$table} SET items=$items WHERE itemid=$specialid");
+ $menuid = 2;
+ include tpl('item', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/special/admin/menu.inc.php b/module/special/admin/menu.inc.php
new file mode 100644
index 0000000..e6708bb
--- /dev/null
+++ b/module/special/admin/menu.inc.php
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/module/special/admin/setting.inc.php b/module/special/admin/setting.inc.php
new file mode 100644
index 0000000..c0d7609
--- /dev/null
+++ b/module/special/admin/setting.inc.php
@@ -0,0 +1,50 @@
+$v) {
+ if(strpos($k, 'seo_') === false) continue;
+ seo_check($v) or msg('SEO信息包含非法字符');
+ }
+ update_setting($moduleid, $setting);
+ cache_module($moduleid);
+ if($setting['php_list_urlid'] != $MOD['php_list_urlid'] || $setting['htm_list_urlid'] != $MOD['htm_list_urlid'] || $setting['htm_list_prefix'] != $MOD['htm_list_prefix'] || $setting['list_html'] != $MOD['list_html']) {
+ $_MOD = $MOD;
+ $MOD = $setting;
+ $result = $db->query("SELECT * FROM {$DT_PRE}category WHERE moduleid=$moduleid");
+ while($r = $db->fetch_array($result)) {
+ update_category($r);
+ }
+ cache_category($moduleid);
+ $MOD = $_MOD;
+ }
+ if($setting['php_item_urlid'] != $MOD['php_item_urlid'] || $setting['htm_item_urlid'] != $MOD['htm_item_urlid'] || $setting['htm_item_prefix'] != $MOD['htm_item_prefix'] || $setting['show_html'] != $MOD['show_html']) {
+ msg('设置保存成功,开始更新地址', '?moduleid='.$moduleid.'&file=html&action=show&update=1&num=1000');
+ }
+ dmsg('设置保存成功', '?moduleid='.$moduleid.'&file='.$file.'&tab='.$tab);
+} else {
+ $GROUP = cache_read('group.php');
+ $r = $db->get_one("SELECT MAX(itemid) AS maxid FROM {$table}");
+ $maxid = $r['maxid'];
+ extract(dhtmlspecialchars($MOD));
+ if($kw) {
+ $all = 1;
+ ob_start();
+ }
+ include tpl('setting', $module);
+ if($kw) {
+ $data = $content = ob_get_contents();
+ ob_clean();
+ $data = preg_replace('\'(?!((<.*?)|(]*?)>)|([^>]*?)|([^>]*?))\'si', ''.$kw.' ', $data);
+ $data = preg_replace('//', '', $data, 1);
+ echo $data ? $data : $content;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/special/admin/template/edit.tpl.php b/module/special/admin/template/edit.tpl.php
new file mode 100644
index 0000000..e4c6e07
--- /dev/null
+++ b/module/special/admin/template/edit.tpl.php
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+单页采编
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/special/admin/template/html.tpl.php b/module/special/admin/template/html.tpl.php
new file mode 100644
index 0000000..339891c
--- /dev/null
+++ b/module/special/admin/template/html.tpl.php
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/special/admin/template/index.html b/module/special/admin/template/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/special/admin/template/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/special/admin/template/index.tpl.php b/module/special/admin/template/index.tpl.php
new file mode 100644
index 0000000..07589db
--- /dev/null
+++ b/module/special/admin/template/index.tpl.php
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+取消', 0, 'onchange="this.form.action=\'?moduleid='.$moduleid.'&file='.$file.'&action=level\';this.form.submit();"');?>
+
+
+
+
+
+'.$pages.'' : '';?>
+
+ $DT_TIME) { ?>
+
+
+
+
\ No newline at end of file
diff --git a/module/special/admin/template/item_batch.tpl.php b/module/special/admin/template/item_batch.tpl.php
new file mode 100644
index 0000000..e81f306
--- /dev/null
+++ b/module/special/admin/template/item_batch.tpl.php
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+请选择
+ 4 && $m['moduleid'] != $moduleid) echo ''.$m['name'].' ';
+}
+?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
\ No newline at end of file
diff --git a/module/special/admin/template/item_edit.tpl.php b/module/special/admin/template/item_edit.tpl.php
new file mode 100644
index 0000000..c991b04
--- /dev/null
+++ b/module/special/admin/template/item_edit.tpl.php
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/special/admin/template/setting.tpl.php b/module/special/admin/template/setting.tpl.php
new file mode 100644
index 0000000..d47a3a3
--- /dev/null
+++ b/module/special/admin/template/setting.tpl.php
@@ -0,0 +1,355 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/special/common.inc.php b/module/special/common.inc.php
new file mode 100644
index 0000000..621b9bd
--- /dev/null
+++ b/module/special/common.inc.php
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/module/special/global.func.php b/module/special/global.func.php
new file mode 100644
index 0000000..5b466d6
--- /dev/null
+++ b/module/special/global.func.php
@@ -0,0 +1,12 @@
+
\ No newline at end of file
diff --git a/module/special/index.htm.php b/module/special/index.htm.php
new file mode 100644
index 0000000..f5b4e6f
--- /dev/null
+++ b/module/special/index.htm.php
@@ -0,0 +1,46 @@
+get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].'index.php?page={destoon_page}');
+ $tags = array();
+ if($items) {
+ $order = $MOD['order'];
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ if(!$r['islink']) $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put(str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename), $data);
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/special/index.html b/module/special/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/special/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/special/item.class.php b/module/special/item.class.php
new file mode 100644
index 0000000..aa35c29
--- /dev/null
+++ b/module/special/item.class.php
@@ -0,0 +1,126 @@
+specialid = $specialid;
+ $this->table = $table_item;
+ $this->fields = array('typeid','specialid','mid','tid','level','title','style','introduce','thumb','username','addtime', 'editor','edittime','ip','template','linkurl','note');
+ }
+
+ function item($specialid) {
+ $this->__construct($specialid);
+ }
+
+ function pass($post) {
+ if(!is_array($post)) return false;
+ if(!$post['title']) return $this->_(lang('message->pass_title'));
+ if(!$post['linkurl']) return $this->_(lang('message->pass_linkurl'));
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $_username, $_userid, $_cname;
+ $post['addtime'] = (isset($post['addtime']) && is_time($post['addtime'])) ? datetotime($post['addtime']) : DT_TIME;
+ $post['adddate'] = timetodate($post['addtime'], 3);
+ $post['editor'] = $_cname ? $_cname : $_username;
+ $post['edittime'] = DT_TIME;
+ $post['mid'] = intval($post['mid']);
+ $post['tid'] = intval($post['tid']);
+ if($this->itemid) {
+ //
+ } else {
+ $post['ip'] = DT_IP;
+ }
+ return $post;
+ }
+
+ function get_one() {
+ return DB::get_one("SELECT * FROM {$this->table} WHERE itemid='$this->itemid'");
+ }
+
+ function get_list($condition = 'status=3', $order = 'addtime DESC', $cache = '') {
+ global $MOD, $pages, $page, $pagesize, $offset, $items, $TYPE, $special, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition", $cache);
+ $items = $r['num'];
+ }
+ $pages = pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize", $cache);
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['type'] = $r['typeid'] && isset($TYPE[$r['typeid']]) ? set_style($TYPE[$r['typeid']]['typename'], $TYPE[$r['typeid']]['style']) : '';
+ $r['typeurl'] = $r['type'] ? rewrite($MOD['linkurl'].'type.php?tid='.$r['typeid']) : '';
+ $lists[] = $r;
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $MOD;
+ $post = $this->set($post);
+ $t = DB::get_one("SELECT * FROM {$this->table} WHERE specialid=$post[specialid] AND linkurl='$post[linkurl]'");
+ if($t) return false;
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ clear_upload($post['thumb'], $this->itemid, $this->table);
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ clear_upload($post['thumb'], $this->itemid, $this->table);
+ return true;
+ }
+
+ function delete($itemid, $all = true) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->delete($v, $all);
+ }
+ } else {
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ }
+ }
+
+ function level($itemid, $level) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET level=$level WHERE itemid IN ($itemids)");
+ }
+
+ function type($itemid, $typeid) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET typeid=$typeid WHERE itemid IN ($itemids)");
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/special/list.htm.php b/module/special/list.htm.php
new file mode 100644
index 0000000..d85a77d
--- /dev/null
+++ b/module/special/list.htm.php
@@ -0,0 +1,97 @@
+count($table, $condition);
+ if($items != $CAT['item']) {
+ $CAT['item'] = $items;
+ $db->query("UPDATE {$DT_PRE}category SET item=$items WHERE catid=$catid");
+ }
+} else {
+ $items = $CAT['item'];
+}
+$pagesize = $MOD['pagesize'];
+$showpage = 1;
+$datetype = 3;
+$target = '_blank';
+$width = 168;
+$height = 124;
+$cols = 5;
+$percent = dround(100/$cols).'%';
+$template = $CAT['template'] ? $CAT['template'] : ($MOD['template_list'] ? $MOD['template_list'] : 'list');
+$total = max(ceil($items/$MOD['pagesize']), 1);
+if(isset($fid) && isset($num)) {
+ $page = $fid;
+ $topage = $fid + $num - 1;
+ $total = $topage < $total ? $topage : $total;
+}
+for(; $page <= $total; $page++) {
+ $offset = ($page-1)*$pagesize;
+ $pages = listpages($CAT, $items, $page, $pagesize);
+ $tags = array();
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}");
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ if(!$r['islink']) $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $seo_file = 'list';
+ include DT_ROOT.'/include/seo.inc.php';
+ $destoon_task = "moduleid=$moduleid&html=list&catid=$catid&page=$page";
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].($page > 1 ?listurl($CAT, $page) : $CAT['linkurl']);
+ $filename = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, $page);
+ $_tags = $tags;
+ $DT_PC = $GLOBALS['DT_PC'] = 1;
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ if($DT['pcharset']) $filename = convert($filename, DT_CHARSET, $DT['pcharset']);
+ file_put($filename, $data);
+ if($page == 1) {
+ $indexname = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, 0);
+ if($DT['pcharset']) $indexname = convert($indexname, DT_CHARSET, $DT['pcharset']);
+ file_copy($filename, $indexname);
+ }
+ if($EXT['mobile_enable']) {
+ include DT_ROOT.'/include/mobile.htm.php';
+ $head_pc = str_replace($MOD['mobile'], $MOD['linkurl'], $head_mobile);
+ if($CAT['parentid']) $PCAT = get_cat($CAT['parentid']);
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($CAT, '{destoon_page}'));
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $tags = array();
+ foreach($_tags as $r) {
+ $r['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $r['linkurl']);
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ if($items) $js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid;
+ $head_title = $head_name = $CAT['catname'];
+ $filename = str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename);
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put($filename, $data);
+ if($page == 1) file_copy($filename, str_replace(DT_ROOT, DT_ROOT.'/mobile', $indexname));
+ }
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/special/show.htm.php b/module/special/show.htm.php
new file mode 100644
index 0000000..c547eab
--- /dev/null
+++ b/module/special/show.htm.php
@@ -0,0 +1,72 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+if(!$item || $item['status'] < 3 || $item['islink'] > 0) return false;
+require_once DT_ROOT.'/include/content.class.php';
+$could_comment = in_array($moduleid, explode(',', $EXT['comment_module'])) ? 1 : 0;
+extract($item);
+$CAT = get_cat($catid);
+$content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+$t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+$content = $_content = $t['content'];
+if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid);
+ if($lazy) $content = DC::lazy($content);
+ $content = DC::format($content, 1);
+}
+$CP = $MOD['cat_property'] && $CAT['property'];
+if($CP) {
+ require_once DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+}
+
+$TYPE = array();
+foreach(get_type($module.'-'.$moduleid.'-'.$itemid) as $v) {
+ $v['linkurl'] = $MOD['linkurl'].rewrite('type.php?tid='.$v['typeid']);
+ $TYPE[] = $v;
+}
+$adddate = timetodate($addtime, 3);
+$editdate = timetodate($edittime, 3);
+$fileurl = $domain ? $filepath : $linkurl;
+$linkurl = $MOD['linkurl'].$linkurl;
+$user_status = 3;
+$seo_file = 'show';
+include DT_ROOT.'/include/seo.inc.php';
+if($item['seo_title']) $seo_title = $item['seo_title'];
+if($item['seo_keywords']) $head_keywords = $item['seo_keywords'];
+if($item['seo_description']) $head_description = $item['seo_description'];
+$template = $item['template'] ? $item['template'] : ($CAT['show_template'] ? $CAT['show_template'] : ($MOD['template_show'] ? $MOD['template_show'] : 'show'));
+$destoon_task = "moduleid=$moduleid&html=show&itemid=$itemid";
+if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $linkurl);
+$DT_PC = $GLOBALS['DT_PC'] = 1;
+ob_start();
+include template($template, $module);
+$data = ob_get_contents();
+ob_clean();
+$filename = DT_ROOT.'/'.$MOD['moduledir'].'/'.$fileurl;
+if($DT['pcharset']) $filename = convert($filename, DT_CHARSET, $DT['pcharset']);
+file_put($filename, $data);
+if($EXT['mobile_enable']) {
+ include DT_ROOT.'/include/mobile.htm.php';
+ $head_pc = $linkurl;
+ foreach($TYPE as $k=>$v) {
+ $TYPE[$k]['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $v['linkurl']);
+ }
+ $head_title = $head_name = $CAT['catname'];
+ $js_item = 1;
+ $foot = '';
+ if($_content) {
+ $content = $_content;
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, 0);
+ $content = DC::format($content, 0);
+ }
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put(str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename), $data);
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/special/show.inc.php b/module/special/show.inc.php
new file mode 100644
index 0000000..0e0dce6
--- /dev/null
+++ b/module/special/show.inc.php
@@ -0,0 +1,64 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+if($item && $item['status'] > 2) {
+ if($item['islink']) dheader($item['linkurl']);
+ if($MOD['show_html'] && is_file(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl'])) d301($modurl.$item['linkurl']);
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+} else {
+ include load('404.inc');
+}
+$CAT = get_cat($catid);
+if(!check_group($_groupid, $CAT['group_show'])) include load('403.inc');
+$content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+$t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+$content = $t['content'];
+$TYPE = array();
+foreach(get_type($module.'-'.$moduleid.'-'.$itemid) as $v) {
+ $v['linkurl'] = $modurl.rewrite('type.php?tid='.$v['typeid']);
+ $TYPE[] = $v;
+}
+$_TP = sort_type($TYPE);
+$typeid = 0;
+$adddate = timetodate($addtime, 3);
+$editdate = timetodate($edittime, 3);
+$linkurl = $modurl.$linkurl;
+if($DT_PC) {
+ if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ if($lazy) $content = DC::lazy($content);
+ $content = DC::format($content, $DT_PC);
+ }
+ $CP = $MOD['cat_property'] && $CAT['property'];
+ if($CP) {
+ require DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+ }
+ $update = '';
+ $user_status = 3;
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $linkurl);
+} else {
+ if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, $DT_PC);
+ if($share_icon) $share_icon = DC::icon($thumb, $content);
+ DC::format($content, $DT_PC);
+ }
+ $update = '';
+ $user_status = 3;
+ $head_title = $head_name = $CAT['catname'];
+ $js_item = 1;
+ $foot = '';
+}
+if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+$seo_file = 'show';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $item['template'] ? $item['template'] : ($CAT['show_template'] ? $CAT['show_template'] : ($MOD['template_show'] ? $MOD['template_show'] : 'show'));
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/special/task.inc.php b/module/special/task.inc.php
new file mode 100644
index 0000000..bfe5460
--- /dev/null
+++ b/module/special/task.inc.php
@@ -0,0 +1,35 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3) exit;
+ extract($item);
+ $update = '';
+ if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+ if($MOD['hits']) echo 'Inner("hits", \''.$item['hits'].'\');';
+ $item['linkurl'] = $item['domain'] ? $item['filepath'] : $item['linkurl'];
+ if($MOD['show_html'] && $task_item && $DT_TIME - @filemtime(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl']) > $task_item) tohtml('show', $module);
+} else if($html == 'list') {
+ $catid or exit;
+ if($MOD['list_html'] && $task_list && $CAT) {
+ $num = 1;
+ $totalpage = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $demo = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, '{DEMO}');
+ $fid = $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $page + 1;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $totalpage + 1 - $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ }
+} else if($html == 'index') {
+ if($DT['cache_hits'] && $MOD['hits']) {
+ $file = DT_CACHE.'/hits-'.$moduleid;
+ if($DT_TIME - @filemtime($file.'.dat') > $DT['cache_hits'] || @filesize($file.'.php') > 102400) update_hits($moduleid, $table);
+ }
+ if($MOD['index_html']) {
+ $file = DT_ROOT.'/'.$MOD['moduledir'].'/'.$DT['index'].'.'.$DT['file_ext'];
+ if($DT_TIME - @filemtime($file) > $task_index) tohtml('index', $module);
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/special/type.inc.php b/module/special/type.inc.php
new file mode 100644
index 0000000..7bb0cbd
--- /dev/null
+++ b/module/special/type.inc.php
@@ -0,0 +1,69 @@
+get_one("SELECT * FROM {$DT_PRE}type WHERE typeid=$typeid");
+$type or dheader($modurl);
+$item = explode('-', $type['item']);
+$item[0] == 'special' or dheader($modurl);
+$item[1] == $moduleid or dheader($modurl);
+$itemid = $item[2];
+$item = $db->get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+($item && $item['status'] == 3) or dheader($modurl);
+if($item['islink']) dheader($item['linkurl']);
+$could_comment = in_array($moduleid, explode(',', $EXT['comment_module'])) ? 1 : 0;
+extract($item);
+$adddate = timetodate($addtime, 3);
+$CAT = get_cat($catid);
+$linkurl = $modurl.$linkurl;
+$TYPE = array();
+foreach(get_type('special-'.$itemid) as $v) {
+ $v['linkurl'] = $modurl.rewrite('type.php?tid='.$v['typeid']);
+ $TYPE[] = $v;
+}
+$_TP = sort_type($TYPE);
+$action = 'type';
+if($DT_PC) {
+ if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $DT_URL);
+ $CSS = array('article');
+} else {
+ $condition = "specialid=$itemid and typeid=$typeid";
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table_item} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].rewrite('type.php?tid='.$typeid.'&page={destoon_page}'));
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT * FROM {$table_item} WHERE $condition ORDER BY addtime DESC LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = moburl($r['linkurl'], $r['mid']);
+ $r['date'] = timetodate($r['addtime'], 3);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'type.php?job=ajax&tid='.$tid;
+ }
+ if($job == 'ajax') {
+ if($tags) include template('list-special-type', 'tag');
+ exit;
+ }
+ $head_title = $type['typename'];
+ $foot = '';
+}
+include DT_ROOT.'/include/seo.inc.php';
+if($seo_title) {
+ $seo_title = $seo_title.$seo_delimiter.$seo_sitename;
+} else {
+ $seo_title = $seo_showtitle.$seo_delimiter.$seo_catname.$seo_modulename.$seo_delimiter.$seo_sitename;
+}
+$seo_title = $type['typename'].$seo_delimiter.$seo_page.$seo_title;
+$template = $item['template'] ? $item['template'] : ($CAT['show_template'] ? $CAT['show_template'] : ($MOD['template_show'] ? $MOD['template_show'] : 'show'));
+if($DT_PC) {
+ //
+} else {
+ if($sns_app) $seo_title = $type['typename'];
+}
+include template($template, $module);
+?>
\ No newline at end of file
diff --git a/module/video/admin/html.inc.php b/module/video/admin/html.inc.php
new file mode 100644
index 0000000..e60e6ea
--- /dev/null
+++ b/module/video/admin/html.inc.php
@@ -0,0 +1,119 @@
+get_one("SELECT * FROM {$DT_PRE}category WHERE moduleid=$moduleid AND catid>$catids ORDER BY catid");
+ if($CAT) {
+ $bcatid = $catid = $CAT['catid'];
+ $total = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $num = 50;
+ $bfid = $fid;
+ isset($fpage) or $fpage = 1;
+ if($fpage <= $total) {
+ $fid = $fpage;
+ tohtml('list', $module);
+ $fid = $bfid;
+ msg($MOD['name'].' ['.$CAT['catname'].'] 第'.$fpage.'页至第'.($fpage+$num-1).'页生成成功'.progress(0, $fid, $tid), '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids='.$catids.'&fid='.$fid.'&tid='.$tid.'&all='.$all.'&one='.$one.'&fpage='.($fpage+$num), 0);
+ }
+ $fid++;
+ msg($MOD['name'].' ['.$CAT['catname'].'] 生成成功'.progress(0, $fid, $tid), '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids='.$catid.'&fid='.$fid.'&tid='.$tid.'&all='.$all.'&one='.$one);
+ } else {
+ $all ? msg($MOD['name'].'列表生成成功', '?moduleid='.$moduleid.'&file='.$file.'&action=show&all='.$all.'&one='.$one) : msg($MOD['name'].'列表生成成功', $this_forward);
+ }
+ } else {
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$DT_PRE}category WHERE moduleid=$moduleid");
+ $tid = $r['num'];
+ msg('', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catids=0&fid=1&&tid='.$tid.'&all='.$all.'&one='.$one);
+ }
+ break;
+ case 'show':
+ $update = (isset($update) && $update) ? 1 : 0;
+ if(!$update && !$MOD['show_html']) {
+ if($one) dheader( '?file=html&action=back&mid='.$moduleid);
+ $all ? msg($MOD['name'].'生成成功', $this_forward) : dmsg($MOD['name'].'生成成功', $this_forward);
+ }
+ $catid = isset($catid) ? intval($catid) : '';
+ $sql = $catid ? " AND catid=$catid" : '';
+ if(!isset($fid)) {
+ $r = $db->get_one("SELECT min(itemid) AS fid FROM {$table} WHERE status>2 {$sql}");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ }
+ isset($sid) or $sid = $fid;
+ if(!isset($tid)) {
+ $r = $db->get_one("SELECT max(itemid) AS tid FROM {$table} WHERE status>2 {$sql}");
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ }
+ if($update) {
+ require DT_ROOT.'/module/'.$module.'/'.$module.'.class.php';
+ $do = new $module($moduleid);
+ }
+ isset($num) or $num = 100;
+ if($fid <= $tid) {
+ $result = $db->query("SELECT itemid FROM {$table} WHERE status>2 AND itemid>=$fid {$sql} ORDER BY itemid LIMIT 0,$num");
+ if($db->affected_rows($result)) {
+ while($r = $db->fetch_array($result)) {
+ $itemid = $r['itemid'];
+ $update ? $do->update($itemid) : tohtml('show', $module);
+ }
+ $itemid += 1;
+ } else {
+ $itemid = $fid + $num;
+ }
+ } else {
+ if($update) {
+ $all ? msg('', '?moduleid='.$moduleid.'&file='.$file.'&action=index&all=1&one='.$one) : dmsg('更新成功', $this_forward);
+ } else {
+ if($one) dheader( '?file=html&action=back&mid='.$moduleid);
+ $all ? msg($MOD['name'].'生成成功', $this_forward) : dmsg($MOD['name'].'生成成功', $this_forward);
+ }
+ }
+ msg('ID从'.$fid.'至'.($itemid-1).$MOD['name'].($update ? '更新' : '生成').'成功'.progress($sid, $fid, $tid), "?moduleid=$moduleid&file=$file&action=$action&sid=$sid&fid=$itemid&tid=$tid&num=$num&update=$update&all=$all&one=$one", 0);
+ break;
+ case 'cate':
+ $catid or msg('请选择分类');
+ isset($num) or $num = 50;
+ isset($fid) or $fid = 1;
+ $total = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ if($fpage && $tpage) {
+ $fid = $fpage;
+ $num = $tpage - $fpage + 1;
+ tohtml('list', $module);
+ dmsg('生成成功', $this_forward);
+ }
+ if($fid <= $total) {
+ tohtml('list', $module);
+ msg('第'.$fid.'页至第'.($fid+$num-1).'页生成成功', '?moduleid='.$moduleid.'&file='.$file.'&action='.$action.'&catid='.$catid.'&fid='.($fid+$num).'&num='.$num.'&fpage='.$fpage.'&tpage='.$tpage, 0);
+ } else {
+ dmsg('生成成功', $this_forward);
+ }
+ break;
+ case 'item':
+ $catid or msg('请选择分类');
+ msg('', '?moduleid='.$moduleid.'&file='.$file.'&action=show&catid='.$catid.'&num='.$num);
+ break;
+ default:
+ $r = $db->get_one("SELECT min(itemid) AS fid,max(itemid) AS tid FROM {$table} WHERE status=3");
+ $fid = $r['fid'] ? $r['fid'] : 0;
+ $tid = $r['tid'] ? $r['tid'] : 0;
+ include tpl('html', $module);
+ break;
+}
+?>
\ No newline at end of file
diff --git a/module/video/admin/index.html b/module/video/admin/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/video/admin/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/video/admin/install.inc.php b/module/video/admin/install.inc.php
new file mode 100644
index 0000000..5b4a1fb
--- /dev/null
+++ b/module/video/admin/install.inc.php
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/module/video/admin/menu.inc.php b/module/video/admin/menu.inc.php
new file mode 100644
index 0000000..c50d2ab
--- /dev/null
+++ b/module/video/admin/menu.inc.php
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/module/video/admin/remkdir.inc.php b/module/video/admin/remkdir.inc.php
new file mode 100644
index 0000000..258dd54
--- /dev/null
+++ b/module/video/admin/remkdir.inc.php
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/module/video/admin/setting.inc.php b/module/video/admin/setting.inc.php
new file mode 100644
index 0000000..5cf94d6
--- /dev/null
+++ b/module/video/admin/setting.inc.php
@@ -0,0 +1,60 @@
+$v) {
+ if(strpos($k, 'seo_') === false) continue;
+ seo_check($v) or msg('SEO信息包含非法字符');
+ }
+ update_setting($moduleid, $setting);
+ cache_module($moduleid);
+ if($setting['php_list_urlid'] != $MOD['php_list_urlid'] || $setting['htm_list_urlid'] != $MOD['htm_list_urlid'] || $setting['htm_list_prefix'] != $MOD['htm_list_prefix'] || $setting['list_html'] != $MOD['list_html']) {
+ $_MOD = $MOD;
+ $MOD = $setting;
+ $result = $db->query("SELECT * FROM {$DT_PRE}category WHERE moduleid=$moduleid");
+ while($r = $db->fetch_array($result)) {
+ update_category($r);
+ }
+ cache_category($moduleid);
+ $MOD = $_MOD;
+ }
+ if($setting['php_item_urlid'] != $MOD['php_item_urlid'] || $setting['htm_item_urlid'] != $MOD['htm_item_urlid'] || $setting['htm_item_prefix'] != $MOD['htm_item_prefix'] || $setting['show_html'] != $MOD['show_html']) {
+ msg('设置保存成功,开始更新地址', '?moduleid='.$moduleid.'&file=html&action=show&update=1&num=1000');
+ }
+ dmsg('设置保存成功', '?moduleid='.$moduleid.'&file='.$file.'&tab='.$tab);
+} else {
+ $GROUP = cache_read('group.php');
+ $r = $db->get_one("SELECT MAX(itemid) AS maxid FROM {$table}");
+ $maxid = $r['maxid'];
+ extract(dhtmlspecialchars($MOD));
+ if($kw) {
+ $all = 1;
+ ob_start();
+ }
+ include tpl('setting', $module);
+ if($kw) {
+ $data = $content = ob_get_contents();
+ ob_clean();
+ $data = preg_replace('\'(?!((<.*?)|(]*?)>)|([^>]*?)|([^>]*?))\'si', ''.$kw.' ', $data);
+ $data = preg_replace('//', '', $data, 1);
+ echo $data ? $data : $content;
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/video/admin/template/edit.tpl.php b/module/video/admin/template/edit.tpl.php
new file mode 100644
index 0000000..3043cee
--- /dev/null
+++ b/module/video/admin/template/edit.tpl.php
@@ -0,0 +1,234 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+单页采编
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/video/admin/template/html.tpl.php b/module/video/admin/template/html.tpl.php
new file mode 100644
index 0000000..339891c
--- /dev/null
+++ b/module/video/admin/template/html.tpl.php
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/video/admin/template/index.tpl.php b/module/video/admin/template/index.tpl.php
new file mode 100644
index 0000000..bc7f0a5
--- /dev/null
+++ b/module/video/admin/template/index.tpl.php
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+取消', 0, 'onchange="this.form.action=\'?moduleid='.$moduleid.'&file='.$file.'&action=level\';this.form.submit();"');?>
+
+
+
+
+
+'.$pages.'' : '';?>
+
+
+
\ No newline at end of file
diff --git a/module/video/admin/template/setting.tpl.php b/module/video/admin/template/setting.tpl.php
new file mode 100644
index 0000000..de0132f
--- /dev/null
+++ b/module/video/admin/template/setting.tpl.php
@@ -0,0 +1,509 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module/video/common.inc.php b/module/video/common.inc.php
new file mode 100644
index 0000000..3f748b1
--- /dev/null
+++ b/module/video/common.inc.php
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/module/video/global.func.php b/module/video/global.func.php
new file mode 100644
index 0000000..8935042
--- /dev/null
+++ b/module/video/global.func.php
@@ -0,0 +1,61 @@
+$addtime ORDER BY addtime ASC LIMIT $pagesize");
+ while($r = DB::fetch_array($result)) {
+ $P[] = $r;
+ }
+ $P = array_reverse($P);
+ $result = DB::query("SELECT * FROM {$table} WHERE {$condition} AND addtime<$addtime ORDER BY addtime DESC LIMIT $pagesize");
+ while($r = DB::fetch_array($result)) {
+ $N[] = $r;
+ }
+ $cp = count($P);
+ $cn = count($N);
+ $p = $n = 0;
+ if($cp >= $num) {
+ if($cn >= $num) {
+ $p = $n = $num;
+ } else {
+ $p = $num - $cn + $num;
+ if($p > $cp) $p = $cp;
+ $n = $cn;
+ }
+ } else {
+ if($cn > $num) {
+ $p = $cp;
+ $n = $num - $cp + $num;
+ if($n > $cn) $n = $cn;
+ } else {
+ $p = $cp;
+ $n = $cn;
+ }
+ }
+ $tags = array();
+ if($p) {
+ for($i = $cp - 1; $i >= $cp - $p; $i--) {
+ $tags[] = $P[$i];
+ }
+ $tags = array_reverse($tags);
+ }
+ $tags[] = $item;
+ if($n) {
+ for($i = 0; $i < $n; $i++) {
+ $tags[] = $N[$i];
+ }
+ }
+ return $tags;
+}
+?>
\ No newline at end of file
diff --git a/module/video/index.htm.php b/module/video/index.htm.php
new file mode 100644
index 0000000..7d0f009
--- /dev/null
+++ b/module/video/index.htm.php
@@ -0,0 +1,46 @@
+get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].'index.php?page={destoon_page}');
+ $tags = array();
+ if($items) {
+ $order = $MOD['order'];
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize");
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put(str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename), $data);
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/video/index.html b/module/video/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/module/video/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/module/video/index.inc.php b/module/video/index.inc.php
new file mode 100644
index 0000000..1d48338
--- /dev/null
+++ b/module/video/index.inc.php
@@ -0,0 +1,41 @@
+ 1 ? 'index.php?page='.$page : '');
+} else {
+ $condition = "status=3";
+ if($cityid) {
+ $areaid = $cityid;
+ $ARE = get_area($areaid);
+ $condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
+ }
+ $r = $db->get_one("SELECT COUNT(*) AS num FROM {$table} WHERE $condition", 'CACHE');
+ $items = $r['num'];
+ $pages = mobile_pages($items, $page, $pagesize);
+ $tags = array();
+ if($items) {
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}", ($CFG['db_expires'] && $page == 1) ? 'CACHE' : '', $CFG['db_expires']);
+ while($r = $db->fetch_array($result)) {
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['mobile'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $db->free_result($result);
+ $js_load = $MOD['mobile'].'search.php?job=ajax';
+ }
+ $head_title = $head_name = $MOD['name'];
+}
+$seo_file = 'index';
+include DT_ROOT.'/include/seo.inc.php';
+include template($MOD['template_index'] ? $MOD['template_index'] : 'index', $module);
+?>
\ No newline at end of file
diff --git a/module/video/list.htm.php b/module/video/list.htm.php
new file mode 100644
index 0000000..becea5d
--- /dev/null
+++ b/module/video/list.htm.php
@@ -0,0 +1,94 @@
+count($table, $condition);
+ if($items != $CAT['item']) {
+ $CAT['item'] = $items;
+ $db->query("UPDATE {$DT_PRE}category SET item=$items WHERE catid=$catid");
+ }
+} else {
+ $items = $CAT['item'];
+}
+$pagesize = $MOD['pagesize'];
+$showpage = 1;
+$datetype = 3;
+$target = '_blank';
+$width = 168;
+$height = 124;
+$template = $CAT['template'] ? $CAT['template'] : ($MOD['template_list'] ? $MOD['template_list'] : 'list');
+$total = max(ceil($items/$MOD['pagesize']), 1);
+if(isset($fid) && isset($num)) {
+ $page = $fid;
+ $topage = $fid + $num - 1;
+ $total = $topage < $total ? $topage : $total;
+}
+for(; $page <= $total; $page++) {
+ $offset = ($page-1)*$pagesize;
+ $pages = listpages($CAT, $items, $page, $pagesize);
+ $tags = array();
+ $result = $db->query("SELECT ".$MOD['fields']." FROM {$table} WHERE {$condition} ORDER BY ".$MOD['order']." LIMIT {$offset},{$pagesize}");
+ while($r = $db->fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ if($lazy && isset($r['thumb']) && $r['thumb']) $r['thumb'] = DT_SKIN.'image/lazy.gif" original="'.$r['thumb'];
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $tags[] = $r;
+ }
+ $seo_file = 'list';
+ include DT_ROOT.'/include/seo.inc.php';
+ $destoon_task = "moduleid=$moduleid&html=list&catid=$catid&page=$page";
+ if($EXT['mobile_enable']) $head_mobile = $MOD['mobile'].($page > 1 ?listurl($CAT, $page) : $CAT['linkurl']);
+ $filename = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, $page);
+ $_tags = $tags;
+ $DT_PC = $GLOBALS['DT_PC'] = 1;
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ if($DT['pcharset']) $filename = convert($filename, DT_CHARSET, $DT['pcharset']);
+ file_put($filename, $data);
+ if($page == 1) {
+ $indexname = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, 0);
+ if($DT['pcharset']) $indexname = convert($indexname, DT_CHARSET, $DT['pcharset']);
+ file_copy($filename, $indexname);
+ }
+ if($EXT['mobile_enable']) {
+ include DT_ROOT.'/include/mobile.htm.php';
+ $head_pc = str_replace($MOD['mobile'], $MOD['linkurl'], $head_mobile);
+ if($CAT['parentid']) $PCAT = get_cat($CAT['parentid']);
+ $pages = mobile_pages($items, $page, $pagesize, $MOD['mobile'].listurl($CAT, '{destoon_page}'));
+ $time = strpos($MOD['order'], 'add') !== false ? 'addtime' : 'edittime';
+ $tags = array();
+ foreach($_tags as $r) {
+ $r['linkurl'] = str_replace($MOD['linkurl'], $MOD['mobile'], $r['linkurl']);
+ $r['date'] = timetodate($r[$time], 3);
+ $tags[] = $r;
+ }
+ if($items) $js_load = $MOD['mobile'].'search.php?job=ajax&catid='.$catid;
+ $head_title = $head_name = $CAT['catname'];
+ $filename = str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename);
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put($filename, $data);
+ if($page == 1) file_copy($filename, str_replace(DT_ROOT, DT_ROOT.'/mobile', $indexname));
+ }
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/video/show.htm.php b/module/video/show.htm.php
new file mode 100644
index 0000000..9133108
--- /dev/null
+++ b/module/video/show.htm.php
@@ -0,0 +1,70 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+if(!$item || $item['status'] < 3) return false;
+require_once DT_ROOT.'/include/content.class.php';
+$could_comment = in_array($moduleid, explode(',', $EXT['comment_module'])) ? 1 : 0;
+extract($item);
+$CAT = get_cat($catid);
+$content_table = content_table($moduleid, $itemid, $MOD['split'], $table_data);
+$t = $db->get_one("SELECT content FROM {$content_table} WHERE itemid=$itemid");
+$content = $_content = $t['content'];
+if($content) {
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid);
+ if($lazy) $content = DC::lazy($content);
+ $content = DC::format($content, 1);
+}
+$CP = $MOD['cat_property'] && $CAT['property'];
+if($CP) {
+ require_once DT_ROOT.'/include/property.func.php';
+ $options = property_option($catid);
+ $values = property_value($moduleid, $itemid);
+}
+$adddate = timetodate($addtime, 3);
+$editdate = timetodate($edittime, 3);
+$fileurl = $linkurl;
+$linkurl = $MOD['linkurl'].$linkurl;
+$maincat = get_maincat(0, $moduleid);
+$keytags = $tag ? explode(' ', $tag) : array();
+$player = DC::player($video, $width, $height, $MOD['autostart']);
+$fee = DC::fee($item['fee'], $MOD['fee_view']);
+if($fee) {
+ $description = '';
+ $user_status = 4;
+} else {
+ $user_status = 3;
+}
+$seo_file = 'show';
+include DT_ROOT.'/include/seo.inc.php';
+$template = $item['template'] ? $item['template'] : ($CAT['show_template'] ? $CAT['show_template'] : ($MOD['template_show'] ? $MOD['template_show'] : 'show'));
+$destoon_task = "moduleid=$moduleid&html=show&itemid=$itemid";
+if($EXT['mobile_enable']) $head_mobile = str_replace($MOD['linkurl'], $MOD['mobile'], $linkurl);
+$DT_PC = $GLOBALS['DT_PC'] = 1;
+ob_start();
+include template($template, $module);
+$data = ob_get_contents();
+ob_clean();
+$filename = DT_ROOT.'/'.$MOD['moduledir'].'/'.$fileurl;
+if($DT['pcharset']) $filename = convert($filename, DT_CHARSET, $DT['pcharset']);
+file_put($filename, $data);
+if($EXT['mobile_enable']) {
+ include DT_ROOT.'/include/mobile.htm.php';
+ $head_pc = $linkurl;
+ $head_title = $head_name = $CAT['catname'];
+ $js_item = 1;
+ $foot = '';
+ if($_content) {
+ $content = $_content;
+ if($MOD['keylink']) $content = DC::keylink($content, $moduleid, 0);
+ $content = DC::format($content, 0);
+ }
+ $player = DC::player($video, '100%', '100%', $MOD['autostart'], 0, ' playsinline -webkit-playsinline webkit-playsinline');
+ ob_start();
+ include template($template, $module);
+ $data = ob_get_contents();
+ ob_clean();
+ file_put(str_replace(DT_ROOT, DT_ROOT.'/mobile', $filename), $data);
+}
+return true;
+?>
\ No newline at end of file
diff --git a/module/video/task.inc.php b/module/video/task.inc.php
new file mode 100644
index 0000000..74a74cf
--- /dev/null
+++ b/module/video/task.inc.php
@@ -0,0 +1,68 @@
+get_one("SELECT * FROM {$table} WHERE itemid=$itemid");
+ if(!$item || $item['status'] < 3) exit;
+ require DT_ROOT.'/include/content.class.php';
+ extract($item);
+ $fee = DC::fee($item['fee'], $MOD['fee_view']);
+ ($MOD['show_html'] || $fee) or exit;
+ $currency = $MOD['fee_currency'];
+ $fee_unit = $currency == 'money' ? $DT['money_unit'] : $DT['credit_unit'];
+ $fee_name = $currency == 'money' ? $DT['money_name'] : $DT['credit_name'];
+ $inner = false;
+ if(check_group($_groupid, $MOD['group_show'])) {
+ if($fee) {
+ $inner = true;
+ if($MG['fee_mode'] && $MOD['fee_mode']) {
+ $user_status = 3;
+ } else {
+ $mid = $moduleid;
+ if($_userid) {
+ $user_status = check_pay($mid, $itemid) ? 3 : 2;
+ } else {
+ $user_status = 0;
+ }
+ }
+ } else {
+ $user_status = 3;
+ }
+ } else {
+ $inner = true;
+ $user_status = $_userid ? 1 : 0;
+ }
+ if($_username && $_username == $item['username']) $user_status = 3;
+ if($inner) {
+ $player = $user_status == 3 ? DC::player($video, $width, $height, $MOD['autostart']) : '';
+ $content = strip_nr(ob_template('content', 'chip'), true);
+ echo 'Inner("player", \''.$content.'\');';
+ }
+ $update = '';
+ if(!$DT_BOT) include DT_ROOT.'/include/update.inc.php';
+ if($MOD['hits']) echo 'Inner("hits", \''.$item['hits'].'\');';
+ if($MOD['show_html'] && $task_item && $DT_TIME - @filemtime(DT_ROOT.'/'.$MOD['moduledir'].'/'.$item['linkurl']) > $task_item) tohtml('show', $module);
+} else if($html == 'list') {
+ $catid or exit;
+ if($MOD['list_html'] && $task_list && $CAT) {
+ $num = 1;
+ $totalpage = max(ceil($CAT['item']/$MOD['pagesize']), 1);
+ $demo = DT_ROOT.'/'.$MOD['moduledir'].'/'.listurl($CAT, '{DEMO}');
+ $fid = $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $page + 1;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ $fid = $totalpage + 1 - $page;
+ if($fid >= 1 && $fid <= $totalpage && $DT_TIME - @filemtime(str_replace('{DEMO}', $fid, $demo)) > $task_list) tohtml('list', $module);
+ }
+} else if($html == 'index') {
+ if($DT['cache_hits'] && $MOD['hits']) {
+ $file = DT_CACHE.'/hits-'.$moduleid;
+ if($DT_TIME - @filemtime($file.'.dat') > $DT['cache_hits'] || @filesize($file.'.php') > 102400) update_hits($moduleid, $table);
+ }
+ if($MOD['index_html']) {
+ $file = DT_ROOT.'/'.$MOD['moduledir'].'/'.$DT['index'].'.'.$DT['file_ext'];
+ if($DT_TIME - @filemtime($file) > $task_index) tohtml('index', $module);
+ }
+}
+?>
\ No newline at end of file
diff --git a/module/video/video.class.php b/module/video/video.class.php
new file mode 100644
index 0000000..905828a
--- /dev/null
+++ b/module/video/video.class.php
@@ -0,0 +1,284 @@
+moduleid = $moduleid;
+ $this->table = $table;
+ $this->table_data = $table_data;
+ $this->split = $MOD['split'];
+ $this->fields = array('catid','areaid','level','title','style','fee','introduce','tag','album','thumb','video','mobile','width','height','status','hits','username','addtime','editor','edittime','ip','template', 'linkurl','filepath','note');
+ }
+
+ function video($moduleid) {
+ $this->__construct($moduleid);
+ }
+
+ function pass($post) {
+ global $MOD;
+ if(!is_array($post)) return false;
+ if(!$post['catid']) return $this->_(lang('message->pass_catid'));
+ if(strlen($post['title']) < 3) return $this->_(lang('message->pass_title'));
+ if(!is_url($post['thumb'])) return $this->_(lang('message->pass_thumb'));
+ if(DT_MAX_LEN && strlen(clear_img($post['content'])) > DT_MAX_LEN) $this->_(lang('message->pass_max'));
+ return true;
+ }
+
+ function set($post) {
+ global $MOD, $_username, $_userid, $_cname;
+ $post['filepath'] = (isset($post['filepath']) && is_filepath($post['filepath'])) ? file_vname($post['filepath']) : '';
+ $post['addtime'] = (isset($post['addtime']) && is_time($post['addtime'])) ? datetotime($post['addtime']) : DT_TIME;
+ $post['editor'] = $_cname ? $_cname : $_username;
+ $post['edittime'] = DT_TIME;
+ $post['fee'] = dround($post['fee']);
+ $post['video'] = fix_link($post['video']);
+ $post['video_width'] = intval($post['video_width']);
+ $post['video_height'] = intval($post['video_height']);
+ $post['content'] = stripslashes($post['content']);
+ $post['content'] = save_local($post['content']);
+ if($MOD['clear_link']) $post['content'] = clear_link($post['content']);
+ if($MOD['save_remotepic']) $post['content'] = save_remote($post['content']);
+ if($MOD['introduce_length']) $post['introduce'] = addslashes(get_intro($post['content'], $MOD['introduce_length']));
+ if($this->itemid) {
+ $new = $post['content'];
+ if($post['thumb']) $new .= ' ';
+ $r = $this->get_one();
+ $old = $r['content'];
+ if($r['thumb']) $old .= ' ';
+ delete_diff($new, $old);
+ if($r['video'] != $post['video']) delete_upload($r['video'], match_userid($r['video']));
+ } else {
+ $post['ip'] = DT_IP;
+ }
+ $content = $post['content'];
+ unset($post['content']);
+ $post = dhtmlspecialchars($post);
+ $post['content'] = addslashes(dsafe($content));
+ return array_map("trim", $post);
+ }
+
+ function get_one() {
+ $r = DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$this->itemid");
+ if($r) {
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ $t = DB::get_one("SELECT content FROM {$content_table} WHERE itemid=$this->itemid");
+ $r['content'] = $t ? $t['content'] : '';
+ return $r;
+ } else {
+ return array();
+ }
+ }
+
+ function get_list($condition = 'status=3', $order = 'edittime DESC', $cache = '') {
+ global $MOD, $pages, $page, $pagesize, $offset, $items, $sum;
+ if($page > 1 && $sum) {
+ $items = $sum;
+ } else {
+ $r = DB::get_one("SELECT COUNT(*) AS num FROM {$this->table} WHERE $condition", $cache);
+ $items = $r['num'];
+ }
+ $pages = defined('CATID') ? listpages(1, CATID, $items, $page, $pagesize, 10, $MOD['linkurl']) : pages($items, $page, $pagesize);
+ if($items < 1) return array();
+ $lists = $catids = $CATS = array();
+ $result = DB::query("SELECT * FROM {$this->table} WHERE $condition ORDER BY $order LIMIT $offset,$pagesize", $cache);
+ while($r = DB::fetch_array($result)) {
+ $r['adddate'] = timetodate($r['addtime'], 5);
+ $r['editdate'] = timetodate($r['edittime'], 5);
+ $r['alt'] = $r['title'];
+ $r['title'] = set_style($r['title'], $r['style']);
+ $r['linkurl'] = $MOD['linkurl'].$r['linkurl'];
+ $catids[$r['catid']] = $r['catid'];
+ $lists[] = $r;
+ }
+ if($catids) {
+ $result = DB::query("SELECT catid,catname,linkurl FROM ".DT_PRE."category WHERE catid IN (".implode(',', $catids).")");
+ while($r = DB::fetch_array($result)) {
+ $CATS[$r['catid']] = $r;
+ }
+ if($CATS) {
+ foreach($lists as $k=>$v) {
+ $lists[$k]['catname'] = $v['catid'] ? $CATS[$v['catid']]['catname'] : '';
+ $lists[$k]['caturl'] = $v['catid'] ? $MOD['linkurl'].$CATS[$v['catid']]['linkurl'] : '';
+ }
+ }
+ }
+ return $lists;
+ }
+
+ function add($post) {
+ global $MOD;
+ $post = $this->set($post);
+ $sqlk = $sqlv = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) { $sqlk .= ','.$k; $sqlv .= ",'$v'"; }
+ }
+ $sqlk = substr($sqlk, 1);
+ $sqlv = substr($sqlv, 1);
+ DB::query("INSERT INTO {$this->table} ($sqlk) VALUES ($sqlv)");
+ $this->itemid = DB::insert_id();
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ DB::query("REPLACE INTO {$content_table} (itemid,content) VALUES ('$this->itemid', '$post[content]')");
+ $this->update($this->itemid);
+ if($post['status'] == 3 && $post['username'] && $MOD['credit_add']) {
+ credit_add($post['username'], $MOD['credit_add']);
+ credit_record($post['username'], $MOD['credit_add'], 'system', lang('my->credit_record_add', array($MOD['name'])), 'ID:'.$this->itemid);
+ }
+ clear_upload($post['content'].$post['thumb'].$post['video'], $this->itemid);
+ return $this->itemid;
+ }
+
+ function edit($post) {
+ $this->delete($this->itemid, false);
+ $post = $this->set($post);
+ $sql = '';
+ foreach($post as $k=>$v) {
+ if(in_array($k, $this->fields)) $sql .= ",$k='$v'";
+ }
+ $sql = substr($sql, 1);
+ DB::query("UPDATE {$this->table} SET $sql WHERE itemid=$this->itemid");
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ DB::query("REPLACE INTO {$content_table} (itemid,content) VALUES ('$this->itemid', '$post[content]')");
+ $this->update($this->itemid);
+ clear_upload($post['content'].$post['thumb'].$post['video'], $this->itemid);
+ if($post['status'] > 2) {
+ history($this->moduleid, $this->itemid, 'del');
+ $this->tohtml($this->itemid, $post['catid']);
+ }
+ return true;
+ }
+
+ function tohtml($itemid = 0, $catid = 0) {
+ global $module, $MOD;
+ if($MOD['show_html'] && $itemid) tohtml('show', $module, "itemid=$itemid");
+ }
+
+ function update($itemid) {
+ $item = DB::get_one("SELECT * FROM {$this->table} WHERE itemid=$itemid");
+ $update = '';
+ $keyword = $item['title'].','.($item['album'] ? $item['album'].',' : '').($item['tag'] ? str_replace(' ', ',', trim($item['tag'])).',' : '').strip_tags(cat_pos(get_cat($item['catid']), ','));
+ if($keyword != $item['keyword']) {
+ $keyword = str_replace("//", '', addslashes($keyword));
+ $update .= ",keyword='$keyword'";
+ }
+ $video = url2video($item['video']);
+ if($video && $video != $item['video']) $update .= ",video='$video'";
+ $mobile = $this->is_mobile($video) ? 1 : 0;
+ if($mobile != $item['mobile']) $update .= ",mobile='$mobile'";
+ $item['itemid'] = $itemid;
+ $linkurl = itemurl($item);
+ if($linkurl != $item['linkurl']) $update .= ",linkurl='$linkurl'";
+ if($update) DB::query("UPDATE {$this->table} SET ".(substr($update, 1))." WHERE itemid=$itemid");
+ }
+
+ function recycle($itemid) {
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->recycle($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=0 WHERE itemid=$itemid");
+ $this->delete($itemid, false);
+ return true;
+ }
+ }
+
+ function restore($itemid) {
+ global $module, $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->restore($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=3 WHERE itemid=$itemid");
+ if($MOD['show_html']) tohtml('show', $module, "itemid=$itemid");
+ return true;
+ }
+ }
+
+ function delete($itemid, $all = true) {
+ global $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) {
+ $this->delete($v, $all);
+ }
+ } else {
+ $this->itemid = $itemid;
+ $r = $this->get_one();
+ if($MOD['show_html']) {
+ $_file = DT_ROOT.'/'.$MOD['moduledir'].'/'.$r['linkurl'];
+ html_del($_file);
+ }
+ if($all) {
+ $userid = get_user($r['username']);
+ if($r['thumb']) delete_upload($r['thumb'], $userid);
+ if($r['video']) delete_upload($r['video'], $userid);
+ if($r['content']) delete_local($r['content'], $userid);
+ DB::query("DELETE FROM {$this->table} WHERE itemid=$itemid");
+ $content_table = content_table($this->moduleid, $this->itemid, $this->split, $this->table_data);
+ DB::query("DELETE FROM {$content_table} WHERE itemid=$itemid");
+ if($MOD['cat_property']) DB::query("DELETE FROM ".DT_PRE."category_value WHERE moduleid=$this->moduleid AND itemid=$itemid");
+ if($r['username'] && $MOD['credit_del']) {
+ credit_add($r['username'], -$MOD['credit_del']);
+ credit_record($r['username'], -$MOD['credit_del'], 'system', lang('my->credit_record_del', array($MOD['name'])), 'ID:'.$this->itemid);
+ }
+ history($this->moduleid, $itemid, 'del');
+ }
+ }
+ }
+
+ function check($itemid) {
+ global $_username, $MOD;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->check($v); }
+ } else {
+ $this->itemid = $itemid;
+ $item = $this->get_one();
+ if($MOD['credit_add'] && $item['username'] && $item['hits'] < 1) {
+ credit_add($item['username'], $MOD['credit_add']);
+ credit_record($item['username'], $MOD['credit_add'], 'system', lang('my->credit_record_add', array($MOD['name'])), 'ID:'.$this->itemid);
+ }
+ $editdate = timetodate(DT_TIME, 3);
+ DB::query("UPDATE {$this->table} SET status=3,editor='$_username',edittime=".DT_TIME." WHERE itemid=$itemid");
+ history($this->moduleid, $itemid, 'del');
+ $this->tohtml($itemid);
+ return true;
+ }
+ }
+
+ function reject($itemid) {
+ global $_username;
+ if(is_array($itemid)) {
+ foreach($itemid as $v) { $this->reject($v); }
+ } else {
+ DB::query("UPDATE {$this->table} SET status=1,editor='$_username' WHERE itemid=$itemid");
+ return true;
+ }
+ }
+
+ function clear($condition = 'status=0') {
+ $result = DB::query("SELECT itemid FROM {$this->table} WHERE $condition");
+ while($r = DB::fetch_array($result)) {
+ $this->delete($r['itemid']);
+ }
+ }
+
+ function level($itemid, $level) {
+ $itemids = is_array($itemid) ? implode(',', $itemid) : $itemid;
+ DB::query("UPDATE {$this->table} SET level=$level WHERE itemid IN ($itemids)");
+ }
+
+ function is_mobile($url) {
+ if(file_ext($url) == 'mp4') return true;
+ return preg_match("/player.youku.com|v.qq.com|m.qiyi.com|youtube.com|huya.com|douyucdn.cn/i", $url);
+ }
+
+ function _($e) {
+ $this->errmsg = $e;
+ return false;
+ }
+}
+?>
\ No newline at end of file
diff --git a/skin/default/brand.css b/skin/default/brand.css
new file mode 100644
index 0000000..cefcaa0
--- /dev/null
+++ b/skin/default/brand.css
@@ -0,0 +1,20 @@
+/*
+ [DESTOON] Copyright (c) 2008-2021 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+
+.brand-list1 div {width:200px;float:left;text-align:center;}
+.brand-list1 img {-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;}
+.brand-list1 img:hover {-webkit-transform:scale(1.02);-moz-transform:scale(1.02);-ms-transform:scale(1.02);-o-transform:scale(1.02);transform:scale(1.02);}
+
+.brand-list2 {width:880px;overflow:hidden;padding-top:6px;}
+.brand-list2:after {content:"";display:block;clear:both;}
+.brand-list2 li {width:130px;height:48px;line-height:48px;padding:0 10px;margin:0 0 20px 20px;border:#EEEEEE 1px solid;float:left;text-align:center;font-size:16px;overflow:hidden;border-radius:12px;}
+.brand-list2 li:hover {border:#FF6600 1px solid;background:#F5F5F5;}
+
+.brand_title {padding:10px 10px 0 10px;}
+.brand_info {margin:0 10px 0 10px;padding:5px 10px 15px 15px;line-height:22px;}
+.brand_info li {line-height:32px;height:32px;font-size:14px;}
+.brand_logo {border:#EEEEEE 1px solid;padding:6px;margin:10px 0;}
+.brand_video {text-align:center;padding:16px 0;}
+.brand_pdt {border-top:#EEEEEE 1px dotted;height:10px;font-size:1px;}
\ No newline at end of file
diff --git a/skin/default/catalog.css b/skin/default/catalog.css
new file mode 100644
index 0000000..964c104
--- /dev/null
+++ b/skin/default/catalog.css
@@ -0,0 +1,25 @@
+/*
+ [DESTOON] Copyright (c) 2008-2021 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+.catalog_menu {height:24px;overflow:hidden;background:#FFFBE1 url('image/catalog.gif') no-repeat;border-bottom:#FF821F 1px solid;}
+
+.catalog {border:#FF821F 1px solid;}
+.catalog li {float:left;padding:0 10px 0 10px;white-space:nowrap;background:url('image/catalog_li.gif') no-repeat right center;}
+.catalog p {font-size:13px;margin:3px 3px 3px 8px;height:20px;overflow:hidden;}
+.catalog strong {color:#004499;}
+
+.catalog_letter {height:32px;overflow:hidden;font-weight:bold;font-size:13px;cursor:pointer;}
+.catalog_letter ul {margin:1px 0 0 115px;}
+.catalog_letter_li {float:left;padding:3px 7px 6px 6px;color:#FF6600;}
+.catalog_letter_on {float:left;padding:3px 7px 6px 6px;color:#FFFFFF;background:#FF6600;}
+.catalog_index {width:648px;overflow:hidden;margin:-1px 0 0 0;line-height:24px;font-size:13px;border:#BCBCBC 1px solid;background:#FAFAFA;position:absolute;z-index:100;}
+.catalog_index table {margin:10px 0 5px 15px;}
+.catalog_index div {height:7px;line-height:7px;font-size:1px;cursor:pointer;background:#DADADA url('image/catalog_close.gif') no-repeat center 2px;}
+
+.catalog_tds {line-height:20px;padding:6px 10px 6px 10px;color:#666666;}
+.catalog_tdl {width:26px;padding:10px 0 10px 0;border:#FFEDC1 1px solid;background:#FFFFE0;font-size:14px;font-weight:bold;color:#000000;text-align:center;}
+.catalog_tdr {}
+.catalog_on_1 {border-bottom:#FFD39A 1px dotted;padding:0 0 5px 0;}
+.catalog_on_2 {background:#FCFCE3;border-bottom:#FFD39A 1px dotted;padding:0 0 5px 0;}/*border:#FFD39A 2px solid;*/
+.catalog_on_2 .catalog_tdl {border:#FFF2CA 1px solid;background:#FFF2CA;color:#FF7300;}
\ No newline at end of file
diff --git a/skin/default/club.css b/skin/default/club.css
new file mode 100644
index 0000000..4bcf67d
--- /dev/null
+++ b/skin/default/club.css
@@ -0,0 +1,72 @@
+/*
+ [DESTOON] Copyright (c) 2008-2021 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+.top-l {width:430px;float:left;margin-right:20px;}
+.top-r {width:430px;float:right;}
+.headline h2 {text-align:center;font-size:24px;margin:16px 20px 10px 0;height:48px;line-height:48px;overflow:hidden;}
+.subline {padding:0 16px;}
+.subline li {height:32px;line-height:32px;overflow:hidden;font-size:16px;}
+.subline .f_r {font-size:12px;color:#666666;padding-left:16px;font-style:normal;float:right;}
+
+.group-cat {overflow:hidden;padding-top:6px;}
+.group-cat div {width:146px;float:left;text-align:center;}
+.group-cat img {border:#EEEEEE 1px solid;border-radius:50%;padding:2px;}
+.group-cat img:hover {border:#FF6600 1px solid;}
+.group-cat ul {padding:10px 0 20px 0;}
+.group-cat li {height:24px;line-height:24px;font-size:16px;overflow:hidden;}
+.group-cat span {color:#666666;font-size:12px;}
+
+.club-stats {height:64px;margin:20px 0;}
+.club-stats li {width:110px;float:left;font-size:16px;height:64px;line-height:32px;text-align:center;}
+.club-stats div {height:64px;border-left:#EEEEEE 1px solid;border-right:#EEEEEE 1px solid;}
+.club-stats i {font-style:normal;display:block;font-size:14px;}
+
+.club_my {background:#2389FA;}
+.club_my td {height:32px;line-height:32px;text-align:center;font-size:13px;border-right:#EEEEEE 1px solid;}
+.club_my a:link,.club_my a:visited,.club_my a:active {display:block;width:100%;height:100%;color:#FFFFFF;text-decoration:none;}
+.club_my a:hover {background:#1873DE;}
+
+.group_list p {color:#666666;margin:0;line-height:32px;}
+.group_info {border:#EEEEEE 1px solid;font-size:14px;}
+.group_title {padding:16px;}
+.group_title span {padding-top:8px;}
+.group_title strong {font-size:24px;}
+.group_title img {width:30px;border-radius:50%;margin:0 10px 0 0;float:left;}
+.group_introduce {border-top:#EEEEEE 1px solid;padding:10px 16px;line-height:24px;}
+
+.group_type {padding:16px;height:32px;font-size:14px;}
+a.group_type_1:link,a.group_type_1:visited,a.group_type_1:active,a.group_type_1:hover {float:left;display:block;line-height:32px;margin-right:20px;border-bottom:#007AFF 2px solid;color:#007AFF;}
+a.group_type_2:link,a.group_type_2:visited,a.group_type_2:active {float:left;display:block;line-height:32px;margin-right:20px;}
+a.group_type_2:hover {border-bottom:#007AFF 2px solid;color:#007AFF;}
+
+a.group_post:link,a.group_post:visited,a.group_post:active {float:left;display:block;line-height:24px;padding:0 16px;border-radius:4px;margin-left:16px;background:#007AFF;color:#FFFFFF;letter-spacing:2px;font-size:12px;}
+a.group_post:hover {background:#0569D5;}
+
+
+.club_list div {height:32px;line-height:32px;overflow:hidden;padding:0 30px 0 0;font-size:16px;}
+.club_list em {color:#225588;font-style:normal;font-family:Arial;}
+.club_list p {color:#999999;margin:4px 0 0 0;font-family:Arial;}
+
+.club_quote {background:#F5F5F5 url('image/club_quote_a.gif') no-repeat 10px 10px;margin:10px 0 10px 0;font-size:12px;padding:10px;}
+.club_quote div {display:inline-block;padding:5px 40px 5px 40px;background:url('image/club_quote_b.gif') no-repeat right bottom;line-height:20px;}
+.club_quote p {margin:0;text-indent:0;}
+.club_quote a:link,.club_quote a:visited,.club_quote a:active {color:#555555;text-decoration:none;}
+.club_quote a:hover {color:#FF6600;}
+.club_break {display:none;}
+
+.club_show {}
+.club_show table {width:100%;border-collapse:collapse;border-spacing:0;}
+.club_show_l {width:200px;border-right:#F5F5F5 1px solid;}
+.club_show_l li {padding:16px 0 0 0;text-align:center;}
+.club_info {padding:10px;border-bottom:#F5F5F5 1px solid;color:#999999;}
+.club_avatar {width:96px;height:96px;}
+
+.club_show_btn {position:absolute;margin:2px 0 0 1028px;}
+.club-btn-chat,.club-btn-post,.club-btn-reply {display:inline-block;line-height:32px;padding:0 16px 0 32px;color:#FFFFFF;letter-spacing:2px;font-size:14px;font-weight:normal;}
+.club-btn-chat {background:#F06C00 url('image/ico-club-chat.png') no-repeat 10px center;}
+.club-btn-chat:hover {background:#E75000 url('image/ico-club-chat.png') no-repeat 10px center;}
+.club-btn-post {background:#0075A8 url('image/ico-club-post.png') no-repeat 10px center;}
+.club-btn-post:hover {background:#00679A url('image/ico-club-post.png') no-repeat 10px center;}
+.club-btn-reply {background:#F06C00 url('image/ico-club-reply.png') no-repeat 10px center;}
+.club-btn-reply:hover {background:#E75000 url('image/ico-club-reply.png') no-repeat 10px center;}
\ No newline at end of file
diff --git a/skin/default/down.css b/skin/default/down.css
new file mode 100644
index 0000000..3186d68
--- /dev/null
+++ b/skin/default/down.css
@@ -0,0 +1,17 @@
+/*
+ [DESTOON] Copyright (c) 2008-2021 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+.downinfo {padding:10px 10px 10px 10px;margin:0 10px 0 10px;border-top:#EEEEEE 1px solid;}
+.downinfo li{line-height:26px;}
+.downlist {color:#666666;padding:10px;}
+.downlist li {height:24px;line-height:24px;}
+
+.down-url {padding:10px 32px;}
+.down-url li {height:32px;line-height:32px;background:url('image/ico-download.gif') no-repeat 0 8px;padding-left:22px;font-size:16px;}
+.down-list {padding:0 10px;}
+.down-list .dl-icon {width:32px;height:32px;text-align:center;}
+.down-list .dl-title {font-size:14px;}
+.down-list .dl-title div {height:32px;line-height:32px;overflow:hidden;}
+.down-list .dl-size {width:120px;}
+.down-list .dl-date {width:80px;text-align:right;color:#666666;}
diff --git a/skin/default/exhibit.css b/skin/default/exhibit.css
new file mode 100644
index 0000000..8853b6a
--- /dev/null
+++ b/skin/default/exhibit.css
@@ -0,0 +1,19 @@
+/*
+ [DESTOON] Copyright (c) 2008-2021 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+.exh-list {padding:10px 24px;}
+.exh-list li {height:32px;line-height:32px;}
+.exh-list em {font-style:normal;float:right;color:#666666;}
+.exh-list i {font-style:normal;padding-right:48px;}
+
+.exh-slide {width:400px;height:300px;float:left;}
+.exh-rec {width:440px;height:250px;overflow:hidden;float:left;padding:20px;}
+.exh-rec ul {margin-bottom:6px;}
+.exh-rec li {color:#666666;height:26px;line-height:26px;overflow:hidden;}
+
+.exh_month {width:145px;height:150px;padding:10px 0 0 15px;overflow:hidden;}
+.exh_month div {float:left;width:36px;height:25px;line-height:25px;border:#EEEEEE 1px solid;background:url('image/pos.gif') repeat-x;margin:0 10px 10px 0;text-align:center;}
+.ctb {background:#EEEEEE;}
+.ltd {width:100px;text-align:center;background:#F3F3F3;font-weight:bold;color:#333333;}
+.rtd {background:#FFFFFF;}
\ No newline at end of file
diff --git a/skin/default/homepage.css b/skin/default/homepage.css
new file mode 100644
index 0000000..c96a783
--- /dev/null
+++ b/skin/default/homepage.css
@@ -0,0 +1,22 @@
+/*
+ [DESTOON] Copyright (c) 2008-2021 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+.tool {padding:24px 0;text-align:center;border-top:#F5F5F5 1px solid;}
+.tool i {font-style:normal;font-size:14px;color:#555555;display:inline-block;height:24px;line-height:24px;padding:0 28px;cursor:pointer;}
+.tool b {font-weight:normal;font-size:12px;}
+.tool .like {background:url('image/tool-like.png') no-repeat 0 center;}
+.tool .like:hover {background:url('image/tool-like-on.png') no-repeat 0 center;color:#FF6600;}
+.tool .hate {background:url('image/tool-hate.png') no-repeat 0 center;}
+.tool .hate:hover {background:url('image/tool-hate-on.png') no-repeat 0 center;color:#FF6600;}
+.tool .report {background:url('image/tool-report.png') no-repeat 0 center;}
+.tool .report:hover {background:url('image/tool-report-on.png') no-repeat 0 center;color:#FF6600;}
+.tool .favorite {background:url('image/tool-favorite.png') no-repeat 0 center;}
+.tool .favorite:hover {background:url('image/tool-favorite-on.png') no-repeat 0 center;color:#FF6600;}
+.tool .comment {background:url('image/tool-comment.png') no-repeat 0 center;}
+.tool .comment:hover {background:url('image/tool-comment-on.png') no-repeat 0 center;color:#FF6600;}
+.tool .award {background:url('image/tool-award.png') no-repeat 0 center;}
+.tool .award:hover {background:url('image/tool-award-on.png') no-repeat 0 center;color:#FF6600;}
+.tool .share {background:url('image/tool-share.png') no-repeat 0 center;}
+.tool .share:hover {background:url('image/tool-share-on.png') no-repeat 0 center;color:#FF6600;}
+.ui-toast {height:48px;line-height:48px;overflow:hidden;display:inline-block;padding:0 16px;background:#000000;opacity:0.8;filter:alpha(opacity=80);color:#FFFFFF;border-radius:6px;position:fixed;z-index:99;top:40%;left:48%;font-size:16px;}
\ No newline at end of file
diff --git a/skin/default/ie6.css b/skin/default/ie6.css
new file mode 100644
index 0000000..c137710
--- /dev/null
+++ b/skin/default/ie6.css
@@ -0,0 +1,6 @@
+/*
+ [DESTOON] Copyright (c) 2008-2021 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+body {_background-image:url('image/spacer.gif');_background-attachment:fixed;}
+#head {_position:absolute;_top:expression(documentElement.scrollTop);}
\ No newline at end of file
diff --git a/skin/default/image/ab-hide.png b/skin/default/image/ab-hide.png
new file mode 100644
index 0000000..7193715
Binary files /dev/null and b/skin/default/image/ab-hide.png differ
diff --git a/skin/default/image/ab-next-0.png b/skin/default/image/ab-next-0.png
new file mode 100644
index 0000000..2e0cfd2
Binary files /dev/null and b/skin/default/image/ab-next-0.png differ
diff --git a/skin/default/image/ab-play-on.png b/skin/default/image/ab-play-on.png
new file mode 100644
index 0000000..fd609a7
Binary files /dev/null and b/skin/default/image/ab-play-on.png differ
diff --git a/skin/default/image/ab-play.png b/skin/default/image/ab-play.png
new file mode 100644
index 0000000..ffecf9a
Binary files /dev/null and b/skin/default/image/ab-play.png differ
diff --git a/skin/default/image/ab-prev-0.png b/skin/default/image/ab-prev-0.png
new file mode 100644
index 0000000..8ebd02e
Binary files /dev/null and b/skin/default/image/ab-prev-0.png differ
diff --git a/skin/default/image/ab-prev-1.png b/skin/default/image/ab-prev-1.png
new file mode 100644
index 0000000..17a261b
Binary files /dev/null and b/skin/default/image/ab-prev-1.png differ
diff --git a/skin/default/image/ab-zoom-bg.gif b/skin/default/image/ab-zoom-bg.gif
new file mode 100644
index 0000000..8f153c0
Binary files /dev/null and b/skin/default/image/ab-zoom-bg.gif differ
diff --git a/skin/default/image/ab-zoom.png b/skin/default/image/ab-zoom.png
new file mode 100644
index 0000000..d70dd60
Binary files /dev/null and b/skin/default/image/ab-zoom.png differ
diff --git a/skin/default/image/adword_bg.gif b/skin/default/image/adword_bg.gif
new file mode 100644
index 0000000..8d02329
Binary files /dev/null and b/skin/default/image/adword_bg.gif differ
diff --git a/skin/default/image/arrow_l.gif b/skin/default/image/arrow_l.gif
new file mode 100644
index 0000000..eb5ef9d
Binary files /dev/null and b/skin/default/image/arrow_l.gif differ
diff --git a/skin/default/image/arrow_r.gif b/skin/default/image/arrow_r.gif
new file mode 100644
index 0000000..13fdd9e
Binary files /dev/null and b/skin/default/image/arrow_r.gif differ
diff --git a/skin/default/image/arrow_up.gif b/skin/default/image/arrow_up.gif
new file mode 100644
index 0000000..3c9e01c
Binary files /dev/null and b/skin/default/image/arrow_up.gif differ
diff --git a/skin/default/image/back2top.png b/skin/default/image/back2top.png
new file mode 100644
index 0000000..1a6a452
Binary files /dev/null and b/skin/default/image/back2top.png differ
diff --git a/skin/default/image/bg-line.png b/skin/default/image/bg-line.png
new file mode 100644
index 0000000..34988e5
Binary files /dev/null and b/skin/default/image/bg-line.png differ
diff --git a/skin/default/image/btn_2.gif b/skin/default/image/btn_2.gif
new file mode 100644
index 0000000..8b204ee
Binary files /dev/null and b/skin/default/image/btn_2.gif differ
diff --git a/skin/default/image/btn_poll_1.gif b/skin/default/image/btn_poll_1.gif
new file mode 100644
index 0000000..79dd624
Binary files /dev/null and b/skin/default/image/btn_poll_1.gif differ
diff --git a/skin/default/image/btn_poll_2.gif b/skin/default/image/btn_poll_2.gif
new file mode 100644
index 0000000..74a706f
Binary files /dev/null and b/skin/default/image/btn_poll_2.gif differ
diff --git a/skin/default/image/buy.gif b/skin/default/image/buy.gif
new file mode 100644
index 0000000..bbefdf8
Binary files /dev/null and b/skin/default/image/buy.gif differ
diff --git a/skin/default/image/cart_info.gif b/skin/default/image/cart_info.gif
new file mode 100644
index 0000000..50e64b3
Binary files /dev/null and b/skin/default/image/cart_info.gif differ
diff --git a/skin/default/image/cate-0.png b/skin/default/image/cate-0.png
new file mode 100644
index 0000000..19407b5
Binary files /dev/null and b/skin/default/image/cate-0.png differ
diff --git a/skin/default/image/cate-1-on.png b/skin/default/image/cate-1-on.png
new file mode 100644
index 0000000..bca37ad
Binary files /dev/null and b/skin/default/image/cate-1-on.png differ
diff --git a/skin/default/image/cate-1.png b/skin/default/image/cate-1.png
new file mode 100644
index 0000000..4a271b4
Binary files /dev/null and b/skin/default/image/cate-1.png differ
diff --git a/skin/default/image/cate-10-on.png b/skin/default/image/cate-10-on.png
new file mode 100644
index 0000000..f5bd061
Binary files /dev/null and b/skin/default/image/cate-10-on.png differ
diff --git a/skin/default/image/cate-11.png b/skin/default/image/cate-11.png
new file mode 100644
index 0000000..dc26f64
Binary files /dev/null and b/skin/default/image/cate-11.png differ
diff --git a/skin/default/image/cate-12-on.png b/skin/default/image/cate-12-on.png
new file mode 100644
index 0000000..3252a56
Binary files /dev/null and b/skin/default/image/cate-12-on.png differ
diff --git a/skin/default/image/cate-12.png b/skin/default/image/cate-12.png
new file mode 100644
index 0000000..0f7d866
Binary files /dev/null and b/skin/default/image/cate-12.png differ
diff --git a/skin/default/image/cate-13-on.png b/skin/default/image/cate-13-on.png
new file mode 100644
index 0000000..034b67b
Binary files /dev/null and b/skin/default/image/cate-13-on.png differ
diff --git a/skin/default/image/cate-14.png b/skin/default/image/cate-14.png
new file mode 100644
index 0000000..b767e5a
Binary files /dev/null and b/skin/default/image/cate-14.png differ
diff --git a/skin/default/image/cate-15-on.png b/skin/default/image/cate-15-on.png
new file mode 100644
index 0000000..030329d
Binary files /dev/null and b/skin/default/image/cate-15-on.png differ
diff --git a/skin/default/image/cate-3-on.png b/skin/default/image/cate-3-on.png
new file mode 100644
index 0000000..9658184
Binary files /dev/null and b/skin/default/image/cate-3-on.png differ
diff --git a/skin/default/image/cate-3.png b/skin/default/image/cate-3.png
new file mode 100644
index 0000000..07bf44f
Binary files /dev/null and b/skin/default/image/cate-3.png differ
diff --git a/skin/default/image/cate-4-on.png b/skin/default/image/cate-4-on.png
new file mode 100644
index 0000000..e8f0724
Binary files /dev/null and b/skin/default/image/cate-4-on.png differ
diff --git a/skin/default/image/cate-4.png b/skin/default/image/cate-4.png
new file mode 100644
index 0000000..e22932e
Binary files /dev/null and b/skin/default/image/cate-4.png differ
diff --git a/skin/default/image/cate-5-on.png b/skin/default/image/cate-5-on.png
new file mode 100644
index 0000000..9bbd440
Binary files /dev/null and b/skin/default/image/cate-5-on.png differ
diff --git a/skin/default/image/cate-6-on.png b/skin/default/image/cate-6-on.png
new file mode 100644
index 0000000..8352973
Binary files /dev/null and b/skin/default/image/cate-6-on.png differ
diff --git a/skin/default/image/cate-6.png b/skin/default/image/cate-6.png
new file mode 100644
index 0000000..cbbff04
Binary files /dev/null and b/skin/default/image/cate-6.png differ
diff --git a/skin/default/image/cate-7.png b/skin/default/image/cate-7.png
new file mode 100644
index 0000000..9c74b2f
Binary files /dev/null and b/skin/default/image/cate-7.png differ
diff --git a/skin/default/image/cate-8-on.png b/skin/default/image/cate-8-on.png
new file mode 100644
index 0000000..c655dc4
Binary files /dev/null and b/skin/default/image/cate-8-on.png differ
diff --git a/skin/default/image/cate-8.png b/skin/default/image/cate-8.png
new file mode 100644
index 0000000..d456fb4
Binary files /dev/null and b/skin/default/image/cate-8.png differ
diff --git a/skin/default/image/cate-9-on.png b/skin/default/image/cate-9-on.png
new file mode 100644
index 0000000..72f8dfc
Binary files /dev/null and b/skin/default/image/cate-9-on.png differ
diff --git a/skin/default/image/cate-9.png b/skin/default/image/cate-9.png
new file mode 100644
index 0000000..7b86bd9
Binary files /dev/null and b/skin/default/image/cate-9.png differ
diff --git a/skin/default/image/club_level_1.gif b/skin/default/image/club_level_1.gif
new file mode 100644
index 0000000..13f245b
Binary files /dev/null and b/skin/default/image/club_level_1.gif differ
diff --git a/skin/default/image/club_level_2.gif b/skin/default/image/club_level_2.gif
new file mode 100644
index 0000000..1653c79
Binary files /dev/null and b/skin/default/image/club_level_2.gif differ
diff --git a/skin/default/image/club_ontop_1.gif b/skin/default/image/club_ontop_1.gif
new file mode 100644
index 0000000..a6971fe
Binary files /dev/null and b/skin/default/image/club_ontop_1.gif differ
diff --git a/skin/default/image/club_ontop_2.gif b/skin/default/image/club_ontop_2.gif
new file mode 100644
index 0000000..c6eff1c
Binary files /dev/null and b/skin/default/image/club_ontop_2.gif differ
diff --git a/skin/default/image/club_quote_a.gif b/skin/default/image/club_quote_a.gif
new file mode 100644
index 0000000..0d1d8f1
Binary files /dev/null and b/skin/default/image/club_quote_a.gif differ
diff --git a/skin/default/image/fsearch_bg.gif b/skin/default/image/fsearch_bg.gif
new file mode 100644
index 0000000..5cc6f61
Binary files /dev/null and b/skin/default/image/fsearch_bg.gif differ
diff --git a/skin/default/image/grid-ad.png b/skin/default/image/grid-ad.png
new file mode 100644
index 0000000..a40d87e
Binary files /dev/null and b/skin/default/image/grid-ad.png differ
diff --git a/skin/default/image/grid-coupon.png b/skin/default/image/grid-coupon.png
new file mode 100644
index 0000000..8a489a2
Binary files /dev/null and b/skin/default/image/grid-coupon.png differ
diff --git a/skin/default/image/grid-favorite.png b/skin/default/image/grid-favorite.png
new file mode 100644
index 0000000..b5e2b7f
Binary files /dev/null and b/skin/default/image/grid-favorite.png differ
diff --git a/skin/default/image/grid-map.png b/skin/default/image/grid-map.png
new file mode 100644
index 0000000..6c08128
Binary files /dev/null and b/skin/default/image/grid-map.png differ
diff --git a/skin/default/image/grid-mobile.png b/skin/default/image/grid-mobile.png
new file mode 100644
index 0000000..675b06b
Binary files /dev/null and b/skin/default/image/grid-mobile.png differ
diff --git a/skin/default/image/grid-order.png b/skin/default/image/grid-order.png
new file mode 100644
index 0000000..3ca7eea
Binary files /dev/null and b/skin/default/image/grid-order.png differ
diff --git a/skin/default/image/grid-spread.png b/skin/default/image/grid-spread.png
new file mode 100644
index 0000000..af5dc69
Binary files /dev/null and b/skin/default/image/grid-spread.png differ
diff --git a/skin/default/image/grid-view.png b/skin/default/image/grid-view.png
new file mode 100644
index 0000000..633fa5f
Binary files /dev/null and b/skin/default/image/grid-view.png differ
diff --git a/skin/default/image/grid-vip.png b/skin/default/image/grid-vip.png
new file mode 100644
index 0000000..cd9b5e9
Binary files /dev/null and b/skin/default/image/grid-vip.png differ
diff --git a/skin/default/image/group_timer.gif b/skin/default/image/group_timer.gif
new file mode 100644
index 0000000..34a106e
Binary files /dev/null and b/skin/default/image/group_timer.gif differ
diff --git a/skin/default/image/homepage.gif b/skin/default/image/homepage.gif
new file mode 100644
index 0000000..98b0e8f
Binary files /dev/null and b/skin/default/image/homepage.gif differ
diff --git a/skin/default/image/ico-area.png b/skin/default/image/ico-area.png
new file mode 100644
index 0000000..6b3a177
Binary files /dev/null and b/skin/default/image/ico-area.png differ
diff --git a/skin/default/image/ico-cart.png b/skin/default/image/ico-cart.png
new file mode 100644
index 0000000..bf5b701
Binary files /dev/null and b/skin/default/image/ico-cart.png differ
diff --git a/skin/default/image/ico-club-post.png b/skin/default/image/ico-club-post.png
new file mode 100644
index 0000000..1e56725
Binary files /dev/null and b/skin/default/image/ico-club-post.png differ
diff --git a/skin/default/image/ico-delete.png b/skin/default/image/ico-delete.png
new file mode 100644
index 0000000..d1b00d6
Binary files /dev/null and b/skin/default/image/ico-delete.png differ
diff --git a/skin/default/image/ico-down.png b/skin/default/image/ico-down.png
new file mode 100644
index 0000000..9a71971
Binary files /dev/null and b/skin/default/image/ico-down.png differ
diff --git a/skin/default/image/ico-download.gif b/skin/default/image/ico-download.gif
new file mode 100644
index 0000000..6e6b9f3
Binary files /dev/null and b/skin/default/image/ico-download.gif differ
diff --git a/skin/default/image/ico-hate-on.png b/skin/default/image/ico-hate-on.png
new file mode 100644
index 0000000..8116596
Binary files /dev/null and b/skin/default/image/ico-hate-on.png differ
diff --git a/skin/default/image/ico-hate.png b/skin/default/image/ico-hate.png
new file mode 100644
index 0000000..3e4d677
Binary files /dev/null and b/skin/default/image/ico-hate.png differ
diff --git a/skin/default/image/ico-info.png b/skin/default/image/ico-info.png
new file mode 100644
index 0000000..9ec10d5
Binary files /dev/null and b/skin/default/image/ico-info.png differ
diff --git a/skin/default/image/ico-know-post.png b/skin/default/image/ico-know-post.png
new file mode 100644
index 0000000..1e56725
Binary files /dev/null and b/skin/default/image/ico-know-post.png differ
diff --git a/skin/default/image/ico-like-on.png b/skin/default/image/ico-like-on.png
new file mode 100644
index 0000000..a43fee2
Binary files /dev/null and b/skin/default/image/ico-like-on.png differ
diff --git a/skin/default/image/ico-mobile.png b/skin/default/image/ico-mobile.png
new file mode 100644
index 0000000..ed29510
Binary files /dev/null and b/skin/default/image/ico-mobile.png differ
diff --git a/skin/default/image/ico-nav.png b/skin/default/image/ico-nav.png
new file mode 100644
index 0000000..677edfb
Binary files /dev/null and b/skin/default/image/ico-nav.png differ
diff --git a/skin/default/image/ico-quote-on.png b/skin/default/image/ico-quote-on.png
new file mode 100644
index 0000000..f3a4942
Binary files /dev/null and b/skin/default/image/ico-quote-on.png differ
diff --git a/skin/default/image/ico-report-on.png b/skin/default/image/ico-report-on.png
new file mode 100644
index 0000000..2644604
Binary files /dev/null and b/skin/default/image/ico-report-on.png differ
diff --git a/skin/default/image/ico-report.png b/skin/default/image/ico-report.png
new file mode 100644
index 0000000..6bc2c05
Binary files /dev/null and b/skin/default/image/ico-report.png differ
diff --git a/skin/default/image/ico-sort-on.png b/skin/default/image/ico-sort-on.png
new file mode 100644
index 0000000..b133d7c
Binary files /dev/null and b/skin/default/image/ico-sort-on.png differ
diff --git a/skin/default/image/ico-sort.png b/skin/default/image/ico-sort.png
new file mode 100644
index 0000000..54b7ab1
Binary files /dev/null and b/skin/default/image/ico-sort.png differ
diff --git a/skin/default/image/ico-time.png b/skin/default/image/ico-time.png
new file mode 100644
index 0000000..1d0e8da
Binary files /dev/null and b/skin/default/image/ico-time.png differ
diff --git a/skin/default/image/ico-user.png b/skin/default/image/ico-user.png
new file mode 100644
index 0000000..5678f76
Binary files /dev/null and b/skin/default/image/ico-user.png differ
diff --git a/skin/default/image/ico-zoomout.png b/skin/default/image/ico-zoomout.png
new file mode 100644
index 0000000..ddb356b
Binary files /dev/null and b/skin/default/image/ico-zoomout.png differ
diff --git a/skin/default/image/ico_lock.gif b/skin/default/image/ico_lock.gif
new file mode 100644
index 0000000..b657a12
Binary files /dev/null and b/skin/default/image/ico_lock.gif differ
diff --git a/skin/default/image/ico_search.gif b/skin/default/image/ico_search.gif
new file mode 100644
index 0000000..79f6720
Binary files /dev/null and b/skin/default/image/ico_search.gif differ
diff --git a/skin/default/image/ico_tips.gif b/skin/default/image/ico_tips.gif
new file mode 100644
index 0000000..e79bf78
Binary files /dev/null and b/skin/default/image/ico_tips.gif differ
diff --git a/skin/default/image/icon-search16.png b/skin/default/image/icon-search16.png
new file mode 100644
index 0000000..7e68b82
Binary files /dev/null and b/skin/default/image/icon-search16.png differ
diff --git a/skin/default/image/input-mail.png b/skin/default/image/input-mail.png
new file mode 100644
index 0000000..0ade442
Binary files /dev/null and b/skin/default/image/input-mail.png differ
diff --git a/skin/default/image/input-mobile.png b/skin/default/image/input-mobile.png
new file mode 100644
index 0000000..7172e67
Binary files /dev/null and b/skin/default/image/input-mobile.png differ
diff --git a/skin/default/image/input-password.png b/skin/default/image/input-password.png
new file mode 100644
index 0000000..b7302fe
Binary files /dev/null and b/skin/default/image/input-password.png differ
diff --git a/skin/default/image/inquiry.gif b/skin/default/image/inquiry.gif
new file mode 100644
index 0000000..f003f52
Binary files /dev/null and b/skin/default/image/inquiry.gif differ
diff --git a/skin/default/image/jquery.slide.pload.gif b/skin/default/image/jquery.slide.pload.gif
new file mode 100644
index 0000000..db3a483
Binary files /dev/null and b/skin/default/image/jquery.slide.pload.gif differ
diff --git a/skin/default/image/jquery.slide.sc.png b/skin/default/image/jquery.slide.sc.png
new file mode 100644
index 0000000..d4c12d4
Binary files /dev/null and b/skin/default/image/jquery.slide.sc.png differ
diff --git a/skin/default/image/know_1.gif b/skin/default/image/know_1.gif
new file mode 100644
index 0000000..87e533a
Binary files /dev/null and b/skin/default/image/know_1.gif differ
diff --git a/skin/default/image/know_2.gif b/skin/default/image/know_2.gif
new file mode 100644
index 0000000..240d944
Binary files /dev/null and b/skin/default/image/know_2.gif differ
diff --git a/skin/default/image/know_3.gif b/skin/default/image/know_3.gif
new file mode 100644
index 0000000..94cb242
Binary files /dev/null and b/skin/default/image/know_3.gif differ
diff --git a/skin/default/image/lazy.gif b/skin/default/image/lazy.gif
new file mode 100644
index 0000000..c95709f
Binary files /dev/null and b/skin/default/image/lazy.gif differ
diff --git a/skin/default/image/li_dot.gif b/skin/default/image/li_dot.gif
new file mode 100644
index 0000000..a2c22d0
Binary files /dev/null and b/skin/default/image/li_dot.gif differ
diff --git a/skin/default/image/line.gif b/skin/default/image/line.gif
new file mode 100644
index 0000000..672f684
Binary files /dev/null and b/skin/default/image/line.gif differ
diff --git a/skin/default/image/list_img.gif b/skin/default/image/list_img.gif
new file mode 100644
index 0000000..d0eafea
Binary files /dev/null and b/skin/default/image/list_img.gif differ
diff --git a/skin/default/image/list_txt.gif b/skin/default/image/list_txt.gif
new file mode 100644
index 0000000..a229f3a
Binary files /dev/null and b/skin/default/image/list_txt.gif differ
diff --git a/skin/default/image/load.gif b/skin/default/image/load.gif
new file mode 100644
index 0000000..6a56815
Binary files /dev/null and b/skin/default/image/load.gif differ
diff --git a/skin/default/image/loading...gif b/skin/default/image/loading...gif
new file mode 100644
index 0000000..7bb834d
Binary files /dev/null and b/skin/default/image/loading...gif differ
diff --git a/skin/default/image/message-arrow.png b/skin/default/image/message-arrow.png
new file mode 100644
index 0000000..a44e7d2
Binary files /dev/null and b/skin/default/image/message-arrow.png differ
diff --git a/skin/default/image/mobile.gif b/skin/default/image/mobile.gif
new file mode 100644
index 0000000..34155ad
Binary files /dev/null and b/skin/default/image/mobile.gif differ
diff --git a/skin/default/image/msg.gif b/skin/default/image/msg.gif
new file mode 100644
index 0000000..10c3ef9
Binary files /dev/null and b/skin/default/image/msg.gif differ
diff --git a/skin/default/image/nav-bg.png b/skin/default/image/nav-bg.png
new file mode 100644
index 0000000..f7f0e5a
Binary files /dev/null and b/skin/default/image/nav-bg.png differ
diff --git a/skin/default/image/next.cur b/skin/default/image/next.cur
new file mode 100644
index 0000000..80ba41e
Binary files /dev/null and b/skin/default/image/next.cur differ
diff --git a/skin/default/image/no.gif b/skin/default/image/no.gif
new file mode 100644
index 0000000..d17179c
Binary files /dev/null and b/skin/default/image/no.gif differ
diff --git a/skin/default/image/nohead.gif b/skin/default/image/nohead.gif
new file mode 100644
index 0000000..974578a
Binary files /dev/null and b/skin/default/image/nohead.gif differ
diff --git a/skin/default/image/nopic.gif b/skin/default/image/nopic.gif
new file mode 100644
index 0000000..add389a
Binary files /dev/null and b/skin/default/image/nopic.gif differ
diff --git a/skin/default/image/nopic.middle.png b/skin/default/image/nopic.middle.png
new file mode 100644
index 0000000..5d131d3
Binary files /dev/null and b/skin/default/image/nopic.middle.png differ
diff --git a/skin/default/image/nopic.thumb.png b/skin/default/image/nopic.thumb.png
new file mode 100644
index 0000000..e0b1c44
Binary files /dev/null and b/skin/default/image/nopic.thumb.png differ
diff --git a/skin/default/image/nopic100.gif b/skin/default/image/nopic100.gif
new file mode 100644
index 0000000..33ceb26
Binary files /dev/null and b/skin/default/image/nopic100.gif differ
diff --git a/skin/default/image/nopic150.gif b/skin/default/image/nopic150.gif
new file mode 100644
index 0000000..4a133d4
Binary files /dev/null and b/skin/default/image/nopic150.gif differ
diff --git a/skin/default/image/nopic160.png b/skin/default/image/nopic160.png
new file mode 100644
index 0000000..6c8c0b2
Binary files /dev/null and b/skin/default/image/nopic160.png differ
diff --git a/skin/default/image/nopic200.gif b/skin/default/image/nopic200.gif
new file mode 100644
index 0000000..dd10d50
Binary files /dev/null and b/skin/default/image/nopic200.gif differ
diff --git a/skin/default/image/nopic240.gif b/skin/default/image/nopic240.gif
new file mode 100644
index 0000000..87ea4ca
Binary files /dev/null and b/skin/default/image/nopic240.gif differ
diff --git a/skin/default/image/nopic320.gif b/skin/default/image/nopic320.gif
new file mode 100644
index 0000000..ba53d7f
Binary files /dev/null and b/skin/default/image/nopic320.gif differ
diff --git a/skin/default/image/nopic50.gif b/skin/default/image/nopic50.gif
new file mode 100644
index 0000000..c43a26f
Binary files /dev/null and b/skin/default/image/nopic50.gif differ
diff --git a/skin/default/image/nopic50.png b/skin/default/image/nopic50.png
new file mode 100644
index 0000000..49b7968
Binary files /dev/null and b/skin/default/image/nopic50.png differ
diff --git a/skin/default/image/nopic60.gif b/skin/default/image/nopic60.gif
new file mode 100644
index 0000000..21313ac
Binary files /dev/null and b/skin/default/image/nopic60.gif differ
diff --git a/skin/default/image/pos.gif b/skin/default/image/pos.gif
new file mode 100644
index 0000000..1bf16ad
Binary files /dev/null and b/skin/default/image/pos.gif differ
diff --git a/skin/default/image/prev.cur b/skin/default/image/prev.cur
new file mode 100644
index 0000000..f508e9e
Binary files /dev/null and b/skin/default/image/prev.cur differ
diff --git a/skin/default/image/rank_list.gif b/skin/default/image/rank_list.gif
new file mode 100644
index 0000000..a6462e2
Binary files /dev/null and b/skin/default/image/rank_list.gif differ
diff --git a/skin/default/image/reg-step.png b/skin/default/image/reg-step.png
new file mode 100644
index 0000000..34b2fe1
Binary files /dev/null and b/skin/default/image/reg-step.png differ
diff --git a/skin/default/image/spacer.gif b/skin/default/image/spacer.gif
new file mode 100644
index 0000000..c95709f
Binary files /dev/null and b/skin/default/image/spacer.gif differ
diff --git a/skin/default/image/star0.png b/skin/default/image/star0.png
new file mode 100644
index 0000000..545abc6
Binary files /dev/null and b/skin/default/image/star0.png differ
diff --git a/skin/default/image/star1.png b/skin/default/image/star1.png
new file mode 100644
index 0000000..28f8ddd
Binary files /dev/null and b/skin/default/image/star1.png differ
diff --git a/skin/default/image/star3.png b/skin/default/image/star3.png
new file mode 100644
index 0000000..cf79429
Binary files /dev/null and b/skin/default/image/star3.png differ
diff --git a/skin/default/image/star4.png b/skin/default/image/star4.png
new file mode 100644
index 0000000..b5c5d06
Binary files /dev/null and b/skin/default/image/star4.png differ
diff --git a/skin/default/image/star5.png b/skin/default/image/star5.png
new file mode 100644
index 0000000..a044329
Binary files /dev/null and b/skin/default/image/star5.png differ
diff --git a/skin/default/image/tips_bg.gif b/skin/default/image/tips_bg.gif
new file mode 100644
index 0000000..bc237f8
Binary files /dev/null and b/skin/default/image/tips_bg.gif differ
diff --git a/skin/default/image/tool-comment.png b/skin/default/image/tool-comment.png
new file mode 100644
index 0000000..f0c4512
Binary files /dev/null and b/skin/default/image/tool-comment.png differ
diff --git a/skin/default/image/tool-favorite-on.png b/skin/default/image/tool-favorite-on.png
new file mode 100644
index 0000000..f5ec773
Binary files /dev/null and b/skin/default/image/tool-favorite-on.png differ
diff --git a/skin/default/image/tool-favorite.png b/skin/default/image/tool-favorite.png
new file mode 100644
index 0000000..0a88bb3
Binary files /dev/null and b/skin/default/image/tool-favorite.png differ
diff --git a/skin/default/image/tool-hate-on.png b/skin/default/image/tool-hate-on.png
new file mode 100644
index 0000000..f31a522
Binary files /dev/null and b/skin/default/image/tool-hate-on.png differ
diff --git a/skin/default/image/tool-hate.png b/skin/default/image/tool-hate.png
new file mode 100644
index 0000000..dfc5d7f
Binary files /dev/null and b/skin/default/image/tool-hate.png differ
diff --git a/skin/default/image/tool-like-on.png b/skin/default/image/tool-like-on.png
new file mode 100644
index 0000000..fe73a10
Binary files /dev/null and b/skin/default/image/tool-like-on.png differ
diff --git a/skin/default/image/tool-report-on.png b/skin/default/image/tool-report-on.png
new file mode 100644
index 0000000..1ccd170
Binary files /dev/null and b/skin/default/image/tool-report-on.png differ
diff --git a/skin/default/image/tool-report.png b/skin/default/image/tool-report.png
new file mode 100644
index 0000000..3c0c2f9
Binary files /dev/null and b/skin/default/image/tool-report.png differ
diff --git a/skin/default/image/tool-share-on.png b/skin/default/image/tool-share-on.png
new file mode 100644
index 0000000..458bbe3
Binary files /dev/null and b/skin/default/image/tool-share-on.png differ
diff --git a/skin/default/image/tool-share.png b/skin/default/image/tool-share.png
new file mode 100644
index 0000000..66de5f2
Binary files /dev/null and b/skin/default/image/tool-share.png differ
diff --git a/skin/default/image/user.png b/skin/default/image/user.png
new file mode 100644
index 0000000..17b7fbd
Binary files /dev/null and b/skin/default/image/user.png differ
diff --git a/skin/default/image/user_offline.png b/skin/default/image/user_offline.png
new file mode 100644
index 0000000..2f1d089
Binary files /dev/null and b/skin/default/image/user_offline.png differ
diff --git a/skin/default/image/user_online.png b/skin/default/image/user_online.png
new file mode 100644
index 0000000..94f8b1e
Binary files /dev/null and b/skin/default/image/user_online.png differ
diff --git a/skin/default/image/vip.gif b/skin/default/image/vip.gif
new file mode 100644
index 0000000..93b991d
Binary files /dev/null and b/skin/default/image/vip.gif differ
diff --git a/skin/default/image/vip_1.gif b/skin/default/image/vip_1.gif
new file mode 100644
index 0000000..ba005b4
Binary files /dev/null and b/skin/default/image/vip_1.gif differ
diff --git a/skin/default/image/vip_10.gif b/skin/default/image/vip_10.gif
new file mode 100644
index 0000000..9e23975
Binary files /dev/null and b/skin/default/image/vip_10.gif differ
diff --git a/skin/default/image/vip_2.gif b/skin/default/image/vip_2.gif
new file mode 100644
index 0000000..e6ec0cb
Binary files /dev/null and b/skin/default/image/vip_2.gif differ
diff --git a/skin/default/image/vip_3.gif b/skin/default/image/vip_3.gif
new file mode 100644
index 0000000..06a2f35
Binary files /dev/null and b/skin/default/image/vip_3.gif differ
diff --git a/skin/default/image/vip_4.gif b/skin/default/image/vip_4.gif
new file mode 100644
index 0000000..f67471f
Binary files /dev/null and b/skin/default/image/vip_4.gif differ
diff --git a/skin/default/image/vip_6.gif b/skin/default/image/vip_6.gif
new file mode 100644
index 0000000..7152d62
Binary files /dev/null and b/skin/default/image/vip_6.gif differ
diff --git a/skin/default/image/vip_7.gif b/skin/default/image/vip_7.gif
new file mode 100644
index 0000000..03914f8
Binary files /dev/null and b/skin/default/image/vip_7.gif differ
diff --git a/skin/default/image/vip_9.gif b/skin/default/image/vip_9.gif
new file mode 100644
index 0000000..9d0d846
Binary files /dev/null and b/skin/default/image/vip_9.gif differ
diff --git a/skin/default/image/vote_bg.gif b/skin/default/image/vote_bg.gif
new file mode 100644
index 0000000..76a15e1
Binary files /dev/null and b/skin/default/image/vote_bg.gif differ
diff --git a/skin/default/image/waitpic.gif b/skin/default/image/waitpic.gif
new file mode 100644
index 0000000..5462599
Binary files /dev/null and b/skin/default/image/waitpic.gif differ
diff --git a/skin/default/image/warn.gif b/skin/default/image/warn.gif
new file mode 100644
index 0000000..6047737
Binary files /dev/null and b/skin/default/image/warn.gif differ
diff --git a/skin/default/image/yes.gif b/skin/default/image/yes.gif
new file mode 100644
index 0000000..a158532
Binary files /dev/null and b/skin/default/image/yes.gif differ
diff --git a/skin/default/index.css b/skin/default/index.css
new file mode 100644
index 0000000..f18c91c
--- /dev/null
+++ b/skin/default/index.css
@@ -0,0 +1,166 @@
+/*
+ [DESTOON] Copyright (c) 2008-2021 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+.head-txt {margin-bottom:0;}
+
+.im0 {padding:10px 0;}
+.im0l {width:220px;float:left;height:532px;background:#FFFFFF;}
+.im0l p {height:32px;line-height:32px;padding:0 10px 0 20px;font-size:14px;margin:0;background:#007AFF;color:#FFFFFF;}
+.im0l ul {margin:10px 0;}
+.im0l i {font-style:normal;font-weight:bold;float:right;color:#EEEEEE;font-family:simsun;}
+.im0l strong {font-weight:normal;}
+.im0l li {height:32px;line-height:32px;padding:0 10px 0 40px;font-size:14px;overflow:hidden;cursor:pointer;}
+.im0l div {z-index:900;position:absolute;width:640px;height:510px;padding:10px 20px;overflow:hidden;border:#EEEEEE 1px solid;background:#FFFFFF;display:none;}
+.im0l dl {margin:0;border-bottom:#EEEEEE 1px dotted;clear:both;}
+.im0l dt {margin:0;padding:0;line-height:31px;font-size:14px;}
+.im0l dd {margin:0;padding:0;line-height:32px;font-size:12px;}
+.im0l em {font-style:normal;color:#EEEEEE;padding:0 10px;font-family:simsun;}
+.im0l li:hover i {color:#FFFFFF;}
+.im0l li:hover strong {color:#FFFFFF;}
+.im0l li:hover div {display:block;}
+
+.im0l .cate-0 {background:url('image/cate-0.png') no-repeat 10px center;}
+.im0l .cate-0:hover {background:#007AFF url('image/cate-0-on.png') no-repeat 10px center;}
+.im0l .cate-0:hover div {margin:-42px 0 0 160px;}
+.im0l .cate-1 {background:url('image/cate-1.png') no-repeat 10px center;}
+.im0l .cate-1:hover {background:#007AFF url('image/cate-1-on.png') no-repeat 10px center;}
+.im0l .cate-1:hover div {margin:-74px 0 0 160px;}
+.im0l .cate-2 {background:url('image/cate-2.png') no-repeat 10px center;}
+.im0l .cate-2:hover {background:#007AFF url('image/cate-2-on.png') no-repeat 10px center;}
+.im0l .cate-2:hover div {margin:-106px 0 0 160px;}
+.im0l .cate-3 {background:url('image/cate-3.png') no-repeat 10px center;}
+.im0l .cate-3:hover {background:#007AFF url('image/cate-3-on.png') no-repeat 10px center;}
+.im0l .cate-3:hover div {margin:-138px 0 0 160px;}
+.im0l .cate-4 {background:url('image/cate-4.png') no-repeat 10px center;}
+.im0l .cate-4:hover {background:#007AFF url('image/cate-4-on.png') no-repeat 10px center;}
+.im0l .cate-4:hover div {margin:-170px 0 0 160px;}
+.im0l .cate-5 {background:url('image/cate-5.png') no-repeat 10px center;}
+.im0l .cate-5:hover {background:#007AFF url('image/cate-5-on.png') no-repeat 10px center;}
+.im0l .cate-5:hover div {margin:-202px 0 0 160px;}
+.im0l .cate-6 {background:url('image/cate-6.png') no-repeat 10px center;}
+.im0l .cate-6:hover {background:#007AFF url('image/cate-6-on.png') no-repeat 10px center;}
+.im0l .cate-6:hover div {margin:-234px 0 0 160px;}
+.im0l .cate-7 {background:url('image/cate-7.png') no-repeat 10px center;}
+.im0l .cate-7:hover {background:#007AFF url('image/cate-7-on.png') no-repeat 10px center;}
+.im0l .cate-7:hover div {margin:-266px 0 0 160px;}
+.im0l .cate-8 {background:url('image/cate-8.png') no-repeat 10px center;}
+.im0l .cate-8:hover {background:#007AFF url('image/cate-8-on.png') no-repeat 10px center;}
+.im0l .cate-8:hover div {margin:-298px 0 0 160px;}
+.im0l .cate-9 {background:url('image/cate-9.png') no-repeat 10px center;}
+.im0l .cate-9:hover {background:#007AFF url('image/cate-9-on.png') no-repeat 10px center;}
+.im0l .cate-9:hover div {margin:-330px 0 0 160px;}
+.im0l .cate-10 {background:url('image/cate-10.png') no-repeat 10px center;}
+.im0l .cate-10:hover {background:#007AFF url('image/cate-10-on.png') no-repeat 10px center;}
+.im0l .cate-10:hover div {margin:-362px 0 0 160px;}
+.im0l .cate-11 {background:url('image/cate-11.png') no-repeat 10px center;}
+.im0l .cate-11:hover {background:#007AFF url('image/cate-11-on.png') no-repeat 10px center;}
+.im0l .cate-11:hover div {margin:-394px 0 0 160px;}
+.im0l .cate-12 {background:url('image/cate-12.png') no-repeat 10px center;}
+.im0l .cate-12:hover {background:#007AFF url('image/cate-12-on.png') no-repeat 10px center;}
+.im0l .cate-12:hover div {margin:-426px 0 0 160px;}
+.im0l .cate-13 {background:url('image/cate-13.png') no-repeat 10px center;}
+.im0l .cate-13:hover {background:#007AFF url('image/cate-13-on.png') no-repeat 10px center;}
+.im0l .cate-13:hover div {margin:-458px 0 0 160px;}
+.im0l .cate-14 {background:url('image/cate-14.png') no-repeat 10px center;}
+.im0l .cate-14:hover {background:#007AFF url('image/cate-14-on.png') no-repeat 10px center;}
+.im0l .cate-14:hover div {margin:-490px 0 0 160px;}
+.im0l .cate-15 {background:url('image/cate-15.png') no-repeat 10px center;}
+.im0l .cate-15:hover {background:#007AFF url('image/cate-15-on.png') no-repeat 10px center;}
+.im0l .cate-15:hover div {margin:-522px 0 0 160px;}
+
+.im0m {width:660px;float:left;margin:0 10px;height:532px;}
+.im0a {width:650px;padding-left:10px;height:222px;margin-top:10px;background:#FFFFFF;}
+.im0a div {width:120px;height:212px;margin:11px 10px 0 0;float:left;overflow:hidden;}
+.im0a img {width:120px;height:200px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;}
+.im0a img:hover {-webkit-transform:scale(1.05);-moz-transform:scale(1.05);-ms-transform:scale(1.05);-o-transform:scale(1.05);transform:scale(1.05);}
+
+.im0r {width:320px;float:left;height:532px;}
+.im0u {height:300px;overflow:hidden;background:#FFFFFF;}
+
+.im0t {height:222px;overflow:hidden;margin-top:10px;background:#FFFFFF;}
+.im0t-list {height:160px;overflow:hidden;margin:10px 16px;}
+.im0t-list li {height:26px;line-height:26px;overflow:hidden;}
+.im0t-list li .f_r {padding-left:16px;color:#666666;}
+
+.im0g {height:75px;overflow:hidden;padding:0 10px;}
+.im0g div {width:75px;height:75px;float:left;text-align:center;padding:10px 0;}
+.im0g div:hover {background:#EEEEEE;}
+.im0g img {width:32px;height:32px;margin-bottom:6px;}
+.im0g em {font-style:normal;background:#FF6600;border-radius:50%;color:#FFFFFF;font-size:12px;z-index:3;position:absolute;display:block;width:16px;height:16px;line-height:16px;overflow:hidden;text-align:center;margin:0 0 0 42px;}
+
+.ian-h {}
+.ian-h ul {border-bottom:#EEEEEE 1px solid;height:32px;padding-left:16px;}
+.ian-h li {border:#FFFFFF 1px solid;border-bottom:#EEEEEE 1px solid;display:inline-block;height:31px;line-height:31px;margin-right:16px;padding:0 10px;float:left;}
+.ian-h .on {border:#EEEEEE 1px solid;border-bottom:#FFFFFF 1px solid;}
+
+.ian-b {height:66px;overflow:hidden;margin:10px 16px;}
+.ian-b li {height:24px;line-height:24px;overflow:hidden;}
+.ian-b li .f_r {padding-left:16px;color:#666666;}
+.ian-b div {float:left;width:32px;height:32px;line-height:16px;padding:14px;text-align:center;border:#EEEEEE 2px solid;border-radius:50%;}
+.ian-b div:hover {border:#FF6600 2px solid;}
+.ian-b p {float:left;width:48px;height:16px;padding:24px 0;margin:2px 0 0 0;text-align:center;font-weight:bold;color:#EEEEEE;font-family:simsun;}
+
+.im-b {overflow:hidden;border-bottom:#F5F5F5 1px solid;}
+.im-l {width:220px;height:590px;float:left;background:#FFFFFF;overflow:hidden;padding:0 0 10px 0;}
+.im-l p {margin:20px;font-size:18px;}
+.im-l li {width:90px;padding-left:20px;float:left;height:32px;line-height:32px;font-size:14px;overflow:hidden;}
+.im-r {width:1000px;float:left;}
+
+.im-b-img {height:580px;background:#F5F5F5;}
+.im-r-img div {width:168px;border:#FFFFFF 1px solid;margin:10px 0 0 10px;padding:10px;height:258px;float:left;background:#FFFFFF;}
+.im-r-img div img {-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;}
+.im-r-img div:hover {border:#EEEEEE 1px solid;box-shadow:2px 2px 10px #EEEEEE;}
+.im-r-img div:hover img {-webkit-transform:scale(1.05);-moz-transform:scale(1.05);-ms-transform:scale(1.05);-o-transform:scale(1.05);transform:scale(1.05);}
+.im-r-img b {display:block;height:42px;line-height:42px;color:#FF0000;font-size:14px;}
+.im-r-img i {display:block;height:42px;line-height:42px;font-size:14px;font-style:normal;}
+.im-r-img p {height:48px;line-height:24px;margin:0;overflow:hidden;font-size:13px;}
+
+.in-b {overflow:hidden;}
+.in-l {width:220px;float:left;}
+.in-m {width:490px;float:left;margin:0 20px;}
+.in-r {width:470px;float:left;}
+
+.in-l div {background:#F5F5F5;padding:10px 16px;margin:10px 0 0 10px;}
+.in-l div:hover {background:#EEEEEE;}
+.in-l div p {height:48px;line-height:24px;overflow:hidden;font-size:16px;margin:0 0 10px 0;}
+
+.in-m h2 {text-align:left;font-size:22px;margin:10px;height:48px;line-height:48px;overflow:hidden;}
+
+.in-img {}
+.in-img div {width:144px;margin:10px 10px 0 0;padding:1px;float:left;}
+.in-img div:hover {background:#EEEEEE;}
+.in-img div p {height:36px;line-height:18px;overflow:hidden;font-size:12px;margin:10px;}
+
+.ic-b {overflow:hidden;padding:0 0 10px 0;}
+.ic-l {width:220px;float:left;}
+.ic-m {width:490px;float:left;margin:0 20px;}
+.ic-r {width:470px;float:left;}
+
+.ic-brand {background:#F5F5F5;padding:10px;margin:10px 0 0 10px;}
+.ic-brand i {font-style:normal;font-size:16px;padding:0 0 10px 10px;display:block;}
+.ic-brand p {margin:10px 0 0 0;padding-top:10px;text-align:center;height:88px;}
+.ic-brand p:hover {background:#FFFFFF;}
+.ic-brand p b {display:block;height:32px;line-height:32px;overflow:hidden;font-size:14px;margin:0;font-weight:normal;}
+.ic-brand #brands {height:432px;overflow:hidden;}
+
+.ic-know-credit {background:url('image/ico_reward.gif') no-repeat right center;color:#666666;padding:0 16px;}
+
+.ic-club {height:240px;overflow:hidden;margin-bottom:10px;}
+.ic-club-b {padding-left:10px;overflow:hidden;}
+.ic-club-b div {width:150px;height:150px;padding:20px 0;float:left;text-align:center;}
+.ic-club-b div:hover {background:#F5F5F5;}
+.ic-club-b div:hover img {border:#FF6600 2px solid;}
+.ic-club-b img {width:86px;height:86px;border-radius:50%;padding:2px;border:#EEEEEE 2px solid;}
+.ic-club-b p {height:32px;line-height:32px;overflow:hidden;font-size:14px;margin:0;}
+.ic-club-b span {font-size:12px;color:#999999;}
+
+.ilink {padding:16px;overflow:hidden;}
+.ilink li {padding:0 16px 10px 0;float:left;}
+
+.im0mall {width:990px;height:222px;overflow:hidden;position:absolute;z-index:1;background:#FFFFFF;margin-top:10px;}
+.im0t-mall div {width:100px;height:150px;overflow:hidden;margin:21px 0 0 21px;float:left;}
+.im0t-mall div:hover {background:#F5F5F5;}
+.im0t-mall div:hover b {display:block;}
+.im0t-mall b {display:none;height:44px;line-height:44px;color:#FF6600;font-size:14px;text-align:center;}
+.im0t-mall p {height:44px;line-height:22px;margin:0;overflow:hidden;font-size:12px;}
\ No newline at end of file
diff --git a/skin/default/info.css b/skin/default/info.css
new file mode 100644
index 0000000..8da6c91
--- /dev/null
+++ b/skin/default/info.css
@@ -0,0 +1,10 @@
+/*
+ [DESTOON] Copyright (c) 2008-2021 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+.info_main {padding:10px 10px 0 10px;}
+.info_main li {padding:8px 0 8px 16px;font-size:14px;}
+
+.brand {padding:5px 0 5px 0;}
+.brand img {padding:3px;}
+.brand li {height:22px;line-height:22px;overflow:hidden;}
\ No newline at end of file
diff --git a/skin/default/mall.css b/skin/default/mall.css
new file mode 100644
index 0000000..97bd235
--- /dev/null
+++ b/skin/default/mall.css
@@ -0,0 +1,99 @@
+/*
+ [DESTOON] Copyright (c) 2008-2021 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+.sell_tip {width:180px;height:70px;background:url('image/sell_tip.gif') no-repeat;overflow:hidden;z-index:1000;position:absolute;}
+.sell_tip p {margin:0 0 4px 2px;font-weight:bold;}
+.sell_tip div {padding:8px 0 0 10px;}
+.tools {padding:8px 0;border-bottom:#EEEEEE 1px solid;}
+.tools table {width:100%;}
+.tools select {padding:2px;}
+.tool-btn {background:url('image/btn_1.gif') no-repeat;height:22px;line-height:22px;width:70px;padding:0 0 0 10px;border:none;cursor:pointer;}
+.tool-btn:hover {background:url('image/btn_2.gif') no-repeat;}
+.img_list li {height:22px;line-height:22px;overflow:hidden;}
+
+.list_price {color:#808080;width:100px;}
+.list_price strong {font-family:Arial;color:#FF2900;font-weight:bold;font-size:16px;}
+.list_count {color:#404040;width:100px;}
+.list_count span {color:#808080;text-decoration:underline;}
+.mall_tab {height:42px;overflow:hidden;font-size:14px;border:#EEEEEE 1px solid;;}
+.mall_tab_1,.mall_tab_2 {float:left;padding:12px 24px;border-right:#EEEEEE 1px solid;}
+.mall_tab_2 {background:#EEEEEE;font-weight:bold;}
+.mall_c {border:#EEEEEE 1px solid;border-top:none;padding:20px;}
+.cc_inp {border:#CCCCCC 1px solid;text-align:center;}
+
+.stat {padding:15px 0 10px 0;}
+.stat_p {height:10px;line-height:10px;background:#FFF7D2;font-size:1px;}
+.stat_p div {height:10px;line-height:10px;background:#FFA40D;border-left:#FFA40D 2px solid;float:left;}
+.comment-filter {background:#F3F3F3;padding:12px 16px;}
+.comment {padding:16px 0;border-bottom:#EEEEEE 1px solid;overflow:hidden;}
+.comment-l {width:128px;float:left;text-align:center;margin-right:24px;}
+.comment-l img {width:48px;height:48px;border-radius:50%;margin-bottom:12px;}
+.comment-l b {display:block;width:100%;}
+.comment-r {float:left;width:1000px;overflow:hidden;}
+.comment-r ul {margin-top:12px;overflow:hidden;}
+.comment-r li {width:84px;height:84px;float:left;}
+.comment-r li img {width:64px;height:64px;border:#EEEEEE 1px solid;padding:2px;cursor:pointer;}
+.comment-r p {margin:0;overflow:hidden;clear:both;display:none;}
+.comment-r p img {max-width:800px;cursor:pointer;}
+.comment-info {padding:0 0 10px 0;}
+.comment-info span {float:right;color:#666666;}
+.comment-content {font-size:14px;line-height:24px;}
+.comment-reply {font-size:14px;line-height:24px;color:#FF6600;margin-top:10px;border-top:#EAEAEA 1px dotted;padding-top:10px;clear:both;}
+.comment-reply span {float:right;color:#666666;font-size:12px;}
+.comment-empty {padding:128px;text-align:center;color:#666666;font-size:14px;}
+
+.relate_1,.relate_2 {display:inline-block;height:40px;float:left;margin:0 6px 6px 0;}
+.relate_1 img,.relate_2 img {width:40px;height:40px;float:left;}
+.relate_1 b,.relate_2 b {float:left;display:inline-block;max-width:320px;height:40px;line-height:40px;overflow:hidden;font-weight:normal;padding:0 10px;}
+.relate_2 em {display:block;width:16px;height:16px;background:url('image/relate_on.gif') no-repeat;z-index:1;position:absolute;margin:40px 0 0 40px;}
+.relate_1 a:link,.relate_1 a:visited,.relate_1 a:active {display:inline-block;height:40px;border:#CCCCCC 1px solid;}
+.relate_1 a:hover {border:#C90000 1px solid;}
+.relate_2 a:link,.relate_2 a:visited,.relate_2 a:active,.relate_2 a:hover {display:inline-block;height:40px;color:#333333;border:#C90000 1px solid;background:url('image/relate_on.gif') no-repeat right bottom;}
+
+.nv_1,.nv_2,.nv_3 {float:left;padding:6px 10px;margin:0 6px 6px 0;cursor:pointer;}
+.nv_1 {border:#CCCCCC 1px solid;}
+.nv_1:hover {border:#C90000 1px solid;}
+.nv_2 {border:#C90000 1px solid;background:url('image/relate_on.gif') no-repeat right bottom;}
+
+.promos {}
+.promos span {display:block;float:left;padding:2px 6px;margin-right:10px;background:#FFDEDF;color:#DF3033;border-left:#DF3033 1px dotted;border-right:#DF3033 1px dotted;border-top:#DF3033 1px solid;border-bottom:#DF3033 1px solid;}
+.promos span:hover {background:#FFFFFF;}
+
+.cart_info {height:33px;overflow:hidden;border:#EEEEEE 1px solid;background:#F7F7F7 url('image/cart_info.gif') no-repeat 10px center;}
+.cart_info div {padding:8px 0 0 40px;}
+
+.mthumb {padding:5px 0 5px 0;}
+.mthumb img {margin:3px;}
+.mthumb li {height:24px;line-height:24px;overflow:hidden;}
+
+.list-view {width:1224px;}
+.list-view:after {content:"";display:block;clear:both;}
+.list-view div {width:204px;float:left;}
+.list-view img:hover {border-left:#FFFFFF 1px solid;}
+.list-view ul {margin:6px 24px 24px 0;}
+.list-view li {height:24px;line-height:24px;overflow:hidden;font-size:14px;}
+.list-view i {font-size:16px;font-family:Verdana;font-weight:100;font-style:normal;color:#999999;float:right;display:none;}
+.list-view div:hover i {display:inline;}
+.list-view-msg {padding:96px;text-align:center;font-size:16px;}
+
+.mall-title {line-height:28px;font-size:16px;padding:16px 10px 0 10px;margin:0;}
+.mall-text {line-height:18px;font-size:12px;padding:10px 10px 0 10px;margin:0;color:#E4393C;}
+.mall-text span {color:#005EA7;}
+.mall-price {font-weight:bold;font-family:Arial;color:#E4393C;}
+.mall-price span {font-size:18px;}
+.mall-alter {width:57px;height:33px;border:#CCCCCC 1px solid;float:left;}
+.mall-alter input{width:40px;height:32px;line-height:32px;border:none;text-align:center;padding:0;float:left;}
+.mall-alter b,.mall-alter i {width:16px;height:16px;line-height:16px;border-left:#CCCCCC 1px solid;background:#F2F2F2;text-align:center;float:left;cursor:pointer;-moz-user-select:none;-khtml-user-select:none;user-select:none;}
+.mall-alter b {border-bottom:#CCCCCC 1px solid;font-size:14px;}
+.mall-alter i {font-style:normal;font-size:18px;}
+.mall-alter b:hover,.mall-alter i:hover {background:#E2E2E2;}
+.mall-amount {display:inline-block;height:32px;line-height:32px;float:left;margin-left:24px;color:#666666;}
+
+.btn-buy,.btn-cart {font-size:16px;width:148px;height:36px;line-height:36px;border:none;text-align:center;cursor:pointer;padding:0;-webkit-appearance:none;margin:6px 10px 0 0;}
+.btn-buy {background:#FFEDED;border:#FF0036 1px solid;color:#FF0036;}
+.btn-buy:hover {background:#F7BBBB;}
+.btn-buy:disabled {background:#F2F2F2;border:#D6D6D8 1px dashed;color:#CDCDCD;cursor:not-allowed;}
+.btn-cart {background:#FF0036;border:#FF0036 1px solid;color:#FFFFFF;}
+.btn-cart:hover {background:#DF3033;}
+.btn-cart:disabled {background:#CDCDCD;border:#CDCDCD 1px solid;color:#999999;cursor:not-allowed;}
\ No newline at end of file
diff --git a/skin/default/member.css b/skin/default/member.css
new file mode 100644
index 0000000..968a9dd
--- /dev/null
+++ b/skin/default/member.css
@@ -0,0 +1,47 @@
+/*
+ [DESTOON] Copyright (c) 2008-2021 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+#msgs{z-index:1000;position:absolute;width:150px;margin:-42px auto 0 96px;background:#333333;border-radius:5px;height:32px;line-height:32px;color:#FFFFFF;text-align:center;display:none;}
+.login-show {width:400px;min-height:200px;float:left;}
+.login-main {width:360px;background:#FFFFFF;border:#E5E5E5 1px solid;margin:0 28px;border-radius:10px;float:left;}
+.login-head {height:50px;overflow:hidden;}
+.login-head ul {height:48px;border-bottom:#E5E5E5 2px solid;}
+.login-head li {float:left;width:120px;height:48px;line-height:48px;text-align:center;font-size:16px;border-bottom:#E5E5E5 2px solid;}
+.login-head a {display:block;width:100%;height:48px;}
+.login-head li:hover {border-bottom:#666666 2px solid;}
+.login-head .on,.login-head .on:hover {border-bottom:#2587F4 2px solid;font-weight:bold;}
+.login-body {padding-bottom:20px;}
+.login-body div {padding:30px 30px 0 30px;font-size:14px;}
+.login-oauth {border-top:#E5E5E5 1px solid;text-align:center;margin-top:20px;}
+.login-oauth img {width:24px;height:24px;padding:8px;}
+.login-oauth img:hover {background:#E5E5E5;}
+.login-btn {width:300px;height:42px;line-height:42px;font-size:16px;}
+
+.input-captcha,.input-question,.input-user,.input-pass,.input-mob,.input-mail,.input-text,.input-code {padding:10px 10px 10px 30px;height:22px;line-height:22px;border:#E5E5E5 1px solid;font-size:14px;}
+.input-captcha {background:url('image/input-captcha.png') no-repeat 8px center;width:100px;margin-right:10px;}
+.input-question {background:url('image/input-question.png') no-repeat 8px center;width:260px;}
+.input-user {background:url('image/input-username.png') no-repeat 8px center;width:260px;}
+.input-pass {background:url('image/input-password.png') no-repeat 8px center;width:260px;}
+.input-mob {background:url('image/input-mobile.png') no-repeat 8px center;width:260px;}
+.input-mail {background:url('image/input-mail.png') no-repeat 8px center;width:260px;}
+.input-text {background:url('image/input-text.png') no-repeat 8px center;width:260px;}
+.input-code {background:url('image/input-password.png') no-repeat 8px center;width:100px;}
+
+.reg-main {width:900px;margin:0 auto;}
+.reg-step ul {height:48px;border-bottom:#E5E5E5 2px solid;}
+.reg-step li {display:inline;float:left;width:240px;height:48px;line-height:48px;text-align:center;font-size:16px;font-weight:bold;border-bottom:#E5E5E5 2px solid;color:#9999B2;}
+.reg-step li i {width:24px;height:24px;line-height:24px;color:#FFFFFF;background:url('image/reg-step.png') no-repeat 0 0;display:inline-block;margin:12px 6px 0 0;font-style:normal;font-size:14px;}
+.reg-step li b {width:24px;height:24px;line-height:24px;color:#FFFFFF;background:url('image/reg-step.png') no-repeat 0 -48px;display:inline-block;margin:12px 6px 0 0;font-size:14px;}
+.reg-step .on {border-bottom:#2587F4 2px solid;color:#2587F4;color:#333333;}
+.reg-step .on i {background:url('image/reg-step.png') no-repeat 0 -24px;}
+.reg-step .on b {background:url('image/reg-step.png') no-repeat 0 -72px;}
+.reg-tb {width:700px;margin:0 auto;}
+.reg-tb td {padding:10px;font-size:14px;}
+.reg-tb .tl {width:120px;text-align:right;}
+.reg-tb .tr {width:330px;}
+.reg-inp {width:280px;padding:10px;height:22px;line-height:22px;border:#E5E5E5 1px solid;font-size:14px;}
+.reg-btn {width:300px;height:42px;line-height:42px;font-size:16px;}
+
+.tips {position:absolute;z-index:100;width:300px;background:url('image/tips_bg.gif') no-repeat 0 bottom;overflow:hidden;margin:-6px 0 0 -10px;}
+.tips div{background:url('image/tips_top.gif') no-repeat;line-height:22px;padding:8px 10px 8px 36px;font-size:12px;}
\ No newline at end of file
diff --git a/skin/default/quote.css b/skin/default/quote.css
new file mode 100644
index 0000000..2b945e1
--- /dev/null
+++ b/skin/default/quote.css
@@ -0,0 +1,33 @@
+/*
+ [DESTOON] Copyright (c) 2008-2021 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+/* article && quote*/
+.top-l {width:430px;float:left;margin-right:20px;}
+.top-r {width:430px;float:right;}
+.headline h2 {text-align:center;font-size:24px;margin:16px 20px 10px 0;height:48px;line-height:48px;overflow:hidden;}
+.subline {padding:0 16px;}
+.subline li {height:32px;line-height:32px;overflow:hidden;font-size:16px;}
+.subline .f_r {font-size:12px;color:#666666;padding-left:16px;font-style:normal;float:right;}
+.keytags {font-size:14px;padding:16px 24px;}
+/* catlist */
+.childlist {padding:10px;line-height:24px;}
+.childlist li {font-size:14px;height:28px;line-height:28px;background:url('image/li_dot.gif') no-repeat 4px 12px;padding:0 10px 0 12px;overflow:hidden;}
+
+.catlist {padding-bottom:16px;line-height:32px;margin:16px;}
+.catlist li {font-size:14px;height:32px;line-height:32px;background:url('image/li_dot.gif') no-repeat 6px center;padding:0 12px;overflow:hidden;}
+.catlist i {font-style:normal;float:right;font-size:12px;color:#666666;}
+.catlist .sp {background:#FFFFFF url('image/dot.gif') repeat-x 0 center;}
+
+.price-market {padding:0 32px 16px 32px;}
+.price-market li {height:32px;line-height:32px;overflow:hidden;font-size:14px;}
+.price-add {padding:16px;}
+.price-add table {width:100%;}
+.price-add .tl {width:60px;font-size:14px;}
+
+#products {border:#EEEEEE 1px solid;border-top:none;height:220px;overflow:hidden;}
+#products td {height:21px;border-bottom:#EEEEEE 1px solid;border-right:#EEEEEE 1px solid;}
+.content td {font-size:12px;}
+
+.quote-warn {text-align:center;padding:24px;font-size:14px;}
+.quote-warn b {color:red;}
\ No newline at end of file
diff --git a/skin/default/sell.css b/skin/default/sell.css
new file mode 100644
index 0000000..f3f2463
--- /dev/null
+++ b/skin/default/sell.css
@@ -0,0 +1,25 @@
+/*
+ [DESTOON] Copyright (c) 2008-2021 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+.sell_tip {width:180px;height:70px;background:url('image/sell_tip.gif') no-repeat;overflow:hidden;z-index:1000;position:absolute;}
+.sell_tip p {margin:0 0 4px 2px;font-weight:bold;}
+.sell_tip div {padding:8px 0 0 10px;}
+.tools {padding:8px 0;border-bottom:#EEEEEE 1px solid;}
+.tools table {width:100%;}
+.tools select {padding:2px;}
+.tool-btn {background:url('image/btn_1.gif') no-repeat;height:22px;line-height:22px;width:70px;padding:0 0 0 10px;border:none;cursor:pointer;}
+.tool-btn:hover {background:url('image/btn_2.gif') no-repeat;}
+
+.img_list li {height:22px;line-height:22px;overflow:hidden;}
+.product_option {padding:10px 20px 10px 20px;}
+.iq_btn {margin-top:10px;border:none!important;}
+.cc_inp {border:#CCCCCC 1px solid;text-align:center;}
+
+.btn-buy,.btn-cart {font-size:16px;width:148px;height:36px;line-height:36px;border:none;text-align:center;cursor:pointer;padding:0;-webkit-appearance:none;margin:6px 10px 0 0;}
+.btn-buy {background:#FFEDED;border:#FF0036 1px solid;color:#FF0036;}
+.btn-buy:hover {background:#F7BBBB;}
+.btn-buy:disabled {background:#F2F2F2;border:#D6D6D8 1px dashed;color:#CDCDCD;cursor:not-allowed;}
+.btn-cart {background:#FF0036;border:#FF0036 1px solid;color:#FFFFFF;}
+.btn-cart:hover {background:#DF3033;}
+.btn-cart:disabled {background:#CDCDCD;border:#CDCDCD 1px solid;color:#999999;cursor:not-allowed;}
diff --git a/skin/default/special.css b/skin/default/special.css
new file mode 100644
index 0000000..3264243
--- /dev/null
+++ b/skin/default/special.css
@@ -0,0 +1,17 @@
+/*
+ [DESTOON] Copyright (c) 2008-2021 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+.headline {background:#FFFFFF;padding:0 10px 5px 10px;border-bottom:#EEEEEE 1px solid;}
+.headline h2 {text-align:center;font-size:16px;margin:0;height:30px;line-height:30px;overflow:hidden;}
+.headline span {color:#225588;}
+.headline div {line-height:22px;height:22px;overflow:hidden;}
+.subline li {height:26px;line-height:26px;overflow:hidden;font-size:14px;padding:0 10px 0 10px;}
+.subline span {color:#666666;}
+/* catlist */
+.catlist {padding:12px 15px 12px 20px;line-height:24px;}
+.catlist_li {font-size:14px;height:28px;line-height:28px;background:url('image/li_dot.gif') no-repeat 5px 12px;padding:0 10px 0 12px;overflow:hidden;}
+.catlist_sp {background:#FFFFFF url('image/dot.gif') repeat-x 0 center;}
+/* special */
+.special_intro {line-height:180%;font-size:13px;height:160px;overflow-y:scroll;}
+.special_box {width:1220px;overflow:hidden;}
diff --git a/skin/default/video.css b/skin/default/video.css
new file mode 100644
index 0000000..e721603
--- /dev/null
+++ b/skin/default/video.css
@@ -0,0 +1,12 @@
+/*
+ [DESTOON] Copyright (c) 2008-2021 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+.player {padding:32px 0;}
+.play-list {padding:24px 24px 8px 24px;}
+.play-list div {height:75px;margin-bottom:16px;}
+.play-list div:hover {background:#404040;}
+.play-list img {float:left;}
+.play-list ul {float:left;width:190px;}
+.play-list p {height:40px;line-height:20px;overflow:hidden;margin:6px 10px;color:#F1F1F1;}
+.play-list span {color:#999999;padding-left:10px;}
\ No newline at end of file
diff --git a/skin/index.html b/skin/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/skin/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/skin/m15dt8blue/ad/02F.jpg b/skin/m15dt8blue/ad/02F.jpg
new file mode 100644
index 0000000..7261d40
Binary files /dev/null and b/skin/m15dt8blue/ad/02F.jpg differ
diff --git a/skin/m15dt8blue/ad/04F.jpg b/skin/m15dt8blue/ad/04F.jpg
new file mode 100644
index 0000000..0edece6
Binary files /dev/null and b/skin/m15dt8blue/ad/04F.jpg differ
diff --git a/skin/m15dt8blue/ad/120348621.jpg b/skin/m15dt8blue/ad/120348621.jpg
new file mode 100644
index 0000000..911df19
Binary files /dev/null and b/skin/m15dt8blue/ad/120348621.jpg differ
diff --git a/skin/m15dt8blue/ad/144840851.jpg b/skin/m15dt8blue/ad/144840851.jpg
new file mode 100644
index 0000000..76ae47d
Binary files /dev/null and b/skin/m15dt8blue/ad/144840851.jpg differ
diff --git a/skin/m15dt8blue/ad/1F.png b/skin/m15dt8blue/ad/1F.png
new file mode 100644
index 0000000..ce64909
Binary files /dev/null and b/skin/m15dt8blue/ad/1F.png differ
diff --git a/skin/m15dt8blue/ad/1f-001.png b/skin/m15dt8blue/ad/1f-001.png
new file mode 100644
index 0000000..c8ef397
Binary files /dev/null and b/skin/m15dt8blue/ad/1f-001.png differ
diff --git a/skin/m15dt8blue/ad/2020631456.jpg b/skin/m15dt8blue/ad/2020631456.jpg
new file mode 100644
index 0000000..df03f65
Binary files /dev/null and b/skin/m15dt8blue/ad/2020631456.jpg differ
diff --git a/skin/m15dt8blue/ad/202064940.jpg b/skin/m15dt8blue/ad/202064940.jpg
new file mode 100644
index 0000000..a3b77a7
Binary files /dev/null and b/skin/m15dt8blue/ad/202064940.jpg differ
diff --git a/skin/m15dt8blue/ad/202064941.jpg b/skin/m15dt8blue/ad/202064941.jpg
new file mode 100644
index 0000000..f7c85ae
Binary files /dev/null and b/skin/m15dt8blue/ad/202064941.jpg differ
diff --git a/skin/m15dt8blue/ad/2F.png b/skin/m15dt8blue/ad/2F.png
new file mode 100644
index 0000000..66236e1
Binary files /dev/null and b/skin/m15dt8blue/ad/2F.png differ
diff --git a/skin/m15dt8blue/ad/2f-001.png b/skin/m15dt8blue/ad/2f-001.png
new file mode 100644
index 0000000..28e873b
Binary files /dev/null and b/skin/m15dt8blue/ad/2f-001.png differ
diff --git a/skin/m15dt8blue/ad/3F.png b/skin/m15dt8blue/ad/3F.png
new file mode 100644
index 0000000..7d64b9d
Binary files /dev/null and b/skin/m15dt8blue/ad/3F.png differ
diff --git a/skin/m15dt8blue/ad/3f-001.png b/skin/m15dt8blue/ad/3f-001.png
new file mode 100644
index 0000000..49c3772
Binary files /dev/null and b/skin/m15dt8blue/ad/3f-001.png differ
diff --git a/skin/m15dt8blue/ad/4F.png b/skin/m15dt8blue/ad/4F.png
new file mode 100644
index 0000000..787f30d
Binary files /dev/null and b/skin/m15dt8blue/ad/4F.png differ
diff --git a/skin/m15dt8blue/ad/5f-001.png b/skin/m15dt8blue/ad/5f-001.png
new file mode 100644
index 0000000..cf54b5c
Binary files /dev/null and b/skin/m15dt8blue/ad/5f-001.png differ
diff --git a/skin/m15dt8blue/ad/6f-001.png b/skin/m15dt8blue/ad/6f-001.png
new file mode 100644
index 0000000..f09265e
Binary files /dev/null and b/skin/m15dt8blue/ad/6f-001.png differ
diff --git a/skin/m15dt8blue/ad/7f-001.png b/skin/m15dt8blue/ad/7f-001.png
new file mode 100644
index 0000000..6987798
Binary files /dev/null and b/skin/m15dt8blue/ad/7f-001.png differ
diff --git a/skin/m15dt8blue/ad/8f-001.png b/skin/m15dt8blue/ad/8f-001.png
new file mode 100644
index 0000000..0403cce
Binary files /dev/null and b/skin/m15dt8blue/ad/8f-001.png differ
diff --git a/skin/m15dt8blue/ad/l1.jpg b/skin/m15dt8blue/ad/l1.jpg
new file mode 100644
index 0000000..9b1f0ab
Binary files /dev/null and b/skin/m15dt8blue/ad/l1.jpg differ
diff --git a/skin/m15dt8blue/ad/l2.jpg b/skin/m15dt8blue/ad/l2.jpg
new file mode 100644
index 0000000..6c76f58
Binary files /dev/null and b/skin/m15dt8blue/ad/l2.jpg differ
diff --git a/skin/m15dt8blue/ad/l4.jpg b/skin/m15dt8blue/ad/l4.jpg
new file mode 100644
index 0000000..0cad279
Binary files /dev/null and b/skin/m15dt8blue/ad/l4.jpg differ
diff --git a/skin/m15dt8blue/ad/mall-1F.jpg b/skin/m15dt8blue/ad/mall-1F.jpg
new file mode 100644
index 0000000..ee34f96
Binary files /dev/null and b/skin/m15dt8blue/ad/mall-1F.jpg differ
diff --git a/skin/m15dt8blue/ad/mall-2F.jpg b/skin/m15dt8blue/ad/mall-2F.jpg
new file mode 100644
index 0000000..27240de
Binary files /dev/null and b/skin/m15dt8blue/ad/mall-2F.jpg differ
diff --git a/skin/m15dt8blue/ad/mall-3F.jpg b/skin/m15dt8blue/ad/mall-3F.jpg
new file mode 100644
index 0000000..975b62a
Binary files /dev/null and b/skin/m15dt8blue/ad/mall-3F.jpg differ
diff --git a/skin/m15dt8blue/ad/mall-6F.jpg b/skin/m15dt8blue/ad/mall-6F.jpg
new file mode 100644
index 0000000..458ea9f
Binary files /dev/null and b/skin/m15dt8blue/ad/mall-6F.jpg differ
diff --git a/skin/m15dt8blue/ad/mall-ad-01.png b/skin/m15dt8blue/ad/mall-ad-01.png
new file mode 100644
index 0000000..a2d4116
Binary files /dev/null and b/skin/m15dt8blue/ad/mall-ad-01.png differ
diff --git a/skin/m15dt8blue/ad/mall-ad-03.png b/skin/m15dt8blue/ad/mall-ad-03.png
new file mode 100644
index 0000000..07b293b
Binary files /dev/null and b/skin/m15dt8blue/ad/mall-ad-03.png differ
diff --git a/skin/m15dt8blue/ad/menu_AD-001.png b/skin/m15dt8blue/ad/menu_AD-001.png
new file mode 100644
index 0000000..1adb0a2
Binary files /dev/null and b/skin/m15dt8blue/ad/menu_AD-001.png differ
diff --git a/skin/m15dt8blue/ad/sell_ad_3f.png b/skin/m15dt8blue/ad/sell_ad_3f.png
new file mode 100644
index 0000000..91b7ea5
Binary files /dev/null and b/skin/m15dt8blue/ad/sell_ad_3f.png differ
diff --git a/skin/m15dt8blue/ad/sell_ad_5f.png b/skin/m15dt8blue/ad/sell_ad_5f.png
new file mode 100644
index 0000000..2cfb0d8
Binary files /dev/null and b/skin/m15dt8blue/ad/sell_ad_5f.png differ
diff --git a/skin/m15dt8blue/ad/sell_ad_6f.png b/skin/m15dt8blue/ad/sell_ad_6f.png
new file mode 100644
index 0000000..da3651b
Binary files /dev/null and b/skin/m15dt8blue/ad/sell_ad_6f.png differ
diff --git a/skin/m15dt8blue/ad/sell_ad_7f.png b/skin/m15dt8blue/ad/sell_ad_7f.png
new file mode 100644
index 0000000..1db67cc
Binary files /dev/null and b/skin/m15dt8blue/ad/sell_ad_7f.png differ
diff --git a/skin/m15dt8blue/ad/sell_ad_8f.png b/skin/m15dt8blue/ad/sell_ad_8f.png
new file mode 100644
index 0000000..e02a680
Binary files /dev/null and b/skin/m15dt8blue/ad/sell_ad_8f.png differ
diff --git a/skin/m15dt8blue/ad/sell_ad_9f.png b/skin/m15dt8blue/ad/sell_ad_9f.png
new file mode 100644
index 0000000..25df4fa
Binary files /dev/null and b/skin/m15dt8blue/ad/sell_ad_9f.png differ
diff --git a/skin/m15dt8blue/article.css b/skin/m15dt8blue/article.css
new file mode 100644
index 0000000..005a776
--- /dev/null
+++ b/skin/m15dt8blue/article.css
@@ -0,0 +1,236 @@
+@charset "utf-8";
+/*
+ [DESTOON B2B System] Copyright (c) 2008-2018 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+.news-left { width: 920px; float:left; margin-right: 20px;}
+.news-left-c{float: left;width:920px;overflow: hidden;margin-right:20px; background:#fff;}
+.news-right{overflow:hidden;}
+/*幻灯广告*/
+.n-banner { overflow:hidden;}
+.n-banner .n-left { width: 640px; height: 280px; float:left; overflow:hidden;}
+#focus{width:640px;height:280px;overflow:hidden;position:relative;}
+#focus ul{height:280px;position:absolute;}
+#focus ul li{float:left;width:640px;height:280px;overflow:hidden;position:relative;}
+#focus ul li img{width:640px;height:280px;}
+#focus ul li div{position:absolute;overflow:hidden;}
+#focus ul li p{display: block;position: absolute;bottom: 40px;font-size: 24px;color: #fff;font-weight: bold;height: 30px;line-height: 30px;padding-left: 30px;}
+#focus .btn{position:absolute;width:200px;height:14px;right:10px;bottom:30px;text-align:right;}
+#focus .btn span{display:inline-block;_display:inline;_zoom:1;width:12px;height:12px;_font-size:0;margin-right:5px;cursor:pointer;border:#fff 1px solid;margin-top: 7px;}
+#focus .btn span.on{background:#ff6000;height: 12px;width:12px;border:#ff6000 1px solid;margin-top: 10px;}
+#focus .preNext{width:45px;height:100px;position:absolute;top:100px;background:url(img/sprite.png) no-repeat 0 0;cursor:pointer;display: block;}
+#focus .pre{left:10px;}
+#focus .next{right:10px;background-position:right top;}
+.n-banner .n-right { width: 260px; height: 280px; float:right; margin-left:20px;}
+.n-banner .n-right .r-a { width: 260px; height: 130px; overflow:hidden;}
+.n-banner .n-right .r-b { width: 260px; height: 130px;margin-top:20px; overflow:hidden;}
+.n-banner .n-right .r-a img,.n-banner .n-right .r-b img { width: 260px;height: 130px;}
+
+.news-list-box { background:#fff;padding:10px 30px;overflow:hidden}
+.news-list-box ul li img{width:224px; height: 150px;float:left;margin-right:20px;}
+.news-list-box ul li:hover img{opacity: 0.9;}
+.news-list-box ul li{border-bottom: 1px solid #eee;padding: 25px 0 25px;position: relative; overflow:hidden;}
+.news-list-box ul li .text{overflow:hidden; position:relative;height:130px;}
+.news-list-box ul li .text1{overflow:hidden;position:relative;margin-top:-5px;}
+.news-list-box ul li h5{font-size:20px;line-height: 20px;color:#333;margin-bottom:10px;}
+.news-list-box ul li h5 a{color:#000}
+.news-list-box ul li p{font-size:14px;line-height:24px; color:#999;}
+.news-list-box ul li em{font-size:14px;line-height:24px; margin:4px 0px; color:#888;display:block; background:url(img/timeicon.png) no-repeat left 6px;padding-left:20px;}
+.news-list-box ul li span{color:red}
+.news-list-box .news-htc { overflow:hidden;}
+.news-list-box .news-htc h3 { line-height:50px;font-size:22px;border-bottom:#eee 1px solid;color:#000;font-weight:normal}
+.news-list-box .news-htc h3:before{content: "";width: 3px;height: 22px;float: left;margin:14px 10px 0px 0px;background:#1db3c9}
+
+
+.past-box{background:#fff; overflow:hidden;padding:10px 20px;margin-bottom:20px;}
+.past-box dt span{float:right;font-size:14px;}
+.past-box dt{font-size:16px;line-height:40px;padding:0px 0px;font-weight:normal;color:#000;margin-bottom:5px}
+.past-box dt:before{content:"";background:#ff6000;float:left;margin-right:10px;height:16px;width:3px;margin-top:12px;}
+
+.past-box img{float:left;}
+.past-box p{font-size:14px;line-height:20px;height:60px;overflow:hidden;}
+.past-box ul li {height:70px; position:relative;overflow:hidden;}
+.past-box ul li:nth-child(1) { width: 220px;height: 140px;}
+.past-box ul li:nth-child(1) img { width: 220px;height: 140px;}
+.past-box ul li:nth-child(1) p { width:220px;height: 30px; color:#fff; background:rgba(0,0,0,.6); position:absolute; bottom:0px; left:0px; font-size:14px; line-height:30px;
+ text-align:center;}
+.past-box ul li:nth-child(1n+2) { margin-top:20px;}
+.past-box ul li:nth-child(1n+2) img { width: 90px;height: 60px; margin-right:10px;}
+.past-box ul li a:hover img{opacity:.9;filter:alpha(opacity=90)}
+.ad{background:#fff; padding:15px;margin-bottom:15px;}
+
+.sub-menu {position: fixed; right: 50%; margin-right: 620px; top: 220px; z-index: 99;}
+.sub-menu ul{overflow:hidden;}
+.sub-menu li { width:80px; height:40px; background:#fff; line-height:40px;text-align:center; border-bottom:1px solid #eee; font-size:12px}
+.sub-menu li:nth-child(1) { background:#1db3c9; }
+.sub-menu li:nth-child(1) a { color:#fff;}
+.sub-menu li:hover{ background:#1db3c9; }
+.sub-menu li:hover a{color:white}
+
+.sub-menu li.menuon{ background:#1db3c9; }
+.sub-menu li.menuon a{color:white;}
+.box{padding: 0px 20px;}
+
+.exContent{padding: 30px;}
+.exContent .exTitle{width: 100%;height: 30px;line-height: 30px;}
+.exContent .exTitle h1{float: left;font-size: 26px;color:black;font-weight:bold}
+.exContent .exTitle span{float: left;font-size: 20px;font-weight:bold;color: #fc6700;margin-left: 10px;}
+.exContent .exTiInfo{width: 100%;height: 34px;line-height: 34px;margin: 20px 0 10px;color: #999;background:#f7f7f7;}
+.exContent .exTiInfo a{color: #999;}
+.exContent .exTiInfo a:hover{color: #d10000;}
+.exContent .exDetails{width: 100%;height: auto;padding: 20px 0;background: #f6f6f6;}
+.exContent .exDetails p{padding: 0 20px;line-height: 20px;margin-top: 10px;}
+.exContent .pubTitle{width: 100%;height: 30px;line-height: 30px;background: #f6f6f6;margin: 20px 0;}
+.exContent .pubTitle span{float: left;font-size: 16px;border-left: 3px solid #d10000;text-indent: 15px;}
+.exContent .exIntroduce p{line-height: 20px;padding: 0 20px;}
+.exContent .exContact p{line-height: 20px;padding: 0 20px;}
+.exDisclaimer{background: #f9f9f9;border:1px solid #eee;padding:12px 20px; font-size:14px;margin:20px 30px;overflow:hidden}
+.exContent .exDisclaimer p{padding:20px;line-height: 23px;}
+.exRelated{padding: 20px 30px;overflow:hidden}
+.exRelated h2{font-size: 18px;margin-bottom: 10px;line-height: 20px;color:#222;font-weight:bold}
+.exRelated ul li{float: left;height: 30px;line-height: 30px;width: 390px;margin-right: 20px; font-size:14px;}
+.exRelated ul li a:hover{color:#d10000; }
+.exComment{padding: 30px;float: left;width: 758px;border:1px solid #eee;background: #fff;margin-top: 20px;}
+.exComment h1{font-size: 18px;margin-bottom: 10px;}
+.exAd{padding:0px 30px;overflow:hidden}
+
+.box dl{border:none}
+
+.summary{background: #f6f6f6;font-size: 14px;padding: 20px 0;}
+.summary p{line-height: 20px;padding:0 20px;}
+.content{width: 100%;padding: 10px 0; font-size:16px; line-height:27px;}
+.content img{max-width:720px;margin:10px 0}
+.content p{margin-bottom: 20px;color:#333}
+.tags{width: 100%;height: 30px;line-height: 30px;}
+.tags i{float: left;font-style: normal;}
+.tags span{float: left;height: 28px;border:1px solid #eee;border-radius: 15px;padding: 0 15px;margin-left: 10px;}
+
+
+
+
+
+
+/* vip单页开始 */
+.cdx-vip { background:url(img/cdx-vip.jpg) no-repeat center; width:100%; height:810px; padding-top:100px;}
+.cdx-vip .tit {height: 48px;width: 160px;display: inline-block;margin:0 0 83px -115px; line-height: 48px;border-radius: 24px;font-size: 24px;background-color: #c3c7cb;background-image: linear-gradient(105deg,#c3c7cb,#ebeced);}
+.cdx-vip .rl-item {width: 200px;height: 156px;margin:0 80px 50px 0; position: relative;text-align: center;float: left;cursor: default;}
+.cdx-vip .icon {display: inline-block;width: 60px;height: 60px;margin-bottom: 12px;}
+.cdx-vip .name {margin-bottom: 5px;font-size: 18px;font-weight: 600;color: #595959;}
+.cdx-vip .info-01 {font-size: 14px;color: #999;}
+.cdx-vip .icon {background-image: url(img/cdx-vip-icon.png);background-repeat: no-repeat;}
+.icon-offer-x {background-position: 0 -180px;}
+.icon-rank-x {background-position: 0 -60px;}
+.icon-data-x { background-position: 0 -240px;}
+.icon-dns-x {background-position: 0 -120px;}
+.icon-info-01-x {background-position: 0 -300px;}
+.icon-vip {background-position: -66px 1px;}
+.icon-offer {background-position: -66px -60px;}
+.icon-rank {background-position: -66px -120px;}
+.icon-data {background-position: -66px -180px;}
+.icon-dns {background-position: -66px -240px;}
+.icon-info-01 {background-position: -66px -300px;}
+.cdx-vip .cdx-vip-left { position: relative; float: left; width: 600px; font-size: 14px; text-align: center;}
+.cdx-vip .cdx-vip-right { position: relative;float: left;width: 600px;font-size: 14px;text-align: center;}
+.cdx-vip .cdx-vip-right .tit { margin-left: 115px;color: #dcb572;background-color: #2d2b2b;background-image: linear-gradient(107deg,#2d2b2b,#57544e);}
+.cdx-vip .cdx-vip-right .rl-item { margin:0 0 50px 80px; float:right; position:relative;}
+.cdx-vip .cdx-vip-right .name {color: #9e8254;}
+.cdx-vip .cdx-vip-right .rl-item .info-01 {color: #262626; opacity:1; transition:.3s;}
+.cdx-vip .cdx-vip-right .rl-item:hover .info-01 {opacity:0;}
+.cdx-vip .cdx-vip-right .rl-item .layer {position: absolute;height: 40px;width: 160px;left: 21px;bottom: 10px;line-height: 40px;text-align: center;border-radius: 20px;background-color: #d8b06b;background-image: linear-gradient(to bottom,#9c8153,#fce2a2);transition: .3s;opacity:0; color:#262626;}
+.cdx-vip .cdx-vip-right .rl-item:hover .layer { opacity:1;}
+
+
+/* 标题栏 */
+.more-title { position: relative;font-size: 32px;line-height: 1.4;text-align: center;margin-bottom: 94px; font-weight:400; color:#262626;}
+.advance .more-title { color:#fff;}
+.more-title em {color: #dcc59f;}
+.more-title:before {content: '';position: absolute;left: 50%;margin-left: -24px;bottom: -14px;width: 48px;height: 4px;border-radius: 2px;background: #b69b6e;}
+
+
+/* 现在开通你将获得以下权益 */
+.advance { background:url(img/cdx-vip-01.jpg) no-repeat center; width:100%; height: 479px;padding-top: 79px;color: #fff;}
+.advance ul li {float: left;width: 210px;padding-right: 37px;text-align: center;font-size: 14px;}
+.advance ul li:last-child {padding-right: 0px;}
+.advance ul li .img-wrap {display: inline-block;height: 117px;width: 160px;padding-top: 43px;margin-bottom: 18px;border-radius: 50%; background:#ddb874;}
+.advance ul li i {display: inline-block;height: 74px;width: 74px;background: url(img/cdx-vip-icon.png) no-repeat 0 0;}
+.advance ul li .img-shop {background-position: -129px 1px;}
+.advance ul li .img-product {background-position: -128px -74px;}
+.advance ul li .img-faith {background-position: -129px -148px;}
+.advance ul li .img-sale {background-position: -129px -222px;}
+.advance ul li .img-jewel { background-position: -129px -296px;}
+.advance ul li .txt {margin-bottom: 10px;font-size: 20px;color: #ebe9e6;}
+.advance ul li p {color: rgba(255,255,255,.7);}
+
+
+/* 各类套餐 */
+.m-table {padding-top: 83px;color:#262626;}
+.m-table .left {float: left;width: 460px;background: #f5f5f5;border-top-left-radius: 16px;border-bottom-left-radius: 16px;margin-top: 40px;}
+.m-table .grid-head {width: 240px;text-align: right;border-top-left-radius: 16px; float:left;}
+.m-table .grid-th {padding: 138px 40px 20px;font-weight: 700;font-size: 16px;line-height: 22px;}
+.m-table .grid-head .grid-head-list {padding-left: 40px;padding-right: 40px;font-size: 14px;line-height: 47px;}
+.m-table .grid-head li {border-bottom: 1px solid #ececec;text-align: right;}
+.m-table .grid-normal {width: 220px;overflow: hidden;padding-bottom: 30px;background: #eaecee;text-align: center;}
+.m-table .grid-normal .grid-title {padding-top: 26px;}
+.m-table .grid-title {font-size: 16px;font-weight: 600; }
+.m-table .price {font-size: 14px;}
+.m-table .price .em {font-size: 20px;font-weight: 600;}
+.m-table .grid-normal .grid-button { background-repeat: repeat-x; background-image: linear-gradient(to bottom,#b1bfce,#d7dde9);}
+.m-table .grid-button {width: 120px;height: 36px;margin-top: 12px;margin-bottom: 28px;display: inline-block;line-height: 36px;border-radius: 18px;font-size: 16px; color:#262626;}
+.m-table .table-list {padding-top: 20px;line-height: 48px;text-align: center;font-weight: 700;font-size: 14px;border-top: 1px solid rgba(237, 238, 240, .3);}
+.m-table .grid-v1 { width: 280px; padding-bottom: 70px; background-color: #fcf0de;}
+.m-table .grid-v1, .grid-v2, .grid-v3 {float: left;text-align: center;border-radius: 16px;overflow: hidden;}
+.m-table .grid-v1 .title-line {height: 10px;margin-bottom: 53px;background-image: linear-gradient(92deg,#9c8153,#fce2a2);}
+.m-table .grid-v1 .grid-title {font-size: 18px;line-height: 25px;}
+.m-table .grid-v1 .grid-button, .grid-v2 .grid-button, .grid-v3 .grid-button { background-image: linear-gradient(to bottom,#9c8153,#fce2a2);}
+.m-table .table-list span {font-weight: 400;font-size: 12px;display: inline-block;line-height: 17px;vertical-align: middle;color: #555;}
+.m-table .table-list span b { color:#262626;}
+.m-table .grid-v2 { width: 240px; padding-top: 46px; padding-bottom: 50px; margin-top: 20px; border-top-left-radius: 0; border-bottom-left-radius: 0; background-color: #e7d4b5;}
+.m-table .grid-v3 {width: 220px;padding-top: 26px;padding-bottom: 30px;margin-top: 40px;border-top-left-radius: 0;border-bottom-left-radius: 0;background-color: #d4be9e;}
+
+
+
+/* -------------- */
+.m-img {height: 124px;padding-top: 76px;margin-top: 100px;text-align: center;background: #4c4945 url(img/cdx-vip-002.jpg) no-repeat center 0;}
+.m-img span { font-size: 24px;color: #dcc59f;}
+.m-img .button {display: inline-block;margin-left: 60px;height: 48px;width: 180px;line-height: 48px;border-radius: 24px;text-align: center;font-size: 18px;background-color: #f6544b;background-image: linear-gradient(105deg,#f6544b,#f77063);color: #fff;}
+
+/* -------------- */
+.m-case {padding-top: 80px;padding-bottom: 110px;background: #f1f0ec url(img/cdx-vip-003.jpg) no-repeat center 0;}
+.m-case .mod-title {margin-bottom: 104px;}
+.m-case .tab {float: left;width: 900px;height: 360px;}
+.m-case .tab, .m-case .gdbody {background: #fff;border-radius: 16px;box-shadow: 0 0 15px 0 rgba(0,0,0,.05);overflow: hidden;}
+.m-case .tab .qc-head {width: 160px;height: 360px;float: left;background-repeat: repeat-x;background-image: linear-gradient(to top,#cebb85,#e7d4a7);}
+.m-case .tab .qc-head {padding-top: 34px;padding-left: 20px;}
+.m-case .tab .qc-head li {height: 60px; margin-bottom: 18px;}
+.m-case .tab .qc-head li .lo-q1 { height: 48px; width: 48px; text-align: center; padding-left: 36px; padding-top: 6px;}
+.m-case .tab .qc-head li.current {background: #fff;border-radius: 30px 0 0 30px;}
+.m-case .tab .qc-body {padding: 40px 60px 0;overflow: hidden; float:left; width:600px;}
+.m-case .tab .qc-body dl .head-db {height: 88px;position: relative;margin-bottom: 40px;border-bottom: 1px solid #efefef;}
+.m-case .tab .qc-body dl .head-db .logo-bd-01 {width: 48px; margin-right: 10px; float:left;}
+.m-case .tab .qc-body dl .head-db .name {line-height: 48px;height: 48px;width: 380px;overflow: hidden;font-size: 20px; float:left;}
+.m-case .tab .qc-body dl .head-db .cate {padding: 0 6px;margin-right: 11px;position: absolute;top: 14px;right: 96px;line-height: 20px;border-radius: 2px;border: 1px solid #6a6a6a;}
+.m-case .tab .qc-body dl .head-db .vip {position: absolute;right: 0;top: 15px;line-height: 18px;font-size: 14px;padding-left: 10px;border-left: 1px solid #d5d5d5;}
+.m-case .tab .qc-body dl p {font-size: 14px;line-height: 26px;color: #555;}
+.m-case .gdbody {width: 220px;height: 332px;float: right;padding: 28px 30px 0;}
+.m-case .gdbody h3 { margin-bottom: 20px; font-size: 16px; font-weight: 600; color:#262626;}
+.m-case .gdbody ul li:before {content: '';height: 30px;width: 2px;position: absolute;left: 4px;top: 15px;background: #efebe5; display:block;}
+.m-case .gdbody ul li:after { content: '';position: absolute;left: 0;top: 10px;height: 6px;width: 6px;border: 2px solid #b69b6e;border-radius: 5px;background: #fff;}
+.m-case .gdbody ul li { width:220px; height:30px; line-height:30px; font-size:14px; padding-left:30px; position:relative; color:#555;}
+
+
+.m-qa {padding-top: 80px;margin-bottom: 95px;}
+.m-qa .qa { float: left;width: 1000px;border-right: 1px solid #efefef;}
+.m-qa .qa-item { position: relative; padding-left: 28px;}
+.m-qa .qa ul li { position:relative; margin-bottom:20px; padding-left:30px;}
+.m-qa .qa ul li i {position: absolute;left: 0;top: 8px;height: 18px;width: 18px;border-radius: 9px;background: #b69b6e;color: #fff;text-align: center;line-height: 18px;}
+.m-qa .qa ul li span {font-size: 18px;line-height: 2;}
+.m-qa .qa ul li p {font-size: 14px;line-height: 36px;color: #555;}
+.m-qa .qa ul li p a {color: #9e8254;text-decoration: underline;}
+.m-qa .qa ul li p a:hover {color: #9e8254;font-weight:600; text-decoration: none;}
+.m-qa .help-nav {float: left;padding-left: 60px;}
+.m-qa .help-nav h3 {padding-top: 17px;margin-bottom: 17px;font-size: 18px;font-weight: 600;}
+.m-qa .help-nav h3 a { color:#9e8254;}
+.m-qa .help-nav li {font-size: 14px;line-height: 36px;}
+.m-qa .help-nav li:before { content:""; display:block; width:5px; height:4px; float:left; background:#dcdcdc;margin: 16px 10px 0 0;border-radius: 50%;}
+.m-qa .help-nav li a {color: #262626;}
+.m-qa .help-nav li:hover a {color: #9e8254; font-weight:600;}
\ No newline at end of file
diff --git a/skin/m15dt8blue/brand.css b/skin/m15dt8blue/brand.css
new file mode 100644
index 0000000..ae1865e
--- /dev/null
+++ b/skin/m15dt8blue/brand.css
@@ -0,0 +1,43 @@
+@charset "utf-8";
+
+/*品牌幻灯*/
+.b-ad{float:left;width:850px;overflow:hidden}
+.b-ad img{width:850px;height:400px;}
+.b-new{overlfow:hidden;float:right;overflow:hidden;width:350px;}
+
+.b-new .qc-head{height:40px;clear:both;font-size:16px;line-height:39px;text-align:center;padding:0px 0px;border:#e1e1e1 1px solid;border-top:#1db3c9 3px solid;border-right:#e3e3e3 1px solid; background:#f7f7f7 url(img/l.jpg) no-repeat right;border-bottom:none}
+.b-new .qc-head li{float:left;list-style-type:none;font-weight:normal;width:50%;border-bottom:#e1e1e1 1px solid;cursor:pointer }
+.b-new .qc-head li.current{font-weight:bold;border-bottom:#fff 1px solid;background:#ffffff url(img/l.jpg) no-repeat right}
+.b-new .qc-head li.current a{color:#ff7200}
+.b-new .qc-body dl{overflow:hidden;padding:0px 15px;border:#e1e1e1 1px solid;border-top:none;}
+.past-box{background-color:#fff; overflow:hidden;border:#eee 1px solid}
+.past-box dt{line-height:40px;font-size:16px;padding:0px 15px;eight:40px;font-weight:bold;color:#1db3c9; border-bottom:#eee 1px solid}
+.past-box dt span{float:right;font-size:14px;}
+.past-box img{width:120px;height:40px;border:#e3e3e3 1px solid; padding:5px}
+.past-box ul li {padding:20px 0px;height:78px;border-bottom:#efefef 1px solid; position:relative;float:left;width:50%; text-align:center;overflow:hidden}
+.past-box p{font-size:14px;line-height:20px;margin-top:5px;height:20px; overflow:hidden}
+.past-box ul li:nth-child(5){border-bottom:none}
+.past-box ul li:nth-child(6){border-bottom:none}
+.past-box ul li ins{text-decoration:none; line-height:20px;font-size:14px;color:#888}
+.past-box ul li em{float:right}
+.past-box ul li font{color:#ff4200;}
+.past-box ul li a:hover img{opacity:.9;filter:alpha(opacity=90)}
+.past-box ul li div{ position:absolute; bottom:40px;left:112px;}
+
+/*推荐品牌*/
+.brand-list {background: #fff; box-shadow: rgba(227,227,227,.5) 0 0 6px; overflow: hidden;}
+.brand-list ul {overflow: hidden;}
+.brand-list li {float: left; width: 199px; padding:0px 0px;height: 100px; border:#E9E9E9 solid ; border-width: 0 0 1px 1px; overflow: hidden;}
+.brand-list li a {display:block; position: relative; height: 100%; text-align: center}
+.brand-list li a img {margin: 20px 10px; width:128px;}
+.brand-list li a p {position: absolute; left: 0px; bottom: -23px; display: block; height: 22px; width: 100%; line-height: 22px;transition: all 0.5s;-webkit-transition: all 0.5s;-ms-transition: all 0.5s;-moz-transition: all 0.5s;-o-transition: all 0.5s;}
+.brand-list li a p span {display: block; position: relative; width: 100%; line-height: 22px; text-align: center; font-size: 13px; color: #fff; z-index: 1;}
+.brand-list li a p::after {background: #000; display: block; content: ""; width: 100%; height: 22px; margin-top: -22px; opacity: 0.5; filter: alpha(opacity=50)}
+.brand-list li a:hover p {bottom: 0}
+
+
+.i-title{font-size:28px;color:#000;height:60px;overflow:hidden; text-align:center; position:relative}
+.i-title b{display:block; background:#f5f5f5;width:250px; text-align:center; font-weight:400; position:absolute; top:0px; left:535px; z-index:10}
+.i-title b.white{background:white}
+.i-title .ch-title {width: 325px;height: 2px;background: #333;margin: 10px auto;-webkit-transition: width .3s linear;-moz-transition: width .3s linear;-ms-transition: width .3s linear;-o-transition: width .3s linear;transition: width .3s linear;position:absolute;top:10px;left:500px;}
+
diff --git a/skin/m15dt8blue/buy.css b/skin/m15dt8blue/buy.css
new file mode 100644
index 0000000..fc7e55b
--- /dev/null
+++ b/skin/m15dt8blue/buy.css
@@ -0,0 +1,169 @@
+@charset "utf-8";
+@font-face {
+ font-family: 'iconfont';
+ src: url('fonts/iconfont.eot');
+ src: url('fonts/iconfont.eot?#iefix') format('embedded-opentype'),
+ url('fonts/iconfont.woff2') format('woff2'),
+ url('fonts/iconfont.woff') format('woff'),
+ url('fonts/iconfont.ttf') format('truetype'),
+ url('fonts/iconfont.svg#iconfont') format('svg');
+}
+
+.iconfont {
+ font-family: "iconfont" !important;
+ font-size: 8px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+html{background:#f2f2f2;}
+/*幻灯广告区域*/
+.m0{width:100%; position:relative; z-index:0}
+
+.slider{z-index:1;overflow:hidden;width:100%; position:relative}
+.slider_stage li{height:400px}
+.slider_stage a{ display:block; width:100%;height:400px; }
+.slider_stage { width:100%; height:400px; overflow: hidden;}
+.prev,.next{ display:block; width:38px; height:84px; position:absolute; top:50%; margin-top:-42px; z-index:10; cursor:pointer;}
+.prev1,.next1{ background:url(img/header_icon.png) no-repeat; display:none;}
+.prev:focus,.next:focus{ outline:none}
+.prev{ left:50%; margin-left:-600px;background-position:-312px -3px;}
+.next{ right:50%; margin-right:-600px;background-position:-312px -87px;}
+.slider:hover .prev1,.slider:hover .next1{ display:block }
+.slider-menu-1 { position: absolute;left: 50%;bottom: 20px;width: 750px;height: 24px;margin-left: -400px;text-align: center;z-index: 50; }
+.slider-menu-1-box { width:750px; margin:0 auto;}
+.slider-menu-1 ul { padding-left:0px; text-align:center;}
+.slider-menu-1 ul li { position:relative; display:inline-block; *display:inline; *zoom:1;}
+.slider-menu-1 ul li a { display:block; border:#efefef 1px solid;width:12px; height:12px;margin:0px 5px; border-radius:50%}
+.slider-menu-1 ul li.current a { border:#ff4500 1px solid;background:#ff4500 }
+
+
+
+/*-----------------------------------*/
+
+
+.buy-main .buy-title { width: 100%; height: 40xp; overflow:hidden;}
+.buy-main .buy-title h2 { position: relative;height: 40px;font-size: 20px;color: #000;line-height: 40px;font-weight: 400;}
+.buy-main .buy-title h2:before { content:""; display:block; width:4px; height: 20px; background:#ff6600; float:left; margin:10px 10px 0 0;}
+.buy-main .buy-title h2 a {display:inline-block; float:right; font-size:14px; color:#999; line-height:40px;}
+.buy-main .tab-content ul { width: 1220px;}
+.buy-main .tab-content ul li { width:224px; float:left; background:#fff; margin:0 20px 20px 0; border-radius: 5px; overflow: hidden;}
+.buy-main .tab-content ul li:hover { box-shadow: 0 2px 10px rgba(204, 204, 204, .8); }
+.buy-main .tab-content ul li .tab-1 { width: 100%; height: 80px; background:#fafafa; padding-top: 20px;}
+.buy-main .tab-content ul li .tab-1 p { width: 100%;padding:0px 20px;font-size: 16px;line-height: 24px; display: block;
+-webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;}
+.buy-main .tab-content ul li .tab-1 p em { color: #ff6600;}
+.buy-main .tab-content ul li .tab-2 { width:100%; height:100px; padding-top: 15px; border-bottom: 1px solid #eee;}
+.buy-main .tab-content ul li .tab-2 p { padding-left: 20px;line-height: 24px;font-size: 14px;}
+.buy-main .tab-content ul li .tab-3 span { display: block; width: 100%; line-height: 30px;font-size: 14px;color:#ff6600;
+-webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;}
+.buy-main .tab-content ul li .tab-3 span a { width: 98px;color: #ff6600;border: 1px solid #ff6600;line-height: 30px;text-align: center;font-size: 14px; display: block; margin: 30px auto; border-radius: 3px;
+-webkit-transition: all .1s;
+ -moz-transition: all .1s;
+ -ms-transition: all .1s;
+ -o-transition: all .1s;
+ transition: all .1s;}
+.buy-main .tab-content ul li .tab-3 span a:hover { color: #fff;border: 1px solid #ff6600; background: #ff6600;}
+
+
+
+/*--------------list-buy列表页---------------------*/
+.cg-left-1 .tab-content ul { width: 1220px;}
+.cg-left-1 .tab-content ul li { width:224px; float:left; background:#fff; margin:0 20px 20px 0; border-radius: 5px; overflow: hidden; border:1px solid #ddd;
+-webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;}
+.cg-left-1 .tab-content ul li:hover { box-shadow: 0 2px 10px rgba(204, 204, 204, .8); }
+.cg-left-1 .tab-content ul li .tab-1 { width: 100%; height: 80px; background:#fafafa; padding-top: 20px;}
+.cg-left-1 .tab-content ul li .tab-1 p { width: 100%;padding:0px 20px;font-size: 16px;line-height: 24px; display: block;
+-webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;}
+.cg-left-1 .tab-content ul li .tab-1 p em { color: #ff6600;}
+.cg-left-1 .tab-content ul li .tab-2 { width:100%; height:100px; padding-top: 15px; border-bottom: 1px solid #eee;}
+.cg-left-1 .tab-content ul li .tab-2 p { padding-left: 20px;line-height: 24px;font-size: 14px;}
+.cg-left-1 .tab-content ul li .tab-3 span { display: block; width: 100%; line-height: 30px;font-size: 14px;color:#ff6600;
+-webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;}
+.cg-left-1 .tab-content ul li .tab-3 span a { width: 98px;color: #ff6600;border: 1px solid #ff6600;line-height: 30px;text-align: center;font-size: 14px; display: block; margin: 30px auto; border-radius: 3px;
+-webkit-transition: all .1s;
+ -moz-transition: all .1s;
+ -ms-transition: all .1s;
+ -o-transition: all .1s;
+ transition: all .1s;}
+.cg-left-1 .tab-content ul li .tab-3 span a:hover { color: #fff;border: 1px solid #ff6600; background: #ff6600;}
+
+
+/*-----------------------------------*/
+
+.cg-list ul {width:1050px}
+.cg-list ul li {font-size:14px;width:220px; float:left;margin-right:15px;margin-bottom:15px;border:#e3e3e3 1px solid; background:white}
+.cg-list ul li h5{font-size:14px; line-height:40px;height:50px;overflow:hidden;background:#efefef;padding:0px 10px;margin-bottom:5px;}
+.cg-list ul li p{padding:0px 10px;margin:0px;line-height:30px;height:30px;overflow:hidden;font-size:12px}
+.cg-list ul li a.baojia{background:#ff7200; display:block;width:80px;height:30px;line-height:30px; text-align:center;color:white;margin:5px 0px 15px 10px;border-radius:2px;}
+.cg-list ul li:hover{border:#ff7200 1px solid}
+.cg-list ul li:hover a.baojia{background:#ff5400}
+.cg-list ul li font{color:#777}
+.cg-list ul li b{color:#d10000}
+
+.cg-left{float: left;width:940px;overflow: hidden; padding:0px;margin-right:15px}
+.cg-right{overflow:hidden}
+
+
+.type {height:40px;line-height:40px;overflow:hidden;background:#f5f5f5;font-size:14px;}
+a.type_1:link,a.type_1:visited,a.type_1:active,a.type_1:hover {float:left;display:block;padding:0 15px 0 15px;background:#1A88E1;color:white;font-weight:bold;}
+a.type_2:link,a.type_2:visited,a.type_2:active {float:left;display:block;padding:0 15px 0 15px;border-right:#E2F0FB 1px solid;}
+a.type_2:hover {background:#1A88E1;color:#FFFFFF;}
+
+.buy-list{padding:10px 15px;border:#eee 1px solid;overflow:hidden; background:white}
+.buy-list ul li{line-height:45px;height:50px;overflow:hidden;font-size:16px;background:url(image/dot.png) no-repeat 0px 19px;padding-left:12px;border-bottom:#f5f5f5 1px solid}
+.buy-list ul li em{float:right;font-size:14px;color:#888;font-style:normal}
+.buy-list ul li:hover{background:#f5f5f5 url(image/dot.png) no-repeat 0px 19px;}
+.buy-list ul li span{color:red;font-weight:bold}
+
+.buy_one {background:white;}
+.buy_one h1{font-size:22px;line-height:40px;padding:15px 20px; border-bottom:#f1f1f1 1px solid}
+.buy_one h1 span{float:right}
+.buy_one h1 span a{background:#ff7200;color:white;width:100px;display:block;font-size:16px;text-align:center;border-radius:3px}
+.buy_one h1 span a:hover{ background:#ff5400}
+.buy_one dl{padding:15px 20px; overflow:hidden}
+.buy_one dl li{float:left;width:400px;line-height:30px;font-size:14px}
+.buy_two {background:white;margin-top:15px}
+.buy_two h2{font-size:18px;line-height:30px;padding:10px 20px; border-bottom:#f1f1f1 1px solid;}
+.buy_two dl{padding:20px 20px 15px 20px;font-size:16px; line-height:30px; overflow:hidden}
+.buy_two dl li{float:left;margin-right:20px;font-weight:bold;color:#ff7200;width:200px;line-height:40px;}
+.buy_two dl li.xm{background:url(img/login.png) no-repeat 0px 7px;padding-left:38px}
+.buy_two dl li.sj{background:url(img/sj.png) no-repeat 0px 7px;padding-left:38px}
+.b-blue{width:240px;height:40px;background:#ff9c00;text-align: center;line-height:40px;font-size:16px;border-radius:5px;cursor:pointer}
+.b-blue:hover{background:#ff8500}
+.b-blue a{color:white}
+
+
+.buy_three {background:#fff;margin-top:15px}
+.buy_three h2{font-size:18px;line-height:30px;padding:10px 20px; border-bottom:#eee 1px solid;}
+.buy_three dl{padding:25px 0px 10px 25px;font-size:16px; line-height:25px; overflow:hidden}
+.buy_three dl li{float:left;width:245px;background:#f9f9f9;height:150px;margin-bottom:20px;padding:15px 15px;margin-right:20px;}
+.buy_three dl li h3{font-size:14px;height:40px;line-height:20px;overflow:hidden}
+.buy_three dl li p{font-size:14px}
+.buy_three dl li p a{background:#ff5837;display:block;height:26px;width:80px; text-align:center;color:white;border-radius:3px;margin-top:8px}
+.buy_three dl li p a:hover{background:#d10000}
+.buy_three dl dt{border-bottom:#eee 1px dotted;height:35px;margin-bottom:10px;font-size:14px;color:#d10000}
+
+
+.buy_right{width:280px; float:right;overflow:hidden}
+
+.buy_right_one h2{font-size:18px;border-bottom:#eee 1px solid;height:35px;}
+.buy_right_one{background:#fff;padding:10px;font-size:14px;line-height:23px;}
+.buy_right_one span{padding-right:10px}
+
+
+.rent-right{width:240px;float:right;overflow:hidden}
+.sale-rec{padding:10px 20px;overflow:hidden;background:white;}
+.sale-rec h2{font-size:15px;line-height:20px;height:33px;color:#555}
+.sale-rec h2 span{float:right;font-weight:normal;font-size:6px;font-family:"ËÎÌå";color:#dadada}
+.sale-rec ul li{ float:left;font-size:12px;margin:0px 0px 18px 0px;width:200px;overflow:hidden;}
diff --git a/skin/m15dt8blue/cart.css b/skin/m15dt8blue/cart.css
new file mode 100644
index 0000000..4d79260
--- /dev/null
+++ b/skin/m15dt8blue/cart.css
@@ -0,0 +1,19 @@
+.cart-foot {height:48px;line-height:48px;color:#666666;margin-top:20px;padding-left:20px;}
+.cart-foot p {height:48px;text-align:right;margin:0 20px 0 0;}
+.cart-foot input {width:96px;height:48px;line-height:48px;border:none;background:#FF6600;color:#FFFFFF;font-size:20px;text-align:center;padding:0;letter-spacing:2px;cursor:pointer;}
+.cart-foot input:hover {background:#F22D00;}
+
+.cart-msg {padding:96px;text-align:center;font-size:16px;}
+.cart-promo {line-height:22px;background:#FFDEDF;text-align:center;color:#DF3033;border-left:#DF3033 1px dotted;border-right:#DF3033 1px dotted;border-top:#DF3033 1px solid;border-bottom:#DF3033 1px solid;}
+.cart-promo:hover {background:#FFFFFF;}
+
+.cart-step {padding:20px 10px;background: #fff;}
+.cart-step div {font-size:14px;font-weight:bold;line-height:20px;}
+.cart-step span {float:right;}
+.cart-step b {display:inline-block;width:20px;height:20px;text-align:center;border-radius:50%;background:#FF6600;color:#FFFFFF;margin-right:10px;}
+
+#cart_tip {width:350px;z-index:1000;position:absolute;margin:-40px 0 0 -15px;background:#FFFFFF;border:#A0BCCA 1px solid;padding:0 0 15px 0;}
+#cart_tip p {margin:0;background:#D2EDFF;padding:6px 4px 4px 6px;font-size:13px;font-weight:bold;}
+#cart_tip div {background:url('image/okay.gif') no-repeat 15px 10px;padding:15px 20px 10px 50px;font-size:13px;}
+#cart_tip span {color:#FF6600;font-weight:bold;}
+#cart_tip img {float:right;cursor:pointer;}
\ No newline at end of file
diff --git a/skin/m15dt8blue/catalog.css b/skin/m15dt8blue/catalog.css
new file mode 100644
index 0000000..aacc573
--- /dev/null
+++ b/skin/m15dt8blue/catalog.css
@@ -0,0 +1,25 @@
+/*
+ [DESTOON B2B System] Copyright (c) 2008-2020 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+.catalog_menu {height:24px;overflow:hidden;background:#FFFBE1 url('image/catalog.gif') no-repeat;border-bottom:#FF821F 1px solid;}
+
+.catalog {border:#FF821F 1px solid;}
+.catalog li {float:left;padding:0 10px 0 10px;white-space:nowrap;background:url('image/catalog_li.gif') no-repeat right center;}
+.catalog p {font-size:13px;margin:3px 3px 3px 8px;height:20px;overflow:hidden;}
+.catalog strong {color:#004499;}
+
+.catalog_letter {height:32px;overflow:hidden;font-weight:bold;font-size:13px;cursor:pointer;}
+.catalog_letter ul {margin:1px 0 0 115px;}
+.catalog_letter_li {float:left;padding:3px 7px 6px 6px;color:#FF6600;}
+.catalog_letter_on {float:left;padding:3px 7px 6px 6px;color:#FFFFFF;background:#FF6600;}
+.catalog_index {width:648px;overflow:hidden;margin:-1px 0 0 0;line-height:24px;font-size:13px;border:#BCBCBC 1px solid;background:#FAFAFA;position:absolute;z-index:100;}
+.catalog_index table {margin:10px 0 5px 15px;}
+.catalog_index div {height:7px;line-height:7px;font-size:1px;cursor:pointer;background:#DADADA url('image/catalog_close.gif') no-repeat center 2px;}
+
+.catalog_tds {line-height:20px;padding:6px 10px 6px 10px;color:#666666;}
+.catalog_tdl {width:26px;padding:10px 0 10px 0;border:#FFEDC1 1px solid;background:#FFFFE0;font-size:14px;font-weight:bold;color:#000000;text-align:center;}
+.catalog_tdr {}
+.catalog_on_1 {border-bottom:#FFD39A 1px dotted;padding:0 0 5px 0;}
+.catalog_on_2 {background:#FCFCE3;border-bottom:#FFD39A 1px dotted;padding:0 0 5px 0;}/*border:#FFD39A 2px solid;*/
+.catalog_on_2 .catalog_tdl {border:#FFF2CA 1px solid;background:#FFF2CA;color:#FF7300;}
\ No newline at end of file
diff --git a/skin/m15dt8blue/club.css b/skin/m15dt8blue/club.css
new file mode 100644
index 0000000..fa75d1c
--- /dev/null
+++ b/skin/m15dt8blue/club.css
@@ -0,0 +1,72 @@
+/*
+ [DESTOON B2B System] Copyright (c) 2008-2020 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+.top-l {width:430px;float:left;margin-right:20px;}
+.top-r {width:430px;float:right;}
+.headline h2 {text-align:center;font-size:24px;margin:16px 20px 10px 0;height:48px;line-height:48px;overflow:hidden;}
+.subline {padding:0 16px;}
+.subline li {height:32px;line-height:32px;overflow:hidden;font-size:16px;}
+.subline .f_r {font-size:12px;color:#666666;padding-left:16px;font-style:normal;float:right;}
+
+.group-cat {overflow:hidden;padding-top:6px;}
+.group-cat div {width:146px;float:left;text-align:center;}
+.group-cat img {border:#EEEEEE 1px solid;border-radius:50%;padding:2px;}
+.group-cat img:hover {border:#FF6600 1px solid;}
+.group-cat ul {padding:10px 0 20px 0;}
+.group-cat li {height:24px;line-height:24px;font-size:16px;overflow:hidden;}
+.group-cat span {color:#666666;font-size:12px;}
+
+.club-stats {height:64px;margin:20px 0;}
+.club-stats li {width:110px;float:left;font-size:16px;height:64px;line-height:32px;text-align:center;}
+.club-stats div {height:64px;border-left:#EEEEEE 1px solid;border-right:#EEEEEE 1px solid;}
+.club-stats i {font-style:normal;display:block;font-size:14px;}
+
+.club_my {background:#2389FA;}
+.club_my td {height:32px;line-height:32px;text-align:center;font-size:13px;border-right:#EEEEEE 1px solid;}
+.club_my a:link,.club_my a:visited,.club_my a:active {display:block;width:100%;height:100%;color:#FFFFFF;text-decoration:none;}
+.club_my a:hover {background:#1873DE;}
+
+.group_list p {color:#666666;margin:0;line-height:32px;}
+.group_info {border:#EEEEEE 1px solid;font-size:14px;}
+.group_title {padding:16px;}
+.group_title span {padding-top:8px;}
+.group_title strong {font-size:24px;}
+.group_title img {width:30px;border-radius:50%;margin:0 10px 0 0;float:left;}
+.group_introduce {border-top:#EEEEEE 1px solid;padding:10px 16px;line-height:24px;}
+
+.group_type {padding:16px;height:32px;font-size:14px;}
+a.group_type_1:link,a.group_type_1:visited,a.group_type_1:active,a.group_type_1:hover {float:left;display:block;line-height:32px;margin-right:20px;border-bottom:#0e66b1 2px solid;color:#0e66b1;}
+a.group_type_2:link,a.group_type_2:visited,a.group_type_2:active {float:left;display:block;line-height:32px;margin-right:20px;}
+a.group_type_2:hover {border-bottom:#0e66b1 2px solid;color:#0e66b1;}
+
+a.group_post:link,a.group_post:visited,a.group_post:active {float:left;display:block;line-height:24px;padding:0 16px;border-radius:4px;margin-left:16px;background:#0e66b1;color:#FFFFFF;letter-spacing:2px;font-size:12px;}
+a.group_post:hover {background:#0e66b1;}
+
+
+.club_list div {height:32px;line-height:32px;overflow:hidden;padding:0 30px 0 0;font-size:16px;}
+.club_list em {color:#225588;font-style:normal;font-family:Arial;}
+.club_list p {color:#999999;margin:4px 0 0 0;font-family:Arial;}
+
+.club_quote {background:#F5F5F5 url('image/club_quote_a.gif') no-repeat 10px 10px;margin:10px 0 10px 0;font-size:12px;padding:10px;}
+.club_quote div {display:inline-block;padding:5px 40px 5px 40px;background:url('image/club_quote_b.gif') no-repeat right bottom;line-height:20px;}
+.club_quote p {margin:0;text-indent:0;}
+.club_quote a:link,.club_quote a:visited,.club_quote a:active {color:#555555;text-decoration:none;}
+.club_quote a:hover {color:#FF6600;}
+.club_break {display:none;}
+
+.club_show {}
+.club_show table {width:100%;border-collapse:collapse;border-spacing:0;}
+.club_show_l {width:200px;border-right:#F5F5F5 1px solid;}
+.club_show_l li {padding:16px 0 0 0;text-align:center;}
+.club_info {padding:10px;border-bottom:#F5F5F5 1px solid;color:#999999;}
+.club_avatar {width:96px;height:96px;}
+
+.club_show_btn {position:absolute;margin:2px 0 0 1028px;}
+.club-btn-chat,.club-btn-post,.club-btn-reply {display:inline-block;line-height:32px;padding:0 16px 0 32px;color:#FFFFFF;letter-spacing:2px;font-size:14px;font-weight:normal;}
+.club-btn-chat {background:#F06C00 url('image/ico-club-chat.png') no-repeat 10px center;}
+.club-btn-chat:hover {background:#E75000 url('image/ico-club-chat.png') no-repeat 10px center;}
+.club-btn-post {background:#0075A8 url('image/ico-club-post.png') no-repeat 10px center;}
+.club-btn-post:hover {background:#00679A url('image/ico-club-post.png') no-repeat 10px center;}
+.club-btn-reply {background:#F06C00 url('image/ico-club-reply.png') no-repeat 10px center;}
+.club-btn-reply:hover {background:#E75000 url('image/ico-club-reply.png') no-repeat 10px center;}
\ No newline at end of file
diff --git a/skin/m15dt8blue/comment.css b/skin/m15dt8blue/comment.css
new file mode 100644
index 0000000..b21abbd
--- /dev/null
+++ b/skin/m15dt8blue/comment.css
@@ -0,0 +1,54 @@
+/*
+ [DESTOON B2B System] Copyright (c) 2008-2020 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+/* global */
+.comment {padding:16px 0;margin:0 16px;border-top:#EEEEEE 1px solid;}
+.comment table {width:100%;border-collapse:collapse;border-spacing:0;}
+.comment_l {width:54px;padding:6px 0 0 0;}
+.comment_l img {border-radius:50%;}
+.comment_content {color:#333333;font-size:14px;line-height:180%;clear:both;padding:6px;}
+.comment_title {height:26px;line-height:26px;color:#1B4C7A;padding:0 6px;}
+.comment_floor {float:right;}
+.comment_top {float:right;display:inline-block;padding:0 6px;background:#FDAA00;color:#FFFFFF;border-radius:2px;}
+.comment_info {padding:6px 0 6px 6px;}
+.comment_vote {float:right;color:#666666;padding:2px 0;}
+.comment_form {background:#FAFAFA;border-radius:10px;padding:10px;margin:0 16px;}
+.comment_area {width:99%;height:70px;border:#7D96C4 1px solid;}
+.comment_input {color:#1B4C7A;}
+.comment_input span {color:red;}
+.comment_input input {border:#EEEEEE 1px solid;padding:6px;}
+.comment_time {font-size:11px;color:#666666;}
+.comment_close {padding:16px 0 0 16px;font-size:14px;color:#666666;}
+.comment_reply {padding:6px 10px;margin:0 6px;line-height:180%;border-left:#FF6600 2px solid;font-size:14px;}
+.quote{border:1px solid #EEEEEE;background:#FFFFFF;padding:10px;margin-bottom:10px;}
+.quote_title {font-size:12px;color:#1B4C7A;}
+.quote_time {font-size:11px;color:#666666;}
+.quote_floor {float:right;font-size:10px;}
+.quote_content {clear:both;}
+.stat {padding:20px 0;}
+.stat_p {height:10px;line-height:10px;background:#F2F2F2;font-size:1px;}
+.stat_p div {height:10px;line-height:10px;background:#FFA40D;border-left:#FFA40D 2px solid;float:left;}
+.c_p {cursor:pointer;}
+#face {z-index:1000;width:400px;position:absolute;margin:-300px 0 0 0;background:#FFFFFF;border:#CCCCCC 1px solid;cursor:pointer;}
+#face td {width:40px;height:40px;text-align:center;}
+#face td:hover {background:#D8E8F9;}
+#face span {float:right;}
+#face div {background:#EEEEEE;padding:0 10px;line-height:32px;}
+.face {width:26px;height:16px;cursor:pointer;}
+.face:hover {padding-left:1px;}
+.sc {text-align:right;color:#555555;font-size:16px;font-family:Verdana;font-weight:100;cursor:pointer;}
+.sc:hover {color:#FF0000;}
+.stars {width:80px;height:16px;background:url('image/star5.png') no-repeat;float:right;}
+.stars span {width:16px;height:16px;display:inline-block;float:left;cursor:pointer;}
+/* pages */
+.pages {padding:24px 0;text-align:center;font-size:12px;color:#666666;}
+.pages a:link,.pages a:visited,.pages a:active {background:#FFFFFF;border:#EEEEEE 1px solid;padding:6px;text-decoration:none;}
+.pages a:hover {background:#258CFF;border:#258CFF 1px solid;color:#FFFFFF;padding:6px;text-decoration:none;}
+.pages strong {background:#258CFF;padding:6px;border:#258CFF 1px solid;color:#FFFFFF;}
+.pages_inp {width:32px;border:#EEEEEE 1px solid;color:#666666;padding:4px;text-align:center;}
+.pages_btn {width:32px;border:#FF6600 1px solid;color:#FFFFFF;padding:4px 6px;background:#FF6600;font-weight:bold;font-size:11px;}
+.pages label {background:#FFFFFF;border:#EEEEEE 1px solid;color:#666666;padding:6px 6px;}
+.pages label em {color:red;font-weight:bold;font-style:normal;}
+.pages label span {font-weight:bold;}
+.pages cite {font-style:normal;}
\ No newline at end of file
diff --git a/skin/m15dt8blue/company.css b/skin/m15dt8blue/company.css
new file mode 100644
index 0000000..2a87628
--- /dev/null
+++ b/skin/m15dt8blue/company.css
@@ -0,0 +1,563 @@
+.menu_v16 { margin-bottom:0px;}
+
+
+.c-box{overflow:hidden; position:relative}
+.c-box dl{width:1230px}
+.c-box dt{font-size:20px;line-height:20px;color:#333;height:40px;padding-top:10px;}
+.c-box dt:before{background:#1db3c9;content:"";width:3px;height:20px;float:left;margin-right:10px}
+.c-box dt span{font-size:14px; position:absolute;top:-5px;right:0px}
+.c-box dl dd{float:left;width:228px;background:#fff;margin-right:15px;overflow:hidden;margin-bottom:16px;font-size:13px;color:gray;padding-bottom:15px}
+.c-box dl dd img{width:228px;height:180px;overflow:hidden}
+.i-image{overflow:hidden;margin-bottom:10px}
+.c-box dl dd h5{font-size:16px;color:#333;font-weight:normal;line-height:20px;height:20px;overflow:hidden;padding:5px 10px;margin-bottom:5px;}
+.c-box dl dd h5 i{font-size:12px;background:#ed2929;color:white;padding:0px 3px;border-radius:2px;display:block;float:left;margin-right:5px}
+.c-box dl dd .area{padding:0px 10px;}
+.c-box dl dd .area .company-type{padding:0 5px;height:16px;line-height:16px;border-radius:2px;font-size:12px;color:#008cee;background:#e6f4fd;margin-right:8px}
+.c-box dl dd .area font{font-size:14px;color:gray;margin-right:5px}
+.c-box dl dd .service{padding:0px 10px;margin-top:5px;margin-bottom:10px;}
+.c-box dl dd .service span{font-size:14px;color:gray}
+.c-box dl dd .go a{width: 130px;height: 32px;font-size: 16px;font-weight: 700;background: #ed2929;border-radius: 16px;text-align: center;line-height: 32px;color: #fff;margin: auto;opacity: .8;cursor: pointer;display:block}
+.icon_v16 {
+ background-image: url(img/icon-c.png);
+ display: inline-block;
+}
+
+.floor .top01 {
+ background: -o-linear-gradient(top, #3C84FF, #6BC6FF);
+ background: -webkit-gradient(linear, left top, left bottom, from(#3C84FF), to(#6BC6FF));
+ background: linear-gradient(to bottom, #3C84FF, #6BC6FF);
+}
+
+.floor .top02 {
+ background: -o-linear-gradient(top, #7633FF, #778AFF);
+ background: -webkit-gradient(linear, left top, left bottom, from(#7633FF), to(#778AFF));
+ background: linear-gradient(to bottom, #7633FF, #778AFF);
+}
+
+.floor .top03 {
+ background: -o-linear-gradient(top, #3BA8BD, #23C8CE);
+ background: -webkit-gradient(linear, left top, left bottom, from(#3BA8BD), to(#23C8CE));
+ background: linear-gradient(to bottom, #3BA8BD, #23C8CE);
+}
+
+.floor .top04 {
+ background: -o-linear-gradient(top, #E8B64A, #FBD953);
+ background: -webkit-gradient(linear, left top, left bottom, from(#E8B64A), to(#FBD953));
+ background: linear-gradient(to bottom, #E8B64A, #FBD953);
+}
+
+.floor .top05 {
+ background: -o-linear-gradient(top, #8B96B3, #ADBCD2);
+ background: -webkit-gradient(linear, left top, left bottom, from(#8B96B3), to(#ADBCD2));
+ background: linear-gradient(to bottom, #8B96B3, #ADBCD2);
+}
+
+.floor .top06 {
+ background: -o-linear-gradient(top, #BE7B93, #E2ABBC);
+ background: -webkit-gradient(linear, left top, left bottom, from(#BE7B93), to(#E2ABBC));
+ background: linear-gradient(to bottom, #BE7B93, #E2ABBC);
+}
+
+.floor .top07 {
+ background: -o-linear-gradient(top, #FF8929, #FFAD2D);
+ background: -webkit-gradient(linear, left top, left bottom, from(#FF8929), to(#FFAD2D));
+ background: linear-gradient(to bottom, #FF8929, #FFAD2D);
+}
+
+.floor .top08 {
+ background: -o-linear-gradient(top, #F44E4E, #FF7F7F);
+ background: -webkit-gradient(linear, left top, left bottom, from(#F44E4E), to(#FF7F7F));
+ background: linear-gradient(to bottom, #F44E4E, #FF7F7F);
+}
+
+.floor .top09 {
+ background: -o-linear-gradient(top, #8A86FF, #A1B3FF);
+ background: -webkit-gradient(linear, left top, left bottom, from(#8A86FF), to(#A1B3FF));
+ background: linear-gradient(to bottom, #8A86FF, #A1B3FF);
+}
+
+.floor .top010 {
+ background: -o-linear-gradient(top, #5EA08B, #74CFB2);
+ background: -webkit-gradient(linear, left top, left bottom, from(#5EA08B), to(#74CFB2));
+ background: linear-gradient(to bottom, #5EA08B, #74CFB2);
+}
+
+.floor .top011 {
+ background: -o-linear-gradient(top, #5280DE, #62ACFF);
+ background: -webkit-gradient(linear, left top, left bottom, from(#5280DE), to(#62ACFF));
+ background: linear-gradient(to bottom, #5280DE, #62ACFF);
+}
+
+.floor .top012 {
+ background: -o-linear-gradient(top, #46BE63, #55E177);
+ background: -webkit-gradient(linear, left top, left bottom, from(#46BE63), to(#55E177));
+ background: linear-gradient(to bottom, #46BE63, #55E177);
+}
+.floor .top013 {
+ background: -o-linear-gradient(top, #BE7B93, #E2ABBC);
+ background: -webkit-gradient(linear, left top, left bottom, from(#BE7B93), to(#E2ABBC));
+ background: linear-gradient(to bottom, #BE7B93, #E2ABBC);
+}
+.floor .top014 {
+ background: -o-linear-gradient(top, #FF8929, #FFAD2D);
+ background: -webkit-gradient(linear, left top, left bottom, from(#FF8929), to(#FFAD2D));
+ background: linear-gradient(to bottom, #FF8929, #FFAD2D);
+}
+.floor .top015 {
+ background: -o-linear-gradient(top, #BE7B93, #E2ABBC);
+ background: -webkit-gradient(linear, left top, left bottom, from(#BE7B93), to(#E2ABBC));
+ background: linear-gradient(to bottom, #BE7B93, #E2ABBC);
+}
+
+.floor .top016 {
+ background: -o-linear-gradient(top, #FF8929, #FFAD2D);
+ background: -webkit-gradient(linear, left top, left bottom, from(#FF8929), to(#FFAD2D));
+ background: linear-gradient(to bottom, #FF8929, #FFAD2D);
+}
+
+.floor .top017 {
+ background: -o-linear-gradient(top, #F44E4E, #FF7F7F);
+ background: -webkit-gradient(linear, left top, left bottom, from(#F44E4E), to(#FF7F7F));
+ background: linear-gradient(to bottom, #F44E4E, #FF7F7F);
+}
+
+.floor .top018 {
+ background: -o-linear-gradient(top, #8A86FF, #A1B3FF);
+ background: -webkit-gradient(linear, left top, left bottom, from(#8A86FF), to(#A1B3FF));
+ background: linear-gradient(to bottom, #8A86FF, #A1B3FF);
+}
+
+
+.masonry {
+ column-count: 2;column-gap: 0;width:1220px
+}
+
+
+
+.floor{overflow:hidden;margin-bottom:16px;margin-top:10px}
+.floor .left {width:228px;float:left;height:595px;margin-right:15px;}
+.floor .left h2 { display: block;height: 50px;line-height: 50px;font-size: 16px;padding: 0 10px;background-color: rgba(0, 0, 0, .3);}
+.floor .left h2 a { color:#fff; margin-left:10px;}
+.floor .left h2 i { color:#fff;}
+.floor .left ul{padding:10px;overflow:hidden}
+.floor .left ul li a{border-radius:15px;padding:8px 0px; display:block;margin:10px 5px 0; text-align:center;font-size:14px;;background:white}
+.floor .right {overflow:hidden;}
+.floor .right .c-box dl{width:1110px}
+
+.industry-bar {position:fixed;top:220px;left:50%;margin-left:-730px;width:120px;display:none;z-index:1000;background:white;}
+.industry-bar.hover {display:block}
+.industry-bar h5 {height:26px;line-height:26px;padding:5px 0;background:#048ca0;text-align:center;color:#fff}
+.industry-bar ul {background:#fff}
+.industry-bar li {padding:8px 8px;line-height:20px;margin:0 auto;text-align:center;border-bottom:#eee 1px solid}
+.industry-bar li a {display:block;}
+.industry-bar li.current {color:#fff;}
+.industry-bar li.current a {color:white}
+.industry-bar li.current {background:#1db3c9}
+
+.com-box-list{overflow:hidden}
+.com-box-list ul{width:900px}
+.com-box-list ul li{float:left;background:white;padding:15px;overflow:hidden;border:#eee 1px solid;width:378px;margin-right:20px;margin-bottom:20px;}
+.c-img{float:left;margin-right:10px;}
+.c-img img{width:112px;height:112px;}
+.c-info{overflow:hidden;color:#999;font-size:14px;}
+.com-box-list ul li:hover{box-shadow: 0px 0px 10px rgba(0,0,0,0.2);}
+.com-box-list ul li:hover .c-contact a{display:block;border:#1db3c9 1px solid;width:60px;font-size:13px;text-align:center;padding:5px 10px;background:#1db3c9;color:white}
+.c-info h2{font-size:18px;font-weight:normal;margin-top:-5px}
+.c-info h2 a{color:#000}
+.c-info h2 a:hover{color:#1db3c9}
+.c-info span{color:#333}
+.c-contact a{display:block;border:#e3e3e3 1px solid;width:60px;font-size:13px;text-align:center;padding:5px 10px}
+.com-box-list ul li.mt10{margin-top:8px}
+.listNav{ width:1200px; height:50px; background:#fff; margin:0 auto;line-height:50px; margin-top:20px}
+.listNav .listMenu{ width:90px; height:50px; text-align:center; float:left; position:relative}
+.listNav .listMenu .province{ width:483px; height:240px; background:#fff; position:absolute; left:0px; top:70px; z-index:1000; border:1px solid #ebebeb; padding:15px 0 0 25px; text-align:left; display:none}
+.listMenu .province h3{ height:35px; line-height:35px; font-size:14px; position:relative}
+.listMenu .sanjiao{position:absolute; display:block; width:483px; height:23px; background:url(../images/sprite_global.png) no-repeat -283px -180px; z-index:1005; top:50px; left:30px; display:none;}
+.listMenu.on .sanjiao{ display:block;}
+.listMenu .province p{ height:30px; line-height:30px;}
+.listMenu .province p span{ color:#888; padding-right:10px}
+.listMenu .province p a{ margin:0 10px;}
+.listMenu .province p a:hover{color:#e02445}
+.listMenu .hotNavbox.on .province{ display:block!important;}
+.listNav .listMenuOn{ width:1100px; height:50px; float:left}
+.listNav .listMenuOn a{min-width:80px; height:50px; background:#e02445; color:#fff; display:inline-block; text-align:center; margin-right:5px; padding:0 10px;}
+.com-left{ width:930px; height:auto; float:left; }
+.com-left .com-box{ width:900px; background:#fff; margin-bottom:20px;border:#eee 1px solid; padding:20px 0 20px 30px;transition: all 0.3s ease-in-out 0s; -webkit-transition: all 0.3s ease-in-out 0s; -moz-transition: all 0.3s ease-in-out 0s; overflow:hidden}
+.com-left .com-box:hover{box-shadow:0px 0px 15px rgba(0,0,0,0.2);-webkit-box-shadow:0px 0px 15px rgba(0,0,0,0.2);-moz-box-shadow:0px 0px 15px rgba(0,0,0,0.2);}
+.com-left .com-box .com-info{ }
+.com-left .com-box .com-info h2{ font-weight:normal; font-size:18px; height:35px; line-height:35px;overflow:hidden;margin:0}
+.com-left .com-box .com-info h2 a:hover{ color:#e02445}
+.com-left .com-box .com-info h2 em{ font-size:12px; color:#e02445; border:1px solid #e02445; vertical-align:middle;/* display:inline-block;*/ padding:2px 3px; margin:0 2px;}
+.com-left .com-box .com-info h2 em.gray{color:gray;border:1px solid gray}
+.com-left .com-box .com-info h2 span {color: #e02445;font-weight:bold}
+.com-left .com-box .com-info .com-business{ height:26px; line-height:26px; margin:0px 0; color:#333; overflow:hidden}
+.com-left .com-box .com-info .com-business:after{content:""; clear:both; display:block}
+.com-left .com-box .com-info .com-business span{ display:inline-block;text-align:center;color:#999; line-height:24px; margin:0 5px;border-radius: 3px;height: 26px;overflow: hidden; vertical-align: middle }
+.com-left .com-box .com-product{overflow:hidden;margin-top:10px}
+.com-left .com-box .com-product a{ display:block; width:155px; height:180px; text-align:center; margin-right:20px; float:left; overflow:hidden;}
+.com-left .com-box .com-product a img{ width:153px; height:150px;margin-bottom:5px;border:#eee 1px solid}
+
+
+
+.com-right{ width:250px; height:auto; float:left; margin:0px 0 0 20px;}
+.com-title{ width:230px; height:49px; line-height:50px; background:#fff; border-bottom:1px solid #e7e7e7; font-size:16px; padding:0 10px;}
+.com-title span{float:right;font-size:14px}
+.com-title i {font-style:normal;color:#777;padding:0 0px 0px 3px; font-size:14px;font-weight:bold;font-family:simsun;}
+.com-box ul{ width:220px; height:auto; background:#fff; padding:10px 15px;}
+.com-box ul li{ width:220px; height:30px; line-height:30px; overflow:hidden;}
+.com-box ul li a:hover{ color:#e02445;}
+.com-box ul li a em {color: #e02445;}
+.com-box ul li .iconfont{ color:#db2242}
+.com-box{margin-bottom:20px}
+
+.w-com{width:100%; position:relative;margin-top:-20px;height:380px; overflow:hidden}
+
+
+
+
+
+
+
+
+/*ͼ*/
+.map-area{ background:white;overflow:hidden;box-shadow: 0px 0px 3px rgba(0,0,0,0.15);}
+.m-title{height:40px;font-size:22px;color:#000}
+
+#map{background:white url(img/map.gif) no-repeat left top;width: 539px;height: 447px;font-size: 12px;margin:25px 140px;float:right}
+#map h5{display: block;font-weight: normal;position: absolute;}
+.mapl a:link{display: block;background: url(img/maph1.gif) no-repeat;;color: #000;text-decoration: none;}
+.mapl a:visited{display: block;background: url(img/maph1.gif) no-repeat;color: #000;text-decoration: none;}
+.mapr a:link{display: block; background: url(img/maph1.gif) no-repeat; color: #000; text-decoration: none}
+.mapr a:visited{display: block; background: url(img/maph1.gif) no-repeat; color: #000; text-decoration: none}
+.mapl a:link{background-position: left 4px;padding-left: 20px;}
+.mapl a:visited{background-position: left 4px;padding-left: 20px;}
+.mapr a:link{padding-right: 20px; background-position: right 4px}
+.mapr a:visited{padding-right: 20px; background-position: right 4px}
+.mapl a:hover{padding-right: 20px;display: block;background: url(img/maph1.gif) no-repeat;color: #ff0000;}
+.mapl a:active,#map .mapl a.active{padding-right: 20px; display: block; background: url(img/maph1.gif) no-repeat; color: #ff0000}
+.mapr a:hover{padding-right: 20px; display: block; background: url(img/maph1.gif) no-repeat; color: #ff0000}
+.mapr a:active,#map .mapr a.active{padding-right: 20px; display: block;background: url(img/maph1.gif) no-repeat; color: #ff0000}
+#map .mapr a:hover{padding-right: 20px; background-position: right -46px;}
+#map .mapr a:active,#map .mapr a.active{padding-right: 20px; background-position: right -46px}
+#map .mapl a:hover{background-position: left -46px;padding-left: 20px;}
+#map .mapl a:active,#map .mapl a.active{background-position: left -46px;padding-left: 20px;}
+#map a.red{font-weight: bold;color: #e60000!important;}
+#map .xhmap1{margin: 162px 0px 0px 396px;}
+#map .xhmap2{margin: 280px 0px 0px 458px;}
+#map .xhmap3{margin: 176px 0px 0px 408px;}
+#map .xhmap4{margin: 290px 0px 0px 310px;}
+#map .xhmap5{margin: 185px 0px 0px 365px;}
+#map .xhmap6{margin: 204px 0px 0px 328px;}
+#map .xhmap7{margin: 155px 0px 0px 255px;}
+#map .xhmap8{margin: 138px 0px 0px 433px;}
+#map .xhmap9{margin: 110px 0px 0px 465px;}
+#map .xhmap10{margin: 69px 0px 0px 479px;}
+#map .xhmap11{margin: 255px 0px 0px 435px;}
+#map .xhmap12{margin: 296px 0px 0px 445px}
+#map .xhmap13{margin: 271px 0px 0px 410px;}
+#map .xhmap14{margin: 335px 0px 0px 425px;}
+#map .xhmap15{margin: 317px 0px 0px 395px;}
+#map .xhmap16{margin: 206px 0px 0px 383px}
+#map .xhmap17{margin: 245px 0px 0px 367px;}
+#map .xhmap18{margin: 277px 0px 0px 357px}
+#map .xhmap19{margin: 317px 0px 0px 350px;}
+#map .xhmap20{margin: 365px 0px 0px 376px;}
+#map .xhmap21{margin: 365px 0px 0px 315px;}
+#map .xhmap22{margin: 420px 0px 0px 342px}
+#map .xhmap23{margin: 293px 0px 0px 245px;}
+#map .xhmap24{margin: 332px 0px 0px 305px;}
+#map .xhmap25{margin: 359px 0px 0px 237px;}
+#map .xhmap26{margin: 265px 0px 0px 95px;}
+#map .xhmap27{margin: 240px 0px 0px 300px;}
+#map .xhmap28{margin: 232px 0px 0px 254px;}
+#map .xhmap29{margin: 214px 0px 0px 200px;}
+#map .xhmap30{margin: 204px 0px 0px 270px;}
+#map .xhmap31{margin: 155px 0px 0px 85px;}
+#map .xhmap32{margin: 355px 0px 0px 459px;}
+#map .xhmap33{margin: 383px 0px 0px 392px;}
+#map .xhmap34{margin: 393px 0px 0px 362px;}
+
+.left{padding:0px 0px;overflow:hidden;width:320px;float:left;}
+.left-box{padding:0px 0px;overflow:hidden;width:320px;background:url(img/frm-box-bg-mid.png) repeat-y}
+.left-top{background:url(img/frm-box-bg-top.png) no-repeat;width:320px;height:10px;overflow:hidden}
+.left-bottom{background:url(img/frm-box-bg-bottom.png) no-repeat;width:320px;height:10px;overflow:hidden}
+
+
+.left dl{overflow:hidden;margin-bottom:10px;padding:14px 0px 0px 30px}
+.left h3{font-size:18px;color:#000;height:30px;font-weight:normal;margin-left:30px;}
+.left h3:before{content: "";width: 4px;height: 18px;background: #1db3c9;float: left;margin:4px 10px 0px 0px;}
+.left dl h3{margin-left:0px}
+
+.left .area-row{height:25px;line-height:25px;margin-bottom:10px;padding-top:0px;margin-top:10px;}
+.left .area-row dt{float:left;margin-right:10px;height:20px;width: 43px;border:1px solid #dddddd;font-size:14px;background:#f5f5f5;text-align:center;line-height:20px;margin-top:1px;color:gray;}
+.left .area-row dd{overflow:hidden}
+.left .area-row dd a{float:left;margin-right:12px;font-size: 14px;}
+.left dl dd.hy a{float:left;font-size: 14px;width:50%;display:block;float:left;line-height:28px}
+
+
+.floor-title {height: 40px;border-bottom:#eee 1px solid;overflow:hidden;width:100%;}
+.floor-title h2 {font-size: 20px; color:#303030; font-weight: normal; float:left; position:relative;line-height:28px;overflow:hidden;height:40px;z-index:10;text-indent:10px}
+
+.floor-title>h2:before {
+ content: '';
+ position: absolute;
+ left: 0;
+ top: 5px;
+ width: 3px;
+ height: 20px;
+ background-color: #1db3c9;
+}
+.floor-title .floor-menu {height: 20px; margin: 4px 0; float:right; text-align:right}
+.floor-title .floor-menu a {display: inline-block; letter-spacing: normal; height: 20px; line-height: 20px; margin-left: 18px; font-size: 16px;}
+.floor-title .floor-menu a i {font-style:normal;color:#777;padding:0 0px 0px 5px; font-size:16px;font-weight:bold;font-family:simsun;}
+.floor-menu>.more{
+ font-size: 16px;
+ color: #666;
+
+}
+.floor-menu>.more>i{
+ top:4px;
+ width:15px;
+ height:20px;
+ margin-left:5px;
+ background-position: 0 0;
+}
+.floor-menu>.more:hover{
+ color: #e56639;
+}
+.floor-menu>.more:hover>i{
+ background-position: -20px 0;
+}
+
+.tc-gs-i{
+ position: relative;
+ display: inline-block;
+ background-image: url(img/tc-gongsi-icons.png);
+ background-repeat: no-repeat;
+}
+
+.floor-menu>.more,.floor-menu>.more>i{
+ -webkit-transition: all 0.2s ease;
+ -moz-transition: all 0.2s ease;
+ transition: all 0.2s ease;
+}
+.com-box-list{overflow:hidden}
+.com-box-list ul{width:900px}
+.com-box-list ul li{float:left;background:white;padding:15px;overflow:hidden;border:#eee 1px solid;width:378px;margin-right:20px;margin-bottom:20px;}
+.c-img{float:left;margin-right:10px;}
+.c-img img{width:112px;height:112px;}
+.c-info{overflow:hidden;color:#999;font-size:14px;}
+.com-box-list ul li:hover{box-shadow: 0px 0px 10px rgba(0,0,0,0.2);}
+.com-box-list ul li:hover .c-contact a{display:block;border:#1db3c9 1px solid;width:60px;font-size:13px;text-align:center;padding:5px 10px;background:#1db3c9;color:white}
+.c-info h2{font-size:18px;font-weight:normal;margin-top:-5px}
+.c-info h2 a{color:#000}
+.c-info h2 a:hover{color:#1db3c9}
+.c-info span{color:#333}
+.c-contact a{display:block;border:#e3e3e3 1px solid;width:60px;font-size:13px;text-align:center;padding:5px 10px}
+.com-box-list ul li.mt10{margin-top:8px}
+.listNav{ width:1200px; height:50px; background:#fff; margin:0 auto;line-height:50px; margin-top:20px}
+.listNav .listMenu{ width:90px; height:50px; text-align:center; float:left; position:relative}
+.listNav .listMenu .province{ width:483px; height:240px; background:#fff; position:absolute; left:0px; top:70px; z-index:1000; border:1px solid #ebebeb; padding:15px 0 0 25px; text-align:left; display:none}
+.listMenu .province h3{ height:35px; line-height:35px; font-size:14px; position:relative}
+.listMenu .sanjiao{position:absolute; display:block; width:483px; height:23px; background:url(../images/sprite_global.png) no-repeat -283px -180px; z-index:1005; top:50px; left:30px; display:none;}
+.listMenu.on .sanjiao{ display:block;}
+.listMenu .province p{ height:30px; line-height:30px;}
+.listMenu .province p span{ color:#888; padding-right:10px}
+.listMenu .province p a{ margin:0 10px;}
+.listMenu .province p a:hover{color:#e02445}
+.listMenu .hotNavbox.on .province{ display:block!important;}
+.listNav .listMenuOn{ width:1100px; height:50px; float:left}
+.listNav .listMenuOn a{min-width:80px; height:50px; background:#e02445; color:#fff; display:inline-block; text-align:center; margin-right:5px; padding:0 10px;}
+.com-left{ width:930px; height:auto; float:left; }
+.com-left .com-box{ width:900px; background:#fff; margin-bottom:20px;border:#eee 1px solid; padding:20px 0 20px 30px;transition: all 0.3s ease-in-out 0s; -webkit-transition: all 0.3s ease-in-out 0s; -moz-transition: all 0.3s ease-in-out 0s; overflow:hidden}
+.com-left .com-box:hover{box-shadow:0px 0px 15px rgba(0,0,0,0.2);-webkit-box-shadow:0px 0px 15px rgba(0,0,0,0.2);-moz-box-shadow:0px 0px 15px rgba(0,0,0,0.2);}
+.com-left .com-box .com-info{ }
+.com-left .com-box .com-info h2{ font-weight:normal; font-size:18px; height:35px; line-height:35px;overflow:hidden;margin:0}
+.com-left .com-box .com-info h2 a:hover{ color:#e02445}
+.com-left .com-box .com-info h2 em{ font-size:12px; color:#e02445; border:1px solid #e02445; vertical-align:middle;/* display:inline-block;*/ padding:2px 3px; margin:0 2px;}
+.com-left .com-box .com-info h2 em.gray{color:gray;border:1px solid gray}
+.com-left .com-box .com-info h2 span {color: #e02445;font-weight:bold}
+.com-left .com-box .com-info .com-business{ height:26px; line-height:26px; margin:0px 0; color:#333; overflow:hidden}
+.com-left .com-box .com-info .com-business:after{content:""; clear:both; display:block}
+.com-left .com-box .com-info .com-business span{ display:inline-block;text-align:center;color:#999; line-height:24px; margin:0 5px;border-radius: 3px;height: 26px;overflow: hidden; vertical-align: middle }
+.com-left .com-box .com-product{overflow:hidden;margin-top:10px}
+.com-left .com-box .com-product a{ display:block; width:155px; height:180px; text-align:center; margin-right:20px; float:left; overflow:hidden;}
+.com-left .com-box .com-product a img{ width:153px; height:150px;margin-bottom:5px;border:#eee 1px solid}
+
+
+
+.com-right{ width:250px; height:auto; float:left; margin:0px 0 0 20px;}
+.com-title{ width:230px; height:49px; line-height:50px; background:#fff; border-bottom:1px solid #e7e7e7; font-size:16px; padding:0 10px;}
+.com-title span{float:right;font-size:14px}
+.com-title i {font-style:normal;color:#777;padding:0 0px 0px 3px; font-size:14px;font-weight:bold;font-family:simsun;}
+.com-box ul{ width:220px; height:auto; background:#fff; padding:10px 15px;}
+.com-box ul li{ width:220px; height:30px; line-height:30px; overflow:hidden;}
+.com-box ul li a:hover{ color:#e02445;}
+.com-box ul li a em {color: #e02445;}
+.com-box ul li .iconfont{ color:#db2242}
+.com-box{margin-bottom:20px}
+
+.w-com{width:100%; position:relative;margin-top:-20px;height:380px; overflow:hidden}
+
+
+/******bandͼлģʽ---ģ*******/
+.fl{float:left}
+.bandbox-detail{
+ position: absolute;
+ left: 50%;
+ margin-left: -600px;
+ top: 0;
+ width: 1200px;
+ height: 1px
+}
+.hy-bandbox-left{
+ width: 220px;
+ height: 380px;
+ background: #253647;
+ overflow: hidden;
+ float:left
+}
+.hy-bandbox-right{
+ width: 280px;
+ height: 380px;
+ background: #253647;
+ overflow: hidden;
+ float:right
+}
+.hy-bandbox-title{
+ font-size: 20px;
+ color: #fff;
+ text-align: center;
+ padding-top: 30px;
+}
+.hy-bandbox-title span{
+ font-size: 14px;
+}
+.hy-bandbox-main{
+ padding:0 14px;
+
+ margin-top: 22px;
+}
+.hy-bandbox-main li{
+ margin-bottom: 12px; width: 50%; text-align: center;
+}
+.hy-handbox-btn{
+ display: block;
+ width: 78px;
+ height: 78px;
+ border-radius: 4px;
+ text-align: center;
+ font-size: 14px;
+ color: #fff;
+ cursor: pointer;
+ margin:0 auto;
+}
+.hy-handbox-btn:hover{
+ color: #fff;
+ text-decoration: none;
+}
+.hy-handbox-btn1{
+ background: #ff7200;
+ border: 1px solid #ff8928;
+ box-shadow: 0 0 1px #FF7200;
+}
+.hy-handbox-btn2{
+ background: #f5ae1e;
+ border: 1px solid #f7be4b;
+ box-shadow: 0 0 1px #f5ae1e;
+}
+.hy-icon-zhuce{
+ width: 30px;
+ height: 32px;
+ background-position: -168px 0;
+ margin: 13px 0 6px;
+}
+.hy-icon-cabu{
+ width: 27px;
+ height: 29px;
+ background-position: -168px -38px;
+ margin: 15px 0 7px;
+}
+.hy-icon-xunzhao{
+ width: 28px;
+ height: 28px;
+ background-position: -168px -75px;
+ margin: 15px 0 8px;
+}
+.hy-icon-shenqing{
+ width: 29px;
+ height: 29px;
+ background-position: -168px -111px;
+ margin: 15px 0 7px;
+}
+.hy-bandbox-main-p{
+ font-size: 12px;
+ color: #6f7b87;
+ text-align: center;
+ line-height: 16px;
+ padding-top: 8px;
+}
+.hy-bandbox-dt{
+ position: relative;
+ width: 282px;
+ height: 110px;
+}
+.hy-bandbox-dt-bg{
+ position: absolute;
+ width: 282px;
+ height: 110px;
+ background: #fff;
+ opacity: 0.2;
+ filter: alpha(opacity=20);
+ top: 0;
+ z-index: 1;
+}
+.hy-bandbox-dtcon{
+ position: absolute;
+ padding: 15px 0 0 16px ;
+}
+.hy-dt-title{
+ border-left: 4px solid #fff;
+ padding-left: 8px;
+ font-size: 16px;
+ color: #fff;
+ line-height: 16px;
+ position: relative;
+}
+.hy-dt-title a{
+ position: absolute;
+ font-size: 12px;
+ color: #6f7b87;
+ right: 16px;
+ top: 2px;
+}
+.hy-bandbox-dtcon p{
+ font-size: 14px;
+ color: #fff;
+ margin-right: 36px;
+}
+.hy-bandbox-dtcon p span{
+ font-size: 18px;
+ color: #f5ae1e;
+ font-weight: bold;
+}
+.hy-dt-con{
+ padding: 18px 0 0 13px;
+}
+.hy-xx-con{
+ padding: 10px 15px 0 0px;
+}
+.hy-xx-con ul li{line-height:27px;height:27px;overflow:hidden;color:white}
+.hy-xx-con ul li a{color:white;}
+.hy-bandbox-xx{
+ padding: 20px 0 0 16px;
+}
+.hy-mid{width:700px;float:left;overflow:hidden}
+
+.gdbody {margin-top:10px;height:216px; overflow:hidden}
+.gdbody li {line-height:27px;font-size:12px;height:27px;overflow:hidden}
+.gdbody li a{color:white;}
+.gdbody li span{margin-right:15px;color:#999}
+
+
+
diff --git a/skin/m15dt8blue/down.css b/skin/m15dt8blue/down.css
new file mode 100644
index 0000000..a10d735
--- /dev/null
+++ b/skin/m15dt8blue/down.css
@@ -0,0 +1,105 @@
+/*
+ [DESTOON B2B System] Copyright (c) 2008-2020 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+.downinfo {padding:10px 10px 10px 10px;margin:0 10px 0 10px;border-top:#EEEEEE 1px solid;}
+.downinfo li{line-height:26px;}
+.downlist {color:#666666;padding:10px;}
+.downlist li {height:24px;line-height:24px;}
+
+.down-url {padding:10px 32px;}
+.down-url li {height:32px;line-height:32px;background:url('image/ico-download.gif') no-repeat 0 8px;padding-left:22px;font-size:16px;}
+.down-list {padding:0 10px;}
+.down-list .dl-icon {width:32px;height:32px;text-align:center;}
+.down-list .dl-title {font-size:14px;}
+.down-list .dl-title div {height:32px;line-height:32px;overflow:hidden;}
+.down-list .dl-size {width:120px;}
+.down-list .dl-date {width:80px;text-align:right;color:#666666;}
+
+/* common */
+.m {margin:auto;width:1220px;clear:both;}
+
+.m0 {width:100%;background:#F5F5F5;overflow:hidden;}
+.m0 .m {background:#F5F5F5;}
+
+.m1 {}
+.m1l {width:960px;float:left;background:#FFFFFF;}
+.m1r {width:250px;float:right;background:#FFFFFF;}
+
+.m2 {}
+.m2l {width:960px;float:left;background:#FFFFFF;}
+.m2r {width:250px;float:right;background:#FFFFFF;}
+
+.m3 {}
+.m3l {width:880px;float:left;background:#FFFFFF;}
+.m3r {width:330px;float:right;background:#FFFFFF;}
+
+.list-thumb {padding:10px;overflow:hidden;}
+.list-thumb img {border:#EEEEEE 1px solid;padding:2px;}
+.list-thumb li {height:48px;line-height:24px;overflow:hidden;padding:10px;text-align:left;}
+.list-thumb td {text-align:center;}
+.list-thumb td:hover {background:#F5F5F5;}
+
+.list-img {overflow:hidden;padding:10px 0 0 20px;}
+.list-img ul {margin:10px 24px 16px 6px;}
+.list-img li {height:48px;line-height:24px;overflow:hidden;font-size:14px;}
+.list-img p {margin:10px 10px 0 6px;}
+
+.list0 {overflow:hidden;}
+.list0 div {width:200px;float:left;}
+.list0 img:hover {border-left:#FFFFFF 1px solid;}
+
+.list1 {overflow:hidden;padding-top:20px;}
+.list1 div {width:188px;float:left;}
+.list1 img:hover {border-left:#FFFFFF 1px solid;}
+
+.list-txt {padding:0 16px;}
+.list-txt li {height:32px;line-height:32px;overflow:hidden;font-size:14px;background:url('image/li_dot.gif') no-repeat 4px center;padding-left:16px;}
+.list-txt em {font-size:12px;color:#666666;padding-left:16px;font-style:normal;float:right;}
+.list-txt .f_r {font-size:12px;color:#666666;padding-left:16px;}
+
+.list-rank {padding:0 16px;}
+.list-rank li {height:32px;line-height:32px;font-size:14px;padding:0 6px;overflow:hidden;}
+.list-rank .f_r {float:right;font-size:12px;color:#666666;padding-left:16px;}
+.list-rank em {font-size:26px;font-style:normal;color:#F34540;padding-right:10px;font-family:Georgia;}
+.list-rank i {font-size:18px;font-style:normal;color:#999999;padding-right:14px;font-family:Georgia;}
+
+.list-cate {padding:10px 20px;}
+.list-cate:after {content:"";display:block;clear:both;}
+.list-cate td {width:400px;font-size:14px;padding:10px 10px 20px 10px;}
+.list-cate td:hover {background:#F5F5F5;border-radius:10px;}
+.list-cate p {margin:0 0 10px 0;}
+.list-cate li {float:left;line-height:32px;}
+.list-cate em {font-style:normal;color:#EEEEEE;padding:0 10px;}
+.list-cate i {font-style:normal;color:#EEEEEE;padding:0 10px;}
+
+.side ul {margin:10px;}
+.side em {font-size:12px;font-style:normal;color:#999999;}
+.side a {width:90%;display:block;font-size:16px;}
+.side input {width:140px;border:#EEEEEE 1px solid;border-radius:8px;padding:8px 8px 8px 26px;font-size:14px;background:#FFFFFF url('{DT_SKIN}image/icon-search16.png') no-repeat 6px center;outline:none;margin:16px 16px 16px 32px;}
+.side input:hover {width:180px;}
+.side_li {line-height:48px;height:48px;padding-left:32px;overflow:hidden;}
+.side_li:hover {background:#F2F2F2;border-radius:10px;}
+.side_on {line-height:48px;height:48px;background:#F5F5F5;padding-left:32px;overflow:hidden;border-radius:10px;}
+.list-cate2 {padding:0 10px;overflow:hidden;}
+.list-cate2 li {width:116px;padding:0 16px;float:left;height:32px;line-height:32px;font-size:14px;overflow:hidden;}
+.list-cate2 li:hover {background:#F5F5F5;border-radius:6px;}
+.list-cate2 i {font-size:12px;font-style:normal;color:#666666;padding-left:6px;}
+
+.list-area {width:860px;padding:10px 0 10px 20px;overflow:hidden;}
+.list-area li {width:100px;float:left;height:32px;line-height:32px;font-size:14px;overflow:hidden;text-align:center;border:#EEEEEE 1px solid;margin:0 20px 20px 0;border-radius:6px;}
+.list-area li:hover {border:#FF6600 1px solid;}
+
+.list-area4 {padding:0 10px;overflow:hidden;}
+.list-area4 li {width:25%;float:left;height:32px;line-height:32px;font-size:14px;overflow:hidden;text-align:center;}
+.list-area4 li:hover {background:#F5F5F5;border-radius:6px;}
+
+.btn,.btn-green,.btn-blue,.btn-red {color:#FFFFFF;font-size:14px;width:100px;line-height:32px;border:none;border-radius:4px;text-align:center;cursor:pointer;padding:0;-webkit-appearance:none;}
+.btn{background:#FFFFFF;border:#EEEEEE 1px solid;color:#333333;}
+.btn:hover{background:#D9D9D9;border:#CDCDCD 1px solid;}
+.btn-green{background:#1AAD19;border:#18A117 1px solid;color:#FFFFFF;}
+.btn-green:hover{background:#179B16;border:#159014 1px solid;}
+.btn-blue{background:#0e66b1;border:#0e66b1 1px solid;color:#FFFFFF;}
+.btn-blue:hover{background:#0e66b1;}
+.btn-red{background:#F8F8F8;border:#C6C6C6 1px solid;}
+.btn-red:hover{background:#CE3C39;border:#BF3835 1px solid;color:#FFFFFF;}
\ No newline at end of file
diff --git a/skin/m15dt8blue/exhibit.css b/skin/m15dt8blue/exhibit.css
new file mode 100644
index 0000000..2ab22c0
--- /dev/null
+++ b/skin/m15dt8blue/exhibit.css
@@ -0,0 +1,96 @@
+
+
+.zh-banner{width:100%;height:240px; background:#fff url(img/103.jpg) no-repeat center center;box-shadow: 0 15px 20px rgba(0,0,0, .1); position:relative;padding-top:10px;}
+
+.zh-banner .left{width:200px;height:140px; background:#fe9b01; float:left; font-size:24px; text-align:center;color:#fff;box-shadow: 0 0 20px rgba(0,0,0, .1);margin-right:20px;margin-top:40px }
+.zph_bn_ct_new_f{width:100%; padding-top:20px; font-size:35px; padding-bottom:5px; position:relative}
+.zph_bn_ct_new_f_c{width:18px;height:18px; display:block; background:#fff;border-radius:50%; position:absolute;left:10px;top:10px;}
+
+.zh-banner .right{float:left;overflow:hidden;padding-top:30px;width:900px; position:relative}
+
+.zh-banner .right h2{height:45px;line-height:45px; overflow:hidden; color:#333;font-size:30px;}
+.zh-banner .right h2 a{color:#1369c0;}
+.zh-banner .right p{font-size:14px;line-height:25px}
+.zh-banner .right p b{padding:0px 4px;color:red}
+.zh-post{float:right;margin-top:-40px}
+.zh-post a{font-size:14px;padding:10px 30px; color:#fff;margin-left:20px;font-size:14px;border-radius:15px;}
+.zh-post a{background:#ff7900;}
+.zh-post a:hover{background:#ff5200;}
+
+
+.zh-item{width:100%; padding:15px 0;border-top:1px solid #eee; float:left ; position:relative}
+.zh-item:hover{box-shadow: 0 0 20px rgba(0,0,0, .1);}
+.zh-pic{width:200px;height:120px;padding: 17px 35px; float:left}
+.zh-pic img{border-radius:4px;width:200px;height:120px;}
+.zh-info{overflow:hidden;position:relative;padding-right:20px;}
+.zh-info h2{ font-size:16px; font-weight:bold; padding-top:10px; line-height:37px;}
+.zh-info h2 a{color:#1369c0}
+.zh-info b{padding:0px 4px;color:red}
+.zh-time{background:url(img/timeicon.png) no-repeat left 2px;color:#666; padding-left:20px; font-size:13px; margin-top:12px;}
+.zh-zb{background:url(img/zph_icon3.png) no-repeat left 2px;color:#666; padding-left:20px; font-size:13px; margin-top:12px;}
+.zh-add{ background:url(img/zph_icon2.png) no-repeat left 2px; color:#666; padding-left:20px; font-size:13px; margin-top:12px;}
+.zh-order{ position:absolute;right:20px;top:70px;}
+.zh-order a{width:100px;height:37px; line-height:37px; text-align:center; display:inline-block; background:#fe9901;color:#fff; margin-left:10px;border-radius:4px;font-size:14px}
+.zh-order a:hover{ background:#e7900d; text-decoration:none;color:#fff}
+.zh-order a:nth-child(2){background:#009944}
+.state{ width:63px; height:63px; position:absolute; top:0px; right:0px; z-index:10; background:url("img/zph_icon4.png") no-repeat; }
+.stateon{width:63px; height:63px; position:absolute; top:0px; right:0px; z-index:10;background:url("img/zph_icon5.png") no-repeat; }
+.stateed{width:63px; height:63px; position:absolute; top:0px; right:0px; z-index:10;background:url("img/zph_icon6.png") no-repeat; }
+
+
+
+.zh-left{width:920px;float:left;overflow:hidden}
+
+.zh-left .qc-head{height:16px;clear:both;font-size:16px;line-height:16px;text-align:center;padding:18px; background:white;overflow:hidden}
+.zh-left .qc-head li{float:left;list-style-type:none;padding:0px 20px;border-left:#EEE 1px solid;font-weight:normal; cursor:pointer;}
+.zh-left .qc-head li.current{font-weight:bold}
+.zh-left .qc-head li:nth-child(1){border-left:none}
+.zh-left .qc-body dl{overflow:hidden;background:white;padding:0 0px;}
+
+
+
+.zh-right{float:right;width:260px;overflow:hidden}
+.zh-box{background:white;overflow:hidden}
+.zh-box dt{padding:16px;font-size:16px;background:#1db3c9;color:white;text-align:center;margin-bottom:5px;}
+.zh-box ul{padding:15px;}
+.zh-box ul li{line-height:28px;font-size:14px}
+
+.zh-box dl {padding:10px 15px; position: relative;border-bottom:#eee 1px solid;overflow:hidden}
+.zh-box dl img{width:100%}
+.zh-box dl p{display: block; height: 22px; margin: 10px 0; line-height: 22px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;}
+.zh-box dl p a {font-size: 15px;}
+.zh-box dl span {height: 20px; line-height: 20px; margin-bottom: 12px; font-size: 14px; color: #A0A0A0; background:url(img/time.png) no-repeat left 0px;padding-left:20px}
+.zh-box dl .more {line-height: 20px; height: 20px; font-size: 13px; color:#6D6D6D;float:right}
+.zh-box dl .more:hover {color: #1DBFDA}
+.zh-box dl h3{display: block; height: 44px; margin: 10px 0 5px ; line-height: 22px; overflow: hidden; text-overflow: ellipsis;font-weight:normal}
+.zh-box dd {text-align:center;padding:10px 15px 15px;font-size:14px;line-height:24px}
+.zh-box a.back{display:block;text-align:center;padding:10px;font-size:14px}
+.white{background:white;overflow:hidden}
+
+.zh-left .head-txt {padding:0 6px 6px 0px;color:#000;line-height:28px;border:#e3e3e3 0px solid;margin-bottom:20px;clear:both; background:white; overflow:hidden;border-bottom:#eee 1px solid;}
+
+.exh_rec{padding:0 0 10px 0;}
+.exh_rec a{font-weight:bold;font-size:14px;}
+.exh_rec li{color:#666666;padding:0 5px 0 5px;height:23px;line-height:23px;overflow:hidden;}
+.exh_month{width: 170px;height:150px;padding:10px 0 0 15px;overflow:hidden;}
+.exh_month div{float:left;width: 43px;height:25px;line-height:25px;border:#e6e6e6 1px solid;background:url('image/pos.gif') repeat-x;margin:0 10px 10px 0;text-align:center;}
+.ctb{background:#e6e6e6; font-size:14px;}
+.ltd{width:100px;text-align:center;background:#F3F3F3;font-weight:bold;color:#333333;}
+.rtd{background:#FFFFFF;}
+.fsearch input{border:0}
+.fsearch .pd3,#fromdate,#todate{border:#e6e6e6 1px solid;}
+
+
+.recently{margin-bottom: 40px;background:white;overflow:hidden;padding-top:15px}
+
+/*按月找展会*/
+.date{margin-top: 20px;overflow: hidden;}
+.date .datename{overflow:hidden}
+.date .datename h2{float: left;width:100px;padding-bottom: 15px;border-bottom: 3px solid #1db3c9;}
+.date .datename span.dateexh{line-height: 25px;color: #333;display: inline-block;padding-bottom: 15px;border-bottom: 3px solid #1db3c9;float: left;width: 920px;font-size: 16px;}
+.date .datename span.dateexh li{float:left;margin: 0 11px;}
+.date .datename span.dateexh li.active{background:#EC5159;border-radius: 20px}
+.date .datename span.dateexh li a{color: #333;}
+.date .datename span.dateexh li a{padding:0 10px;}
+.date .datename span.dateexh li.active a{color: #ffffff;padding:0 10px}
+
diff --git a/skin/m15dt8blue/extend.css b/skin/m15dt8blue/extend.css
new file mode 100644
index 0000000..6e7bd68
--- /dev/null
+++ b/skin/m15dt8blue/extend.css
@@ -0,0 +1,157 @@
+/*
+ [DESTOON B2B System] Copyright (c) 2008-2020 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+.submit_success {background:#F1FBE8 url('image/okay.gif') no-repeat 20px center;padding:20px 20px 20px 60px;font-size:14px;margin-bottom:20px;}
+.submit_btn {background:#258CFF;color:#FFFFFF;font-size:14px;padding:5px 15px 5px 15px;border:none;}
+/* gift */
+.g_info {padding:24px;}
+.g_info li {padding:12px 6px;border-bottom:#EEEEEE 1px dotted;}
+.g_img {padding:2px;border:#EEEEEE 1px solid;}
+/* poll */
+.poll_show {padding:0 16px;text-align:center;}
+.poll_show li {height:20px;line-height:20px;overflow:hidden;padding:6px 0;}
+.poll_show td:hover {background:#F2F2F2;}
+.poll_img {border:#CCCCCC 1px solid;margin:0 0 5px 0;}
+.poll_verify {width:400px;height:120px;background:#FAFAFA;overflow:hidden;z-index:1;position:absolute;left:50%;margin:100px 0 100px -200px;display:none;}
+/* vote */
+.vote_show {padding:0 20px 20px 20px;}
+.vote_show_n {width:18px;height:18px;line-height:18px;font-size:11px;background:#258CFF;color:#FFFFFF;text-align:center;}
+.vote_show_p {height:11px;line-height:11px;background:#EDEDED;font-size:1px;}
+.vote_show_p div {height:11px;line-height:11px;float:left;}
+.vote_show_1 {background:#EA7211 url('image/vote_bg.gif') repeat-x 0 0;border-left:#EA7211 1px solid;border-right:#EA7211 1px solid;}
+.vote_show_2 {background:#AABF00 url('image/vote_bg.gif') repeat-x 0 -11px;border-left:#AABF00 1px solid;border-right:#AABF00 1px solid;}
+.vote_show_3 {background:#8B2A00 url('image/vote_bg.gif') repeat-x 0 -22px;border-left:#8B2A00 1px solid;border-right:#8B2A00 1px solid;}
+.vote_show_4 {background:#BF844A url('image/vote_bg.gif') repeat-x 0 -33px;border-left:#BF844A 1px solid;border-right:#BF844A 1px solid;}
+.vote_show_5 {background:#3A8938 url('image/vote_bg.gif') repeat-x 0 -44px;border-left:#3A8938 1px solid;border-right:#3A8938 1px solid;}
+.vote_show_6 {background:#486193 url('image/vote_bg.gif') repeat-x 0 -55px;border-left:#486193 1px solid;border-right:#486193 1px solid;}
+.vote_show_7 {background:#7DA3AE url('image/vote_bg.gif') repeat-x 0 -66px;border-left:#7DA3AE 1px solid;border-right:#7DA3AE 1px solid;}
+.vote_show_8 {background:#AE1486 url('image/vote_bg.gif') repeat-x 0 -77px;border-left:#AE1486 1px solid;border-right:#AE1486 1px solid;}
+.vote_show_9 {background:#5AB502 url('image/vote_bg.gif') repeat-x 0 -88px;border-left:#5AB502 1px solid;border-right:#5AB502 1px solid;}
+.vote_show_10 {background:#BF2146 url('image/vote_bg.gif') repeat-x 0 -99px;border-left:#BF2146 1px solid;border-right:#BF2146 1px solid;}
+/* from */
+.form {margin:10px 30px 0 30px;border:#EEEEEE 1px solid;border-bottom:none;}
+.form .f_0 {display:none;}
+.form .f_1 {width:150px;background:#F4F4F4;border-bottom:#EEEEEE 1px solid;}
+.form .f_2 {border-left:#EEEEEE 1px solid;border-bottom:#EEEEEE 1px solid;}
+.form .f_3 {float:left;padding:5px 20px 5px 0;}
+.survey {margin:10px 30px 0 30px;}
+.survey .f_0 {}
+.survey .f_1 {font-weight:bold;}
+.survey .f_2 {border-bottom:#EEEEEE 1px dotted;padding-left:30px;}
+.survey .f_3 {padding:5px 0 5px 0;}
+/* spread */
+.btn-spread {font-size:16px;font-weight:bold;letter-spacing:1px;width:136px;height:42px;line-height:42px;text-align:center;cursor:pointer;padding:0;-webkit-appearance:none;margin:6px 10px 0 0;background:#DC182B;border:#E11111 2px solid;border-radius:24px;color:#FFFFFF;}
+.btn-spread:hover {background:#C5000C;}
+.sp_input {width:360px;padding:8px;font-size:16px;border:#E11111 2px solid;color:#666666;}
+.rank_box {padding:16px 0;}
+.rank_head {padding:0 0 0 5px;height:32px;line-height:32px;overflow:hidden;border-bottom:#CCCCCC 1px dotted;font-weight:bold;font-size:14px;margin:0 0 8px 0;}
+.new_head {padding:0 0 0 10px;height:22px;line-height:22px;font-weight:bold;font-size:13px;color:#FFFFFF;background:#F8B003;}
+.new_body {padding:8px 16px;background:#FFFFFF;border:#F8B003 1px solid;}
+.new_body li {height:25px;line-height:25px;overflow:hidden;background:url('image/spread_li.gif') no-repeat 0 5px;padding:0 0 0 18px;}
+.new_body li a {font-size:13px;}
+.new_price {color:#F43111;font-weight:bold;}
+.body_n {padding:5px 5px 0 5px;}
+.head_n {background:#F43111;line-height:22px;height:22px;font-weight:bold;padding:0 0 0 10px;color:#FFFFFF;}
+.h_box {padding:0 15px 10px 15px;}
+.head_h {background:#F3B200;line-height:22px;height:22px;padding:2px 10px 0 10px;color:#FFFFFF;}
+.body_h {padding:5px 5px 0 5px;}
+.body_h li {height:22px;line-height:22px;overflow:hidden;}
+.norecord {padding:20px 0 20px 0;text-align:center;color:#666666;}
+.buy_head {margin:15px 0 0 0;padding:0 0 0 10px;height:24px;line-height:24px;font-weight:bold;font-size:13px;color:#FFFFFF;background:#F8B003;}
+.buy_body {padding:8px 15px 8px 15px;background:#FFFFFF;border:#F8B003 1px solid;}
+.buy_submit {background:#006699;color:#FFFFFF;padding:2px;font-size:13px;font-weight:bold;}
+.buy_login {padding:30px 0 50px 20px;font-size:13px;}
+.list_tb {background:#F8F9FB;}
+.list_tb h1 {padding:20px 0;font-size:16px;text-align:center;}
+.list_tb table {background:#FFFFFF;width:100%;}
+.list_tb th {background:#F1F1F1;}
+.list_dl {background:url('image/dot.gif') repeat-x 0 center;}
+
+/* common */
+.m {margin:auto;width:1220px;clear:both;}
+
+.m0 {width:100%;background:#F5F5F5;overflow:hidden;}
+.m0 .m {background:#F5F5F5;}
+
+.m1 {}
+.m1l {width:960px;float:left;background:#FFFFFF;}
+.m1r {width:250px;float:right;background:#FFFFFF;}
+
+.m2 {}
+.m2l {width:960px;float:left;background:#FFFFFF;}
+.m2r {width:250px;float:right;background:#FFFFFF;}
+
+.m3 {}
+.m3l {width:880px;float:left;background:#FFFFFF;}
+.m3r {width:330px;float:right;background:#FFFFFF;}
+
+.list-thumb {padding:10px;overflow:hidden;}
+.list-thumb img {border:#EEEEEE 1px solid;padding:2px;}
+.list-thumb li {height:48px;line-height:24px;overflow:hidden;padding:10px;text-align:left;}
+.list-thumb td {text-align:center;}
+.list-thumb td:hover {background:#F5F5F5;}
+
+.list-img {overflow:hidden;padding:10px 0 0 20px;}
+.list-img ul {margin:10px 24px 16px 6px;}
+.list-img li {height:48px;line-height:24px;overflow:hidden;font-size:14px;}
+.list-img p {margin:10px 10px 0 6px;}
+
+.list0 {overflow:hidden;}
+.list0 div {width:200px;float:left;}
+.list0 img:hover {border-left:#FFFFFF 1px solid;}
+
+.list1 {overflow:hidden;padding-top:20px;}
+.list1 div {width:188px;float:left;}
+.list1 img:hover {border-left:#FFFFFF 1px solid;}
+
+.list-txt {padding:0 16px;}
+.list-txt li {height:32px;line-height:32px;overflow:hidden;font-size:14px;background:url('image/li_dot.gif') no-repeat 4px center;padding-left:16px;}
+.list-txt em {font-size:12px;color:#666666;padding-left:16px;font-style:normal;float:right;}
+.list-txt .f_r {font-size:12px;color:#666666;padding-left:16px;}
+
+.list-rank {padding:0 16px;}
+.list-rank li {height:32px;line-height:32px;font-size:14px;padding:0 6px;overflow:hidden;}
+.list-rank .f_r {float:right;font-size:12px;color:#666666;padding-left:16px;}
+.list-rank em {font-size:26px;font-style:normal;color:#F34540;padding-right:10px;font-family:Georgia;}
+.list-rank i {font-size:18px;font-style:normal;color:#999999;padding-right:14px;font-family:Georgia;}
+
+.list-cate {padding:10px 20px;}
+.list-cate:after {content:"";display:block;clear:both;}
+.list-cate td {width:400px;font-size:14px;padding:10px 10px 20px 10px;}
+.list-cate td:hover {background:#F5F5F5;border-radius:10px;}
+.list-cate p {margin:0 0 10px 0;}
+.list-cate li {float:left;line-height:32px;}
+.list-cate em {font-style:normal;color:#EEEEEE;padding:0 10px;}
+.list-cate i {font-style:normal;color:#EEEEEE;padding:0 10px;}
+
+.side ul {margin:10px;}
+.side em {font-size:12px;font-style:normal;color:#999999;}
+.side a {width:90%;display:block;font-size:16px;}
+.side input {width:140px;border:#EEEEEE 1px solid;border-radius:8px;padding:8px 8px 8px 26px;font-size:14px;background:#FFFFFF url('{DT_SKIN}image/icon-search16.png') no-repeat 6px center;outline:none;margin:16px 16px 16px 32px;}
+.side input:hover {width:180px;}
+.side_li {line-height:48px;height:48px;padding-left:32px;overflow:hidden;}
+.side_li:hover {background:#F2F2F2;border-radius:10px;}
+.side_on {line-height:48px;height:48px;background:#F5F5F5;padding-left:32px;overflow:hidden;border-radius:10px;}
+.list-cate2 {padding:0 10px;overflow:hidden;}
+.list-cate2 li {width:116px;padding:0 16px;float:left;height:32px;line-height:32px;font-size:14px;overflow:hidden;}
+.list-cate2 li:hover {background:#F5F5F5;border-radius:6px;}
+.list-cate2 i {font-size:12px;font-style:normal;color:#666666;padding-left:6px;}
+
+.list-area {width:860px;padding:10px 0 10px 20px;overflow:hidden;}
+.list-area li {width:100px;float:left;height:32px;line-height:32px;font-size:14px;overflow:hidden;text-align:center;border:#EEEEEE 1px solid;margin:0 20px 20px 0;border-radius:6px;}
+.list-area li:hover {border:#FF6600 1px solid;}
+
+.list-area4 {padding:0 10px;overflow:hidden;}
+.list-area4 li {width:25%;float:left;height:32px;line-height:32px;font-size:14px;overflow:hidden;text-align:center;}
+.list-area4 li:hover {background:#F5F5F5;border-radius:6px;}
+
+.btn,.btn-green,.btn-blue,.btn-red {color:#FFFFFF;font-size:14px;width:100px;line-height:32px;border:none;border-radius:4px;text-align:center;cursor:pointer;padding:0;-webkit-appearance:none;}
+.btn{background:#FFFFFF;border:#EEEEEE 1px solid;color:#333333;}
+.btn:hover{background:#D9D9D9;border:#CDCDCD 1px solid;}
+.btn-green{background:#1AAD19;border:#18A117 1px solid;color:#FFFFFF;}
+.btn-green:hover{background:#179B16;border:#159014 1px solid;}
+.btn-blue{background:#e3211a;border:#e3211a 1px solid;color:#FFFFFF;}
+.btn-blue:hover{background:#e3211a;}
+.btn-red{background:#F8F8F8;border:#C6C6C6 1px solid;}
+.btn-red:hover{background:#CE3C39;border:#BF3835 1px solid;color:#FFFFFF;}
\ No newline at end of file
diff --git a/skin/m15dt8blue/fonts/demo.css b/skin/m15dt8blue/fonts/demo.css
new file mode 100644
index 0000000..a67054a
--- /dev/null
+++ b/skin/m15dt8blue/fonts/demo.css
@@ -0,0 +1,539 @@
+/* Logo 字体 */
+@font-face {
+ font-family: "iconfont logo";
+ src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
+ src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
+ url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
+ url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
+ url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
+}
+
+.logo {
+ font-family: "iconfont logo";
+ font-size: 160px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+/* tabs */
+.nav-tabs {
+ position: relative;
+}
+
+.nav-tabs .nav-more {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ height: 42px;
+ line-height: 42px;
+ color: #666;
+}
+
+#tabs {
+ border-bottom: 1px solid #eee;
+}
+
+#tabs li {
+ cursor: pointer;
+ width: 100px;
+ height: 40px;
+ line-height: 40px;
+ text-align: center;
+ font-size: 16px;
+ border-bottom: 2px solid transparent;
+ position: relative;
+ z-index: 1;
+ margin-bottom: -1px;
+ color: #666;
+}
+
+
+#tabs .active {
+ border-bottom-color: #f00;
+ color: #222;
+}
+
+.tab-container .content {
+ display: none;
+}
+
+/* 页面布局 */
+.main {
+ padding: 30px 100px;
+ width: 960px;
+ margin: 0 auto;
+}
+
+.main .logo {
+ color: #333;
+ text-align: left;
+ margin-bottom: 30px;
+ line-height: 1;
+ height: 110px;
+ margin-top: -50px;
+ overflow: hidden;
+ *zoom: 1;
+}
+
+.main .logo a {
+ font-size: 160px;
+ color: #333;
+}
+
+.helps {
+ margin-top: 40px;
+}
+
+.helps pre {
+ padding: 20px;
+ margin: 10px 0;
+ border: solid 1px #e7e1cd;
+ background-color: #fffdef;
+ overflow: auto;
+}
+
+.icon_lists {
+ width: 100% !important;
+ overflow: hidden;
+ *zoom: 1;
+}
+
+.icon_lists li {
+ width: 100px;
+ margin-bottom: 10px;
+ margin-right: 20px;
+ text-align: center;
+ list-style: none !important;
+ cursor: default;
+}
+
+.icon_lists li .code-name {
+ line-height: 1.2;
+}
+
+.icon_lists .icon {
+ display: block;
+ height: 100px;
+ line-height: 100px;
+ font-size: 42px;
+ margin: 10px auto;
+ color: #333;
+ -webkit-transition: font-size 0.25s linear, width 0.25s linear;
+ -moz-transition: font-size 0.25s linear, width 0.25s linear;
+ transition: font-size 0.25s linear, width 0.25s linear;
+}
+
+.icon_lists .icon:hover {
+ font-size: 100px;
+}
+
+.icon_lists .svg-icon {
+ /* 通过设置 font-size 来改变图标大小 */
+ width: 1em;
+ /* 图标和文字相邻时,垂直对齐 */
+ vertical-align: -0.15em;
+ /* 通过设置 color 来改变 SVG 的颜色/fill */
+ fill: currentColor;
+ /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
+ normalize.css 中也包含这行 */
+ overflow: hidden;
+}
+
+.icon_lists li .name,
+.icon_lists li .code-name {
+ color: #666;
+}
+
+/* markdown 样式 */
+.markdown {
+ color: #666;
+ font-size: 14px;
+ line-height: 1.8;
+}
+
+.highlight {
+ line-height: 1.5;
+}
+
+.markdown img {
+ vertical-align: middle;
+ max-width: 100%;
+}
+
+.markdown h1 {
+ color: #404040;
+ font-weight: 500;
+ line-height: 40px;
+ margin-bottom: 24px;
+}
+
+.markdown h2,
+.markdown h3,
+.markdown h4,
+.markdown h5,
+.markdown h6 {
+ color: #404040;
+ margin: 1.6em 0 0.6em 0;
+ font-weight: 500;
+ clear: both;
+}
+
+.markdown h1 {
+ font-size: 28px;
+}
+
+.markdown h2 {
+ font-size: 22px;
+}
+
+.markdown h3 {
+ font-size: 16px;
+}
+
+.markdown h4 {
+ font-size: 14px;
+}
+
+.markdown h5 {
+ font-size: 12px;
+}
+
+.markdown h6 {
+ font-size: 12px;
+}
+
+.markdown hr {
+ height: 1px;
+ border: 0;
+ background: #e9e9e9;
+ margin: 16px 0;
+ clear: both;
+}
+
+.markdown p {
+ margin: 1em 0;
+}
+
+.markdown>p,
+.markdown>blockquote,
+.markdown>.highlight,
+.markdown>ol,
+.markdown>ul {
+ width: 80%;
+}
+
+.markdown ul>li {
+ list-style: circle;
+}
+
+.markdown>ul li,
+.markdown blockquote ul>li {
+ margin-left: 20px;
+ padding-left: 4px;
+}
+
+.markdown>ul li p,
+.markdown>ol li p {
+ margin: 0.6em 0;
+}
+
+.markdown ol>li {
+ list-style: decimal;
+}
+
+.markdown>ol li,
+.markdown blockquote ol>li {
+ margin-left: 20px;
+ padding-left: 4px;
+}
+
+.markdown code {
+ margin: 0 3px;
+ padding: 0 5px;
+ background: #eee;
+ border-radius: 3px;
+}
+
+.markdown strong,
+.markdown b {
+ font-weight: 600;
+}
+
+.markdown>table {
+ border-collapse: collapse;
+ border-spacing: 0px;
+ empty-cells: show;
+ border: 1px solid #e9e9e9;
+ width: 95%;
+ margin-bottom: 24px;
+}
+
+.markdown>table th {
+ white-space: nowrap;
+ color: #333;
+ font-weight: 600;
+}
+
+.markdown>table th,
+.markdown>table td {
+ border: 1px solid #e9e9e9;
+ padding: 8px 16px;
+ text-align: left;
+}
+
+.markdown>table th {
+ background: #F7F7F7;
+}
+
+.markdown blockquote {
+ font-size: 90%;
+ color: #999;
+ border-left: 4px solid #e9e9e9;
+ padding-left: 0.8em;
+ margin: 1em 0;
+}
+
+.markdown blockquote p {
+ margin: 0;
+}
+
+.markdown .anchor {
+ opacity: 0;
+ transition: opacity 0.3s ease;
+ margin-left: 8px;
+}
+
+.markdown .waiting {
+ color: #ccc;
+}
+
+.markdown h1:hover .anchor,
+.markdown h2:hover .anchor,
+.markdown h3:hover .anchor,
+.markdown h4:hover .anchor,
+.markdown h5:hover .anchor,
+.markdown h6:hover .anchor {
+ opacity: 1;
+ display: inline-block;
+}
+
+.markdown>br,
+.markdown>p>br {
+ clear: both;
+}
+
+
+.hljs {
+ display: block;
+ background: white;
+ padding: 0.5em;
+ color: #333333;
+ overflow-x: auto;
+}
+
+.hljs-comment,
+.hljs-meta {
+ color: #969896;
+}
+
+.hljs-string,
+.hljs-variable,
+.hljs-template-variable,
+.hljs-strong,
+.hljs-emphasis,
+.hljs-quote {
+ color: #df5000;
+}
+
+.hljs-keyword,
+.hljs-selector-tag,
+.hljs-type {
+ color: #a71d5d;
+}
+
+.hljs-literal,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-attribute {
+ color: #0086b3;
+}
+
+.hljs-section,
+.hljs-name {
+ color: #63a35c;
+}
+
+.hljs-tag {
+ color: #333333;
+}
+
+.hljs-title,
+.hljs-attr,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-selector-attr,
+.hljs-selector-pseudo {
+ color: #795da3;
+}
+
+.hljs-addition {
+ color: #55a532;
+ background-color: #eaffea;
+}
+
+.hljs-deletion {
+ color: #bd2c00;
+ background-color: #ffecec;
+}
+
+.hljs-link {
+ text-decoration: underline;
+}
+
+/* 代码高亮 */
+/* PrismJS 1.15.0
+https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
+/**
+ * prism.js default theme for JavaScript, CSS and HTML
+ * Based on dabblet (http://dabblet.com)
+ * @author Lea Verou
+ */
+code[class*="language-"],
+pre[class*="language-"] {
+ color: black;
+ background: none;
+ text-shadow: 0 1px white;
+ font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+ text-align: left;
+ white-space: pre;
+ word-spacing: normal;
+ word-break: normal;
+ word-wrap: normal;
+ line-height: 1.5;
+
+ -moz-tab-size: 4;
+ -o-tab-size: 4;
+ tab-size: 4;
+
+ -webkit-hyphens: none;
+ -moz-hyphens: none;
+ -ms-hyphens: none;
+ hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection,
+pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection,
+code[class*="language-"] ::-moz-selection {
+ text-shadow: none;
+ background: #b3d4fc;
+}
+
+pre[class*="language-"]::selection,
+pre[class*="language-"] ::selection,
+code[class*="language-"]::selection,
+code[class*="language-"] ::selection {
+ text-shadow: none;
+ background: #b3d4fc;
+}
+
+@media print {
+
+ code[class*="language-"],
+ pre[class*="language-"] {
+ text-shadow: none;
+ }
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+ padding: 1em;
+ margin: .5em 0;
+ overflow: auto;
+}
+
+:not(pre)>code[class*="language-"],
+pre[class*="language-"] {
+ background: #f5f2f0;
+}
+
+/* Inline code */
+:not(pre)>code[class*="language-"] {
+ padding: .1em;
+ border-radius: .3em;
+ white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+ color: slategray;
+}
+
+.token.punctuation {
+ color: #999;
+}
+
+.namespace {
+ opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+ color: #905;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+ color: #690;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+ color: #9a6e3a;
+ background: hsla(0, 0%, 100%, .5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+ color: #07a;
+}
+
+.token.function,
+.token.class-name {
+ color: #DD4A68;
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+ color: #e90;
+}
+
+.token.important,
+.token.bold {
+ font-weight: bold;
+}
+
+.token.italic {
+ font-style: italic;
+}
+
+.token.entity {
+ cursor: help;
+}
diff --git a/skin/m15dt8blue/fonts/demo_index.html b/skin/m15dt8blue/fonts/demo_index.html
new file mode 100644
index 0000000..112f70a
--- /dev/null
+++ b/skin/m15dt8blue/fonts/demo_index.html
@@ -0,0 +1,15005 @@
+
+
+
+
+ IconFont Demo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Unicode
+ Font class
+ Symbol
+
+
+
查看项目
+
+
+
+
+
+
+
+
+ 更多
+ 
+
+
+
+
+ 产品
+ 
+
+
+
+
+ 地球
+ 
+
+
+
+
+ 专用车
+ 
+
+
+
+
+ 热卖
+ 
+
+
+
+
+ 消息
+ 
+
+
+
+
+ 消息
+ 
+
+
+
+
+ 电话
+ 
+
+
+
+
+ 登陆
+ 
+
+
+
+
+ 鞋子
+ 
+
+
+
+
+ 关注
+ 
+
+
+
+
+ 关注
+ 
+
+
+
+
+ 名片
+ 
+
+
+
+
+ 连接
+ 
+
+
+
+
+ 连接
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ 搜索
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ 首页 copy
+ 
+
+
+
+
+ 首页 (3)
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ 首页 未点击
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ 环保
+ 
+
+
+
+
+ 五金工具
+ 
+
+
+
+
+ 安防_警报
+ 
+
+
+
+
+ 机器人
+ 
+
+
+
+
+ 模具
+ 
+
+
+
+
+ 环保
+ 
+
+
+
+
+ 仪表
+ 
+
+
+
+
+ 五金:工具
+ 
+
+
+
+
+ 新品
+ 
+
+
+
+
+ 仪器
+ 
+
+
+
+
+ 机械
+ 
+
+
+
+
+ 安防监控
+ 
+
+
+
+
+ 电工电气_
+ 
+
+
+
+
+ 交通
+ 
+
+
+
+
+ 污水处理站监测
+ 
+
+
+
+
+ 污水泵
+ 
+
+
+
+
+ 污水处理费
+ 
+
+
+
+
+ 污水
+ 
+
+
+
+
+ 污水处理
+ 
+
+
+
+
+ dt-污水处理厂
+ 
+
+
+
+
+ 首页-咨询电话
+ 
+
+
+
+
+ 查看
+ 
+
+
+
+
+ 查看
+ 
+
+
+
+
+ home
+ 
+
+
+
+
+ home
+ 
+
+
+
+
+ home
+ 
+
+
+
+
+ home
+ 
+
+
+
+
+ 团队 线形
+ 
+
+
+
+
+ 团队
+ 
+
+
+
+
+ 团队
+ 
+
+
+
+
+ 勾
+ 
+
+
+
+
+ 勾
+ 
+
+
+
+
+ 勾
+ 
+
+
+
+
+ 勾
+ 
+
+
+
+
+ 勾
+ 
+
+
+
+
+ 勾
+ 
+
+
+
+
+ 勾
+ 
+
+
+
+
+ 询价管理
+ 
+
+
+
+
+ 采购
+ 
+
+
+
+
+ 采购主管
+ 
+
+
+
+
+ 采购
+ 
+
+
+
+
+ 采购跟踪
+ 
+
+
+
+
+ 地方特产
+ 
+
+
+
+
+ 鸡肉
+ 
+
+
+
+
+ 芒果
+ 
+
+
+
+
+ 芒果
+ 
+
+
+
+
+ 芒果
+ 
+
+
+
+
+ 鸡肉
+ 
+
+
+
+
+ 鸡肉
+ 
+
+
+
+
+ 水果
+ 
+
+
+
+
+ 家禽
+ 
+
+
+
+
+ 水果
+ 
+
+
+
+
+ 鱼
+ 
+
+
+
+
+ 鱼
+ 
+
+
+
+
+ 水果
+ 
+
+
+
+
+ 水果
+ 
+
+
+
+
+ 水果
+ 
+
+
+
+
+ 种子追溯
+ 
+
+
+
+
+ 家禽
+ 
+
+
+
+
+ 种子投资
+ 
+
+
+
+
+ 虾
+ 
+
+
+
+
+ 水果
+ 
+
+
+
+
+ 家禽
+ 
+
+
+
+
+ 小龙虾
+ 
+
+
+
+
+ 竹笋
+ 
+
+
+
+
+ 罐头
+ 
+
+
+
+
+ 竹笋
+ 
+
+
+
+
+ 虾
+ 
+
+
+
+
+ 种子
+ 
+
+
+
+
+ 鱼
+ 
+
+
+
+
+ 虾蟹类-01
+ 
+
+
+
+
+ 虾
+ 
+
+
+
+
+ 水果 copy 2
+ 
+
+
+
+
+ 虾
+ 
+
+
+
+
+ 鸡
+ 
+
+
+
+
+ 鱼
+ 
+
+
+
+
+ 手机
+ 
+
+
+
+
+ 手机
+ 
+
+
+
+
+ 手机
+ 
+
+
+
+
+ 苹果手机x细边框2
+ 
+
+
+
+
+ 手机 (3)
+ 
+
+
+
+
+ 客服
+ 
+
+
+
+
+ 客服
+ 
+
+
+
+
+ 客服
+ 
+
+
+
+
+ 05团队
+ 
+
+
+
+
+ 设计-金煌
+ 
+
+
+
+
+ 设计
+ 
+
+
+
+
+ 关于我们-开发团队
+ 
+
+
+
+
+ 我的团队-01
+ 
+
+
+
+
+ 设计师
+ 
+
+
+
+
+ 设计管理
+ 
+
+
+
+
+ 设计理念
+ 
+
+
+
+
+ 代码应用
+ 
+
+
+
+
+ 电脑
+ 
+
+
+
+
+ 多设备
+ 
+
+
+
+
+ 团队管理
+ 
+
+
+
+
+ 电脑 (1)
+ 
+
+
+
+
+ 代码
+ 
+
+
+
+
+ 代码
+ 
+
+
+
+
+ 鼠标编辑
+ 
+
+
+
+
+ 鼠标选择
+ 
+
+
+
+
+ 编码
+ 
+
+
+
+
+ 编码
+ 
+
+
+
+
+ 百度
+ 
+
+
+
+
+ 云服务器
+ 
+
+
+
+
+ QQ
+ 
+
+
+
+
+ 分类-米面粮油
+ 
+
+
+
+
+ 进口馆粮油
+ 
+
+
+
+
+ 蔬菜
+ 
+
+
+
+
+ 蔬菜
+ 
+
+
+
+
+ 查看
+ 
+
+
+
+
+ 茄子
+ 
+
+
+
+
+ 南瓜
+ 
+
+
+
+
+ 食品粮油
+ 
+
+
+
+
+ 南瓜
+ 
+
+
+
+
+ 青椒
+ 
+
+
+
+
+ 微信
+ 
+
+
+
+
+ 二维码
+ 
+
+
+
+
+ 查看
+ 
+
+
+
+
+ 微信
+ 
+
+
+
+
+ 查看
+ 
+
+
+
+
+ 蔬菜
+ 
+
+
+
+
+ 蔬菜
+ 
+
+
+
+
+ 蔬菜
+ 
+
+
+
+
+ 查看 眼睛 实时分析 2
+ 
+
+
+
+
+ 头条1
+ 
+
+
+
+
+ 转发
+ 
+
+
+
+
+ 转发
+ 
+
+
+
+
+ 点赞
+ 
+
+
+
+
+ 转发
+ 
+
+
+
+
+ 转发
+ 
+
+
+
+
+ 菜单
+ 
+
+
+
+
+ 放大镜
+ 
+
+
+
+
+ 放大镜
+ 
+
+
+
+
+ 链接 关联
+ 
+
+
+
+
+ 办公自动化
+ 
+
+
+
+
+ 自动化
+ 
+
+
+
+
+ 自动化运维
+ 
+
+
+
+
+ 清算和对账自动化
+ 
+
+
+
+
+ 链接
+ 
+
+
+
+
+ 链接
+ 
+
+
+
+
+ 链接
+ 
+
+
+
+
+ 自动化-网络
+ 
+
+
+
+
+ 自动化-服务器
+ 
+
+
+
+
+ 自动化流程
+ 
+
+
+
+
+ 设计软件
+ 
+
+
+
+
+ 自动化
+ 
+
+
+
+
+ 软件
+ 
+
+
+
+
+ 仓库
+ 
+
+
+
+
+ 软件定制
+ 
+
+
+
+
+ 仓库
+ 
+
+
+
+
+ 物流
+ 
+
+
+
+
+ 升降机监测
+ 
+
+
+
+
+ 输送机械
+ 
+
+
+
+
+ 托盘121
+ 
+
+
+
+
+ 托盘码-批量
+ 
+
+
+
+
+ 物流设备
+ 
+
+
+
+
+ HY物流设备
+ 
+
+
+
+
+ 托盘121
+ 
+
+
+
+
+ 叉车
+ 
+
+
+
+
+ HY焊接设备
+ 
+
+
+
+
+ 皇冠
+ 
+
+
+
+
+ 皇冠
+ 
+
+
+
+
+ 时装与服装-13
+ 
+
+
+
+
+ 时装与服装-59
+ 
+
+
+
+
+ 时装与服装-96
+ 
+
+
+
+
+ 时装与服装-111
+ 
+
+
+
+
+ 时装与服装-198
+ 
+
+
+
+
+ 服装02-20
+ 
+
+
+
+
+ 女鞋
+ 
+
+
+
+
+ 服饰鞋包
+ 
+
+
+
+
+ 鞋包服饰
+ 
+
+
+
+
+ 服装
+ 
+
+
+
+
+ 服装
+ 
+
+
+
+
+ 服装02-25
+ 
+
+
+
+
+ 服装-电熨斗
+ 
+
+
+
+
+ buy-02
+ 
+
+
+
+
+ buying
+ 
+
+
+
+
+ BUYU
+ 
+
+
+
+
+ 店铺
+ 
+
+
+
+
+ buycar
+ 
+
+
+
+
+ buyu
+ 
+
+
+
+
+ buy-1
+ 
+
+
+
+
+ buy-2
+ 
+
+
+
+
+ buy-3
+ 
+
+
+
+
+ buy
+ 
+
+
+
+
+ 线下展会
+ 
+
+
+
+
+ 采购询价单
+ 
+
+
+
+
+ 展会
+ 
+
+
+
+
+ 采购专场
+ 
+
+
+
+
+ 发布招募;发布产品
+ 
+
+
+
+
+ 沟通工具
+ 
+
+
+
+
+ 认证企业
+ 
+
+
+
+
+ 采购询价
+ 
+
+
+
+
+ 移动建站
+ 
+
+
+
+
+ 全网推广
+ 
+
+
+
+
+ 采购专场
+ 
+
+
+
+
+ 发布招募
+ 
+
+
+
+
+ 管理工具
+ 
+
+
+
+
+ 首页new
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ ia_200000014
+ 
+
+
+
+
+ ia_200000015
+ 
+
+
+
+
+ ia_200000013
+ 
+
+
+
+
+ ia_200000012
+ 
+
+
+
+
+ ia_200000011
+ 
+
+
+
+
+ ia_200000010
+ 
+
+
+
+
+ 学生
+ 
+
+
+
+
+ 学生荣誉
+ 
+
+
+
+
+ 学生
+ 
+
+
+
+
+ 学生
+ 
+
+
+
+
+ 电脑
+ 
+
+
+
+
+ 电脑
+ 
+
+
+
+
+ 电脑
+ 
+
+
+
+
+ 编程题库
+ 
+
+
+
+
+ 对教师
+ 
+
+
+
+
+ 学士帽
+ 
+
+
+
+
+ 学士
+ 
+
+
+
+
+ 职业
+ 
+
+
+
+
+ 培训
+ 
+
+
+
+
+ 学士帽
+ 
+
+
+
+
+ 学生
+ 
+
+
+
+
+ 培训
+ 
+
+
+
+
+ 电脑
+ 
+
+
+
+
+ 会计引擎
+ 
+
+
+
+
+ 会计从业
+ 
+
+
+
+
+ 学士帽
+ 
+
+
+
+
+ 编程
+ 
+
+
+
+
+ 教师类
+ 
+
+
+
+
+ 奖牌
+ 
+
+
+
+
+ 奖牌
+ 
+
+
+
+
+ 奖牌
+ 
+
+
+
+
+ 后台-会员管理
+ 
+
+
+
+
+ VIP升级_2
+ 
+
+
+
+
+ ad
+ 
+
+
+
+
+ 积分
+ 
+
+
+
+
+ 金牌
+ 
+
+
+
+
+ 金牌
+ 
+
+
+
+
+ 金牌
+ 
+
+
+
+
+ 礼品
+ 
+
+
+
+
+ 化工新材料
+ 
+
+
+
+
+ 新能源
+ 
+
+
+
+
+ 安防
+ 
+
+
+
+
+ 化工原料
+ 
+
+
+
+
+ 咨询
+ 
+
+
+
+
+ 安全防护~
+ 
+
+
+
+
+ 咨询区
+ 
+
+
+
+
+ 空气开关
+ 
+
+
+
+
+ 家庭安防
+ 
+
+
+
+
+ 工业安全
+ 
+
+
+
+
+ 新能源
+ 
+
+
+
+
+ 五金
+ 
+
+
+
+
+ 咨询
+ 
+
+
+
+
+ 购物车
+ 
+
+
+
+
+ 购物车
+ 
+
+
+
+
+ 用户
+ 
+
+
+
+
+ 扫描
+ 
+
+
+
+
+ 购物车
+ 
+
+
+
+
+ 信息
+ 
+
+
+
+
+ 信息
+ 
+
+
+
+
+ 注册
+ 
+
+
+
+
+ 信息
+ 
+
+
+
+
+ 信息
+ 
+
+
+
+
+ 信息
+ 
+
+
+
+
+ 用户
+ 
+
+
+
+
+ 信息
+ 
+
+
+
+
+ 信息
+ 
+
+
+
+
+ 购物车 (1)
+ 
+
+
+
+
+ 注册 (1)
+ 
+
+
+
+
+ 用户
+ 
+
+
+
+
+ 注册
+ 
+
+
+
+
+ 方向
+ 
+
+
+
+
+ 方向
+ 
+
+
+
+
+ 猜你喜欢
+ 
+
+
+
+
+ 猜你喜欢
+ 
+
+
+
+
+ 猜你喜欢
+ 
+
+
+
+
+ 猜你喜欢
+ 
+
+
+
+
+ 猜你喜欢
+ 
+
+
+
+
+ 车辆信息背景
+ 
+
+
+
+
+ 背景楼房
+ 
+
+
+
+
+ 企业身份-背景
+ 
+
+
+
+
+ 优惠券背景@3x
+ 
+
+
+
+
+ 飞行中的背景
+ 
+
+
+
+
+ 录像卡片背景
+ 
+
+
+
+
+ 箭头背景
+ 
+
+
+
+
+ 发布
+ 
+
+
+
+
+ 发布
+ 
+
+
+
+
+ 发布
+ 
+
+
+
+
+ vip
+ 
+
+
+
+
+ Vip
+ 
+
+
+
+
+ vip
+ 
+
+
+
+
+ vip
+ 
+
+
+
+
+ VIP
+ 
+
+
+
+
+ VIP
+ 
+
+
+
+
+ VIP
+ 
+
+
+
+
+ VIP
+ 
+
+
+
+
+ 闪电
+ 
+
+
+
+
+ 闪电
+ 
+
+
+
+
+ 购
+ 
+
+
+
+
+ 购
+ 
+
+
+
+
+ 购
+ 
+
+
+
+
+ 购物
+ 
+
+
+
+
+ 购物
+ 
+
+
+
+
+ 店铺
+ 
+
+
+
+
+ 购物
+ 
+
+
+
+
+ 购物 (1)
+ 
+
+
+
+
+ 购物
+ 
+
+
+
+
+ 购物
+ 
+
+
+
+
+ 购物
+ 
+
+
+
+
+ 购物
+ 
+
+
+
+
+ 购物
+ 
+
+
+
+
+ 店铺
+ 
+
+
+
+
+ 购物
+ 
+
+
+
+
+ 购物
+ 
+
+
+
+
+ 截止时间
+ 
+
+
+
+
+ 地址
+ 
+
+
+
+
+ 数量
+ 
+
+
+
+
+ 时间 历史记录 计时 钟表 线性
+ 
+
+
+
+
+ 数量
+ 
+
+
+
+
+ 地址
+ 
+
+
+
+
+ inbox
+ 
+
+
+
+
+ apartment
+ 
+
+
+
+
+ user
+ 
+
+
+
+
+ home
+ 
+
+
+
+
+ 三角形
+ 
+
+
+
+
+ 文件
+ 
+
+
+
+
+ 文件
+ 
+
+
+
+
+ 文件
+ 
+
+
+
+
+ 文档
+ 
+
+
+
+
+ 文档
+ 
+
+
+
+
+ 公司认证
+ 
+
+
+
+
+ 公司
+ 
+
+
+
+
+ 公司
+ 
+
+
+
+
+ ST公司
+ 
+
+
+
+
+ 公司&面性
+ 
+
+
+
+
+ 公司
+ 
+
+
+
+
+ 齿轮
+ 
+
+
+
+
+ 定制加工
+ 
+
+
+
+
+ 委外加工
+ 
+
+
+
+
+ Hot
+ 
+
+
+
+
+ 齿轮
+ 
+
+
+
+
+ HOT
+ 
+
+
+
+
+ 连锁加工
+ 
+
+
+
+
+ 健康_热雾
+ 
+
+
+
+
+ 健康
+ 
+
+
+
+
+ 健康指南文字
+ 
+
+
+
+
+ 健康服务
+ 
+
+
+
+
+ 健康头条
+ 
+
+
+
+
+ 健康营养
+ 
+
+
+
+
+ 健康商城
+ 
+
+
+
+
+ 健康商品
+ 
+
+
+
+
+ 健康
+ 
+
+
+
+
+ 健康
+ 
+
+
+
+
+ 健康度
+ 
+
+
+
+
+ 健康云 页面模版
+ 
+
+
+
+
+ 健康评估
+ 
+
+
+
+
+ 健康
+ 
+
+
+
+
+ 健康资讯
+ 
+
+
+
+
+ 健康趋势
+ 
+
+
+
+
+ 健康
+ 
+
+
+
+
+ 健康讲堂
+ 
+
+
+
+
+ 母婴
+ 
+
+
+
+
+ 代理平台
+ 
+
+
+
+
+ 代理平台
+ 
+
+
+
+
+ 母婴
+ 
+
+
+
+
+ 加工管理
+ 
+
+
+
+
+ 代理合营
+ 
+
+
+
+
+ 母婴
+ 
+
+
+
+
+ 加工过程
+ 
+
+
+
+
+ 首页/tab/会展
+ 
+
+
+
+
+ 代理
+ 
+
+
+
+
+ 代理
+ 
+
+
+
+
+ 会展服务
+ 
+
+
+
+
+ 展会
+ 
+
+
+
+
+ 放大镜
+ 
+
+
+
+
+ 电工电料
+ 
+
+
+
+
+ 排插
+ 
+
+
+
+
+ 芯片
+ 
+
+
+
+
+ 灯管
+ 
+
+
+
+
+ 购物车
+ 
+
+
+
+
+ 皇冠
+ 
+
+
+
+
+ jxhy
+ 
+
+
+
+
+ jxhy
+ 
+
+
+
+
+ 灯暖
+ 
+
+
+
+
+ 灯具
+ 
+
+
+
+
+ 灯具
+ 
+
+
+
+
+ 射灯
+ 
+
+
+
+
+ 灯具
+ 
+
+
+
+
+ 灯具
+ 
+
+
+
+
+ 筒灯
+ 
+
+
+
+
+ 灯具
+ 
+
+
+
+
+ 筒灯
+ 
+
+
+
+
+ logo
+ 
+
+
+
+
+ 谷歌
+ 
+
+
+
+
+ 新闻
+ 
+
+
+
+
+ 新闻
+ 
+
+
+
+
+ 新闻
+ 
+
+
+
+
+ 新闻
+ 
+
+
+
+
+ 新闻
+ 
+
+
+
+
+ 更多
+ 
+
+
+
+
+ 更多
+ 
+
+
+
+
+ 商品-配置管理
+ 
+
+
+
+
+ 商品3d说明
+ 
+
+
+
+
+ 商品销售情况
+ 
+
+
+
+
+ 商品价格管理
+ 
+
+
+
+
+ 公告
+ 
+
+
+
+
+ 公告
+ 
+
+
+
+
+ 公告
+ 
+
+
+
+
+ 公告
+ 
+
+
+
+
+ 公告 (1)
+ 
+
+
+
+
+ 公告
+ 
+
+
+
+
+ 公告
+ 
+
+
+
+
+ 分类
+ 
+
+
+
+
+ bottom_首页
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ qq
+ 
+
+
+
+
+ DPI-首页
+ 
+
+
+
+
+ QQ
+ 
+
+
+
+
+ 分类
+ 
+
+
+
+
+ 分类
+ 
+
+
+
+
+ 类目 品类 分类 类别
+ 
+
+
+
+
+ 分类
+ 
+
+
+
+
+ 分类
+ 
+
+
+
+
+ 类目 品类 分类 类别-2-02
+ 
+
+
+
+
+ QQ (1)
+ 
+
+
+
+
+ 类目 品类 分类 类别
+ 
+
+
+
+
+ 分类
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ 首页
+ 
+
+
+
+
+ bao
+ 
+
+
+
+
+ bao
+ 
+
+
+
+
+ 支
+ 
+
+
+
+
+ 更多
+ 
+
+
+
+
+ 更多
+ 
+
+
+
+
+ 更多
+ 
+
+
+
+
+ 右剪头
+ 
+
+
+
+
+ 右剪头
+ 
+
+
+
+
+ 小区到家-轮播右剪头
+ 
+
+
+
+
+ 黄底剪头
+ 
+
+
+
+
+ 用户
+ 
+
+
+
+
+ 注册
+ 
+
+
+
+
+ 注册
+ 
+
+
+
+
+ 注册
+ 
+
+
+
+
+ 用户
+ 
+
+
+
+
+ 用户
+ 
+
+
+
+
+ 用户
+ 
+
+
+
+
+ 注册 (5)
+ 
+
+
+
+
+ 用户
+ 
+
+
+
+
+ 用户
+ 
+
+
+
+
+ 注册
+ 
+
+
+
+
+ 注册
+ 
+
+
+
+
+ 注册
+ 
+
+
+
+
+ 采购
+ 
+
+
+
+
+ 采购员
+ 
+
+
+
+
+ 咨询
+ 
+
+
+
+
+ 帮助
+ 
+
+
+
+
+ 咨询
+ 
+
+
+
+
+ 帮助
+ 
+
+
+
+
+ 帮助
+ 
+
+
+
+
+ 咨询
+ 
+
+
+
+
+ 咨询
+ 
+
+
+
+
+ 售后
+ 
+
+
+
+
+ 开店
+ 
+
+
+
+
+ 全员开店
+ 
+
+
+
+
+ 正品
+ 
+
+
+
+
+ 咨询
+ 
+
+
+
+
+ 帮助
+ 
+
+
+
+
+ 快速开店
+ 
+
+
+
+
+ 咨询
+ 
+
+
+
+
+ 免费开店
+ 
+
+
+
+
+ 申请开店
+ 
+
+
+
+
+ 开店指南
+ 
+
+
+
+
+ 安全
+ 
+
+
+
+
+ 咨询
+ 
+
+
+
+
+ 我要开店-边框
+ 
+
+
+
+
+ 售后
+ 
+
+
+
+
+ 快速开店
+ 
+
+
+
+
+ 开店
+ 
+
+
+
+
+ 安全
+ 
+
+
+
+
+ 正品
+ 
+
+
+
+
+ 咨询
+ 
+
+
+
+
+ 报告-时尚品牌开店数量
+ 
+
+
+
+
+ 开店
+ 
+
+
+
+
+ 开店宝
+ 
+
+
+
+
+ 售后
+ 
+
+
+
+
+ 免费开店
+ 
+
+
+
+
+ 优质询盘推荐
+ 
+
+
+
+
+ 优质询盘推荐_粗
+ 
+
+
+
+
+ 帮助
+ 
+
+
+
+
+ 开店
+ 
+
+
+
+
+ 咨询
+ 
+
+
+
+
+ 正品
+ 
+
+
+
+
+ 安全
+ 
+
+
+
+
+ 发布
+ 
+
+
+
+
+ 购物车满
+ 
+
+
+
+
+ 购物车空
+ 
+
+
+
+
+ 购物车满
+ 
+
+
+
+
+ 食品
+ 
+
+
+
+
+ 运输1
+ 
+
+
+
+
+ 类目图标-日用百货
+ 
+
+
+
+
+ 食品
+ 
+
+
+
+
+ 维修工具
+ 
+
+
+
+
+ 购物车
+ 
+
+
+
+
+ 基础化工
+ 
+
+
+
+
+ 化工
+ 
+
+
+
+
+ 家居百货
+ 
+
+
+
+
+ 衣服
+ 
+
+
+
+
+ 房屋家居
+ 
+
+
+
+
+ 数码
+ 
+
+
+
+
+ 家居家装
+ 
+
+
+
+
+ 数码
+ 
+
+
+
+
+ 日用百货
+ 
+
+
+
+
+ 食品
+ 
+
+
+
+
+ 衣服
+ 
+
+
+
+
+ 商务合作
+ 
+
+
+
+
+ 消防员
+ 
+
+
+
+
+ 维修
+ 
+
+
+
+
+ 运输中
+ 
+
+
+
+
+ 推荐汽车
+ 
+
+
+
+
+ 消防斧
+ 
+
+
+
+
+ 消防水泵
+ 
+
+
+
+
+ 化工
+ 
+
+
+
+
+ 商务
+ 
+
+
+
+
+ 维修
+ 
+
+
+
+
+ 食品
+ 
+
+
+
+
+ 机械
+ 
+
+
+
+
+ 商务
+ 
+
+
+
+
+ 已发货-物流详情
+ 
+
+
+
+
+ 水滴
+ 
+
+
+
+
+ 运输-2
+ 
+
+
+
+
+ 运输-1
+ 
+
+
+
+
+ 运输-4
+ 
+
+
+
+
+ 运输-9
+ 
+
+
+
+
+ 运输-19
+ 
+
+
+
+
+ 运输-36
+ 
+
+
+
+
+ 运输-59
+ 
+
+
+
+
+ 家居生活
+ 
+
+
+
+
+ 汽车
+ 
+
+
+
+
+ 公安消防
+ 
+
+
+
+
+ 化工新材料
+ 
+
+
+
+
+ 其他材料,化工
+ 
+
+
+
+
+ 高端化工
+ 
+
+
+
+
+ 流体机械
+ 
+
+
+
+
+ 化工
+ 
+
+
+
+
+ 汽车
+ 
+
+
+
+
+ 行业icon_食品饮料
+ 
+
+
+
+
+ 化工
+ 
+
+
+
+
+ 食品-面包
+ 
+
+
+
+
+ 用户
+ 
+
+
+
+
+ 广告
+ 
+
+
+
+
+ 客服
+ 
+
+
+
+
+ 4 返回顶部 白
+ 
+
+
+
+
+ 返回顶部
+ 
+
+
+
+
+ 返回顶部
+ 
+
+
+
+
+ 分类
+ 
+
+
+
+
+ 分类
+ 
+
+
+
+
+ 分类
+ 
+
+
+
+
+ 分类
+ 
+
+
+
+
+ 分类
+ 
+
+
+
+
+ 实心正方形
+ 
+
+
+
+
+ 今日推荐
+ 
+
+
+
+
+ 最新货源
+ 
+
+
+
+
+ 相机
+ 
+
+
+
+
+ 新闻
+ 
+
+
+
+
+ 招商代理
+ 
+
+
+
+
+ 视频
+ 
+
+
+
+
+ 商品
+ 
+
+
+
+
+ 新闻
+ 
+
+
+
+
+ 商品
+ 
+
+
+
+
+ 公司地址
+ 
+
+
+
+
+ 品牌
+ 
+
+
+
+
+ 食物-97
+ 
+
+
+
+
+ 商品
+ 
+
+
+
+
+ icon_推荐nor
+ 
+
+
+
+
+ 公司名称
+ 
+
+
+
+
+ 零食、糖果
+ 
+
+
+
+
+ 微信
+ 
+
+
+
+
+ 电话
+ 
+
+
+
+
+ 车巴巴-返回顶部
+ 
+
+
+
+
+ 在线咨询
+ 
+
+
+
+
+ 欢迎页
+ 
+
+
+
+
+ 二维码
+ 
+
+
+
+
+ 电话
+ 
+
+
+
+
+ 二维码
+ 
+
+
+
+
+ 电话
+ 
+
+
+
+
+ 通用-欢迎你图标
+ 
+
+
+
+
+ ZS二维码
+ 
+
+
+
+
+ 二维码
+ 
+
+
+
+
+ 二维码
+ 
+
+
+
+
+ 位置
+ 
+
+
+
+
+ 位置
+ 
+
+
+
+
+ 产品
+ 
+
+
+
+
+ 资质证书
+ 
+
+
+
+
+ 公司
+ 
+
+
+
+
+ 证书
+ 
+
+
+
+
+ 产品
+ 
+
+
+
+
+ 证书
+ 
+
+
+
+
+ 公司信息
+ 
+
+
+
+
+ 产品
+ 
+
+
+
+
+ 邮件
+ 
+
+
+
+
+ qq
+ 
+
+
+
+
+ 地址
+ 
+
+
+
+
+ 电话
+ 
+
+
+
+
+ 电话
+ 
+
+
+
+
+ 邮件
+ 
+
+
+
+
+
Unicode 引用
+
+
+
Unicode 是字体在网页端最原始的应用方式,特点是:
+
+ 兼容性最好,支持 IE6+,及所有现代浏览器。
+ 支持按字体的方式去动态调整图标大小,颜色等等。
+ 但是因为是字体,所以不支持多色。只能使用平台里单色的图标,就算项目里有多色图标也会自动去色。
+
+
+ 注意:新版 iconfont 支持多色图标,这些多色图标在 Unicode 模式下将不能使用,如果有需求建议使用symbol 的引用方式
+
+
Unicode 使用步骤如下:
+
第一步:拷贝项目下面生成的 @font-face
+
@font-face {
+ font-family: 'iconfont';
+ src: url('iconfont.eot');
+ src: url('iconfont.eot?#iefix') format('embedded-opentype'),
+ url('iconfont.woff2') format('woff2'),
+ url('iconfont.woff') format('woff'),
+ url('iconfont.ttf') format('truetype'),
+ url('iconfont.svg#iconfont') format('svg');
+}
+
+
第二步:定义使用 iconfont 的样式
+
.iconfont {
+ font-family: "iconfont" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+
第三步:挑选相应图标并获取字体编码,应用于页面
+
+<span class="iconfont">3</span>
+
+
+ "iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。
+
+
+
+
+
+
+
+
+
+ 更多
+
+ .icongengduo2
+
+
+
+
+
+
+ 产品
+
+ .iconchanpin2
+
+
+
+
+
+
+ 地球
+
+ .icondiqiu
+
+
+
+
+
+
+ 专用车
+
+ .iconzhuanyongche
+
+
+
+
+
+
+ 热卖
+
+ .iconremai
+
+
+
+
+
+
+ 消息
+
+ .iconxiaoxi
+
+
+
+
+
+
+ 消息
+
+ .iconxiaoxi1
+
+
+
+
+
+
+ 电话
+
+ .icondianhua3
+
+
+
+
+
+
+ 登陆
+
+ .icondenglu
+
+
+
+
+
+
+ 鞋子
+
+ .iconxiezi
+
+
+
+
+
+
+ 关注
+
+ .iconguanzhu
+
+
+
+
+
+
+ 关注
+
+ .iconguanzhu1
+
+
+
+
+
+
+ 名片
+
+ .iconmingpian
+
+
+
+
+
+
+ 连接
+
+ .iconlianjie3
+
+
+
+
+
+
+ 连接
+
+ .iconlianjie4
+
+
+
+
+
+
+ 首页
+
+ .iconshouye-1
+
+
+
+
+
+
+ 首页
+
+ .iconshouye6
+
+
+
+
+
+
+ 搜索
+
+ .iconsousuo
+
+
+
+
+
+
+ 首页
+
+ .iconshouye7
+
+
+
+
+
+
+ 首页
+
+ .iconshouye8
+
+
+
+
+
+
+ 首页
+
+ .iconshouye9
+
+
+
+
+
+
+ 首页
+
+ .iconshouye10
+
+
+
+
+
+
+ 首页
+
+ .iconshouye11
+
+
+
+
+
+
+ 首页
+
+ .iconshouye12
+
+
+
+
+
+
+ 首页
+
+ .iconshouye13
+
+
+
+
+
+
+ 首页 copy
+
+ .iconshouyecopy
+
+
+
+
+
+
+ 首页 (3)
+
+ .iconshouye14
+
+
+
+
+
+
+ 首页
+
+ .iconicon_huabanfuben
+
+
+
+
+
+
+ 首页
+
+ .iconshouye15
+
+
+
+
+
+
+ 首页
+
+ .iconshouye16
+
+
+
+
+
+
+ 首页 未点击
+
+ .iconshouyeweidianji
+
+
+
+
+
+
+ 首页
+
+ .iconshouye17
+
+
+
+
+
+
+ 首页
+
+ .iconshouye18
+
+
+
+
+
+
+ 首页
+
+ .iconshouye19
+
+
+
+
+
+
+ 首页
+
+ .iconshouye20
+
+
+
+
+
+
+ 首页
+
+ .iconshouye21
+
+
+
+
+
+
+ 首页
+
+ .iconshouye22
+
+
+
+
+
+
+ 环保
+
+ .iconhuanbao
+
+
+
+
+
+
+ 五金工具
+
+ .iconwujingongju
+
+
+
+
+
+
+ 安防_警报
+
+ .iconb-ic-4
+
+
+
+
+
+
+ 机器人
+
+ .iconjiqiren2
+
+
+
+
+
+
+ 模具
+
+ .iconmoju
+
+
+
+
+
+
+ 环保
+
+ .iconhuanbao1
+
+
+
+
+
+
+ 仪表
+
+ .iconyibiao
+
+
+
+
+
+
+ 五金:工具
+
+ .iconwujingongju1
+
+
+
+
+
+
+ 新品
+
+ .iconxinpin
+
+
+
+
+
+
+ 仪器
+
+ .iconyiqi
+
+
+
+
+
+
+ 机械
+
+ .iconjixie
+
+
+
+
+
+
+ 安防监控
+
+ .iconanfangjiankong
+
+
+
+
+
+
+ 电工电气_
+
+ .icondiangongdianqi_
+
+
+
+
+
+
+ 交通
+
+ .iconjiaotong
+
+
+
+
+
+
+ 污水处理站监测
+
+ .iconwushuichulizhanjiance
+
+
+
+
+
+
+ 污水泵
+
+ .iconwushuibeng
+
+
+
+
+
+
+ 污水处理费
+
+ .iconwushuichulifei
+
+
+
+
+
+
+ 污水
+
+ .iconwushui
+
+
+
+
+
+
+ 污水处理
+
+ .iconwushuichuli
+
+
+
+
+
+
+ dt-污水处理厂
+
+ .icondt-wushuichulichang
+
+
+
+
+
+
+ 首页-咨询电话
+
+ .iconshouye-zixundianhua
+
+
+
+
+
+
+ 查看
+
+ .iconchakan2
+
+
+
+
+
+
+ 查看
+
+ .iconchakan3
+
+
+
+
+
+
+ home
+
+ .iconhome-o
+
+
+
+
+
+
+ home
+
+ .iconsanguohome
+
+
+
+
+
+
+ home
+
+ .iconzhuye
+
+
+
+
+
+
+ home
+
+ .iconhome1
+
+
+
+
+
+
+ 团队 线形
+
+ .icontuanduixianxing
+
+
+
+
+
+
+ 团队
+
+ .icontuandui1
+
+
+
+
+
+
+ 团队
+
+ .icontuandui2
+
+
+
+
+
+
+ 勾
+
+ .icongou3
+
+
+
+
+
+
+ 勾
+
+ .icongou-copy
+
+
+
+
+
+
+ 勾
+
+ .icongou4
+
+
+
+
+
+
+ 勾
+
+ .icongou5
+
+
+
+
+
+
+ 勾
+
+ .icongou6
+
+
+
+
+
+
+ 勾
+
+ .icongou7
+
+
+
+
+
+
+ 勾
+
+ .icongou8
+
+
+
+
+
+
+ 询价管理
+
+ .iconxunjiaguanli
+
+
+
+
+
+
+ 采购
+
+ .iconcaigou1
+
+
+
+
+
+
+ 采购主管
+
+ .iconcaigouzhuguan
+
+
+
+
+
+
+ 采购
+
+ .iconcaigou2
+
+
+
+
+
+
+ 采购跟踪
+
+ .iconcaigougenzong
+
+
+
+
+
+
+ 地方特产
+
+ .icondifangtechan
+
+
+
+
+
+
+ 鸡肉
+
+ .iconjirou1
+
+
+
+
+
+
+ 芒果
+
+ .iconmangguo
+
+
+
+
+
+
+ 芒果
+
+ .iconmangguo1
+
+
+
+
+
+
+ 芒果
+
+ .iconmangguo2
+
+
+
+
+
+
+ 鸡肉
+
+ .icon-jirou
+
+
+
+
+
+
+ 鸡肉
+
+ .iconjirou
+
+
+
+
+
+
+ 水果
+
+ .iconshuiguo
+
+
+
+
+
+
+ 家禽
+
+ .iconjiaqin
+
+
+
+
+
+
+ 水果
+
+ .iconshuiguo1
+
+
+
+
+
+
+ 鱼
+
+ .iconyu
+
+
+
+
+
+
+ 鱼
+
+ .iconyu1
+
+
+
+
+
+
+ 水果
+
+ .iconshuiguo2
+
+
+
+
+
+
+ 水果
+
+ .iconshuiguo3
+
+
+
+
+
+
+ 水果
+
+ .iconshuiguo4
+
+
+
+
+
+
+ 种子追溯
+
+ .iconzhongzizhuisu
+
+
+
+
+
+
+ 家禽
+
+ .iconjiaqin1
+
+
+
+
+
+
+ 种子投资
+
+ .iconzhongzitouzi
+
+
+
+
+
+
+ 虾
+
+ .iconxia
+
+
+
+
+
+
+ 水果
+
+ .iconshuiguo5
+
+
+
+
+
+
+ 家禽
+
+ .iconjiaqin2
+
+
+
+
+
+
+ 小龙虾
+
+ .iconxiaolongxia
+
+
+
+
+
+
+ 竹笋
+
+ .iconzhusun
+
+
+
+
+
+
+ 罐头
+
+ .iconguantou
+
+
+
+
+
+
+ 竹笋
+
+ .iconshucai-
+
+
+
+
+
+
+ 虾
+
+ .iconxia1
+
+
+
+
+
+
+ 种子
+
+ .iconzhongzi
+
+
+
+
+
+
+ 鱼
+
+ .iconyu2
+
+
+
+
+
+
+ 虾蟹类-01
+
+ .iconxiaxielei-
+
+
+
+
+
+
+ 虾
+
+ .icondiaoyu
+
+
+
+
+
+
+ 水果 copy 2
+
+ .iconshuiguocopy
+
+
+
+
+
+
+ 虾
+
+ .iconxia2
+
+
+
+
+
+
+ 鸡
+
+ .iconji
+
+
+
+
+
+
+ 鱼
+
+ .iconyu3
+
+
+
+
+
+
+ 手机
+
+ .iconshouji1
+
+
+
+
+
+
+ 手机
+
+ .iconshouji2
+
+
+
+
+
+
+ 手机
+
+ .iconshouji3
+
+
+
+
+
+
+ 苹果手机x细边框2
+
+ .iconpingguoxxibiankuang
+
+
+
+
+
+
+ 手机 (3)
+
+ .iconshouji
+
+
+
+
+
+
+ 客服
+
+ .iconkefu1
+
+
+
+
+
+
+ 客服
+
+ .iconkefu2
+
+
+
+
+
+
+ 客服
+
+ .iconkefu3
+
+
+
+
+
+
+ 05团队
+
+ .icontuandui
+
+
+
+
+
+
+ 设计-金煌
+
+ .iconsheji-jinhuang
+
+
+
+
+
+
+ 设计
+
+ .iconsheji
+
+
+
+
+
+
+ 关于我们-开发团队
+
+ .iconguanyuwomen-kaifatuandui
+
+
+
+
+
+
+ 我的团队-01
+
+ .iconwodetuandui-
+
+
+
+
+
+
+ 设计师
+
+ .iconzu2
+
+
+
+
+
+
+ 设计管理
+
+ .iconshejiguanli
+
+
+
+
+
+
+ 设计理念
+
+ .iconico1
+
+
+
+
+
+
+ 代码应用
+
+ .icondaimayingyong
+
+
+
+
+
+
+ 电脑
+
+ .icondiannao2
+
+
+
+
+
+
+ 多设备
+
+ .iconsimiquan
+
+
+
+
+
+
+ 团队管理
+
+ .icontuanduiguanli
+
+
+
+
+
+
+ 电脑 (1)
+
+ .icondiannao3
+
+
+
+
+
+
+ 代码
+
+ .icondaima
+
+
+
+
+
+
+ 代码
+
+ .icondaima1
+
+
+
+
+
+
+ 鼠标编辑
+
+ .iconshubiaobianji
+
+
+
+
+
+
+ 鼠标选择
+
+ .iconicon-test1
+
+
+
+
+
+
+ 编码
+
+ .iconbianma
+
+
+
+
+
+
+ 编码
+
+ .iconbianma1
+
+
+
+
+
+
+ 百度
+
+ .iconbaidu
+
+
+
+
+
+
+ 云服务器
+
+ .iconyunfuwuqi
+
+
+
+
+
+
+ QQ
+
+ .iconQQ1
+
+
+
+
+
+
+ 分类-米面粮油
+
+ .iconflour
+
+
+
+
+
+
+ 进口馆粮油
+
+ .iconjinkouguanliangyou
+
+
+
+
+
+
+ 蔬菜
+
+ .iconshucai
+
+
+
+
+
+
+ 蔬菜
+
+ .iconshucai1
+
+
+
+
+
+
+ 查看
+
+ .iconchakan1
+
+
+
+
+
+
+ 茄子
+
+ .iconqiezi
+
+
+
+
+
+
+ 南瓜
+
+ .iconnangua
+
+
+
+
+
+
+ 食品粮油
+
+ .iconshipinliangyou
+
+
+
+
+
+
+ 南瓜
+
+ .iconnangua1
+
+
+
+
+
+
+ 青椒
+
+ .iconqingjiao
+
+
+
+
+
+
+ 微信
+
+ .iconweixin
+
+
+
+
+
+
+ 二维码
+
+ .iconerweima4
+
+
+
+
+
+
+ 查看
+
+ .iconcheck-line
+
+
+
+
+
+
+ 微信
+
+ .iconweixin1
+
+
+
+
+
+
+ 查看
+
+ .iconchakan
+
+
+
+
+
+
+ 蔬菜
+
+ .iconshucai2
+
+
+
+
+
+
+ 蔬菜
+
+ .iconshucai3
+
+
+
+
+
+
+ 蔬菜
+
+ .iconshucai4
+
+
+
+
+
+
+ 查看 眼睛 实时分析 2
+
+ .iconchakanyanjingshishifenxi2
+
+
+
+
+
+
+ 头条1
+
+ .iconweibiaoti-2
+
+
+
+
+
+
+ 转发
+
+ .iconzhuanfa
+
+
+
+
+
+
+ 转发
+
+ .iconzhuanfa1
+
+
+
+
+
+
+ 点赞
+
+ .icondianzan
+
+
+
+
+
+
+ 转发
+
+ .iconzhuanfa2
+
+
+
+
+
+
+ 转发
+
+ .iconicon_zhuanfa
+
+
+
+
+
+
+ 菜单
+
+ .iconcaidan
+
+
+
+
+
+
+ 放大镜
+
+ .iconfangdajing1
+
+
+
+
+
+
+ 放大镜
+
+ .icon41
+
+
+
+
+
+
+ 链接 关联
+
+ .iconlianjieguanlian
+
+
+
+
+
+
+ 办公自动化
+
+ .iconbangongzidonghua
+
+
+
+
+
+
+ 自动化
+
+ .iconautomation
+
+
+
+
+
+
+ 自动化运维
+
+ .iconzidonghuayunwei
+
+
+
+
+
+
+ 清算和对账自动化
+
+ .iconqingsuanheduizhangzidonghua-
+
+
+
+
+
+
+ 链接
+
+ .iconlianjie
+
+
+
+
+
+
+ 链接
+
+ .iconlianjie1
+
+
+
+
+
+
+ 链接
+
+ .iconlianjie2
+
+
+
+
+
+
+ 自动化-网络
+
+ .iconzidonghua-wangluo
+
+
+
+
+
+
+ 自动化-服务器
+
+ .iconzidonghua-fuwuqi
+
+
+
+
+
+
+ 自动化流程
+
+ .iconziyuan4
+
+
+
+
+
+
+ 设计软件
+
+ .iconshejiruanjian
+
+
+
+
+
+
+ 自动化
+
+ .iconzidonghua
+
+
+
+
+
+
+ 软件
+
+ .iconruanjian
+
+
+
+
+
+
+ 仓库
+
+ .iconcangku
+
+
+
+
+
+
+ 软件定制
+
+ .iconruanjiandingzhi
+
+
+
+
+
+
+ 仓库
+
+ .iconcangku1
+
+
+
+
+
+
+ 物流
+
+ .iconwuliu
+
+
+
+
+
+
+ 升降机监测
+
+ .iconshengjiangjijiance
+
+
+
+
+
+
+ 输送机械
+
+ .iconyunshujixie
+
+
+
+
+
+
+ 托盘121
+
+ .icontuopan121
+
+
+
+
+
+
+ 托盘码-批量
+
+ .icon23
+
+
+
+
+
+
+ 物流设备
+
+ .iconziyuan3
+
+
+
+
+
+
+ HY物流设备
+
+ .iconHYwuliushebei
+
+
+
+
+
+
+ 托盘121
+
+ .icontuopan1211
+
+
+
+
+
+
+ 叉车
+
+ .iconchache
+
+
+
+
+
+
+ HY焊接设备
+
+ .iconHYhanjieshebei
+
+
+
+
+
+
+ 皇冠
+
+ .iconhuangguan
+
+
+
+
+
+
+ 皇冠
+
+ .iconhuangguan2
+
+
+
+
+
+
+ 时装与服装-13
+
+ .iconshizhuangyufuzhuang-
+
+
+
+
+
+
+ 时装与服装-59
+
+ .iconshizhuangyufuzhuang-1
+
+
+
+
+
+
+ 时装与服装-96
+
+ .iconshizhuangyufuzhuang-2
+
+
+
+
+
+
+ 时装与服装-111
+
+ .iconshizhuangyufuzhuang-3
+
+
+
+
+
+
+ 时装与服装-198
+
+ .iconshizhuangyufuzhuang-4
+
+
+
+
+
+
+ 服装02-20
+
+ .iconfuzhuang-1
+
+
+
+
+
+
+ 女鞋
+
+ .iconnvxie
+
+
+
+
+
+
+ 服饰鞋包
+
+ .iconfushixiebao
+
+
+
+
+
+
+ 鞋包服饰
+
+ .iconweibiaoti9
+
+
+
+
+
+
+ 服装
+
+ .iconhuabanfuben
+
+
+
+
+
+
+ 服装
+
+ .iconfuzhuang
+
+
+
+
+
+
+ 服装02-25
+
+ .iconfuzhuang-
+
+
+
+
+
+
+ 服装-电熨斗
+
+ .iconfuzhuang-dianyundou
+
+
+
+
+
+
+ buy-02
+
+ .iconbuy-
+
+
+
+
+
+
+ buying
+
+ .iconbuying
+
+
+
+
+
+
+ BUYU
+
+ .iconBUYU
+
+
+
+
+
+
+ 店铺
+
+ .icondianpu2
+
+
+
+
+
+
+ buycar
+
+ .iconbuycar
+
+
+
+
+
+
+ buyu
+
+ .iconbuyu
+
+
+
+
+
+
+ buy-1
+
+ .iconbuy-1
+
+
+
+
+
+
+ buy-2
+
+ .iconbuy-2
+
+
+
+
+
+
+ buy-3
+
+ .iconbuy-3
+
+
+
+
+
+
+ buy
+
+ .iconbuy
+
+
+
+
+
+
+ 线下展会
+
+ .iconxianxiazhanhui
+
+
+
+
+
+
+ 采购询价单
+
+ .iconcaigouxunjiadan
+
+
+
+
+
+
+ 展会
+
+ .iconzhanhui1
+
+
+
+
+
+
+ 采购专场
+
+ .iconcaigouzhuanchang
+
+
+
+
+
+
+ 发布招募;发布产品
+
+ .iconfabuzhaomu
+
+
+
+
+
+
+ 沟通工具
+
+ .icongoutonggongju
+
+
+
+
+
+
+ 认证企业
+
+ .iconrenzhengqiye
+
+
+
+
+
+
+ 采购询价
+
+ .iconcaigouxunjia
+
+
+
+
+
+
+ 移动建站
+
+ .iconyidongjianzhan
+
+
+
+
+
+
+ 全网推广
+
+ .iconquanwangtuiguang
+
+
+
+
+
+
+ 采购专场
+
+ .iconcaigouzhuanchang1
+
+
+
+
+
+
+ 发布招募
+
+ .iconfabuzhaomu1
+
+
+
+
+
+
+ 管理工具
+
+ .iconguanligongju
+
+
+
+
+
+
+ 首页new
+
+ .iconshouye5
+
+
+
+
+
+
+ 首页
+
+ .iconmenu-index
+
+
+
+
+
+
+ ia_200000014
+
+ .iconia_4
+
+
+
+
+
+
+ ia_200000015
+
+ .iconia_5
+
+
+
+
+
+
+ ia_200000013
+
+ .iconia_3
+
+
+
+
+
+
+ ia_200000012
+
+ .iconia_2
+
+
+
+
+
+
+ ia_200000011
+
+ .iconia_1
+
+
+
+
+
+
+ ia_200000010
+
+ .iconia_
+
+
+
+
+
+
+ 学生
+
+ .iconxuesheng1
+
+
+
+
+
+
+ 学生荣誉
+
+ .iconhistory
+
+
+
+
+
+
+ 学生
+
+ .iconxuesheng2
+
+
+
+
+
+
+ 学生
+
+ .iconxuesheng3
+
+
+
+
+
+
+ 电脑
+
+ .icondiannao-tianchong
+
+
+
+
+
+
+ 电脑
+
+ .icondiannao
+
+
+
+
+
+
+ 电脑
+
+ .icondiannao1
+
+
+
+
+
+
+ 编程题库
+
+ .iconbianchengtiku
+
+
+
+
+
+
+ 对教师
+
+ .iconduijiaoshi
+
+
+
+
+
+
+ 学士帽
+
+ .iconxueshimao2
+
+
+
+
+
+
+ 学士
+
+ .iconxueshi
+
+
+
+
+
+
+ 职业
+
+ .iconzhiye
+
+
+
+
+
+
+ 培训
+
+ .iconpeixun1
+
+
+
+
+
+
+ 学士帽
+
+ .iconxueshimao1
+
+
+
+
+
+
+ 学生
+
+ .iconxuesheng
+
+
+
+
+
+
+ 培训
+
+ .iconpeixun
+
+
+
+
+
+
+ 电脑
+
+ .iconthrowing-screen
+
+
+
+
+
+
+ 会计引擎
+
+ .iconhuijiyinqing
+
+
+
+
+
+
+ 会计从业
+
+ .iconkuaijicongye
+
+
+
+
+
+
+ 学士帽
+
+ .iconxueshimao
+
+
+
+
+
+
+ 编程
+
+ .iconbiancheng
+
+
+
+
+
+
+ 教师类
+
+ .iconjiaoshilei
+
+
+
+
+
+
+ 奖牌
+
+ .iconjiangpai1
+
+
+
+
+
+
+ 奖牌
+
+ .iconweibiaoti-
+
+
+
+
+
+
+ 奖牌
+
+ .iconjiangpai
+
+
+
+
+
+
+ 后台-会员管理
+
+ .iconhuiyuanguanli
+
+
+
+
+
+
+ VIP升级_2
+
+ .iconvipshengji2
+
+
+
+
+
+
+ ad
+
+ .iconad
+
+
+
+
+
+
+ 积分
+
+ .iconjifen
+
+
+
+
+
+
+ 金牌
+
+ .iconjinpai
+
+
+
+
+
+
+ 金牌
+
+ .iconjinpai1
+
+
+
+
+
+
+ 金牌
+
+ .iconjinpai2
+
+
+
+
+
+
+ 礼品
+
+ .iconlipin
+
+
+
+
+
+
+ 化工新材料
+
+ .iconhuagongxincailiao
+
+
+
+
+
+
+ 新能源
+
+ .iconxinnengyuan1
+
+
+
+
+
+
+ 安防
+
+ .iconanfang
+
+
+
+
+
+
+ 化工原料
+
+ .iconhuagongyuanliao
+
+
+
+
+
+
+ 咨询
+
+ .iconzixun5
+
+
+
+
+
+
+ 安全防护~
+
+ .iconanquanfanghu
+
+
+
+
+
+
+ 咨询区
+
+ .iconzixunqu
+
+
+
+
+
+
+ 空气开关
+
+ .iconkongqikaiguan
+
+
+
+
+
+
+ 家庭安防
+
+ .iconjiatinganfang-
+
+
+
+
+
+
+ 工业安全
+
+ .icongongyeanquan
+
+
+
+
+
+
+ 新能源
+
+ .iconxinnengyuan
+
+
+
+
+
+
+ 五金
+
+ .iconwujin_
+
+
+
+
+
+
+ 咨询
+
+ .iconzixun6
+
+
+
+
+
+
+ 购物车
+
+ .icongouwuche01
+
+
+
+
+
+
+ 购物车
+
+ .icongouwuche2
+
+
+
+
+
+
+ 用户
+
+ .iconuser-copy
+
+
+
+
+
+
+ 扫描
+
+ .iconsaomiao
+
+
+
+
+
+
+ 购物车
+
+ .icongouwuche4
+
+
+
+
+
+
+ 信息
+
+ .iconxinxi
+
+
+
+
+
+
+ 信息
+
+ .iconxinxi1
+
+
+
+
+
+
+ 注册
+
+ .iconzhuce6
+
+
+
+
+
+
+ 信息
+
+ .iconxinxi2
+
+
+
+
+
+
+ 信息
+
+ .iconICon-
+
+
+
+
+
+
+ 信息
+
+ .iconxinxi3
+
+
+
+
+
+
+ 用户
+
+ .iconyonghu7
+
+
+
+
+
+
+ 信息
+
+ .iconxinxi4
+
+
+
+
+
+
+ 信息
+
+ .iconxinxi5
+
+
+
+
+
+
+ 购物车 (1)
+
+ .icongouwuche5
+
+
+
+
+
+
+ 注册 (1)
+
+ .iconzhuce7
+
+
+
+
+
+
+ 用户
+
+ .iconyonghu8
+
+
+
+
+
+
+ 注册
+
+ .iconzhuce8
+
+
+
+
+
+
+ 方向
+
+ .iconleft
+
+
+
+
+
+
+ 方向
+
+ .iconleft-copy-copy
+
+
+
+
+
+
+ 猜你喜欢
+
+ .iconcainixihuan
+
+
+
+
+
+
+ 猜你喜欢
+
+ .iconxihuan
+
+
+
+
+
+
+ 猜你喜欢
+
+ .iconcainixihuan1
+
+
+
+
+
+
+ 猜你喜欢
+
+ .iconcainixihuan2
+
+
+
+
+
+
+ 猜你喜欢
+
+ .iconcainixihuan3
+
+
+
+
+
+
+ 车辆信息背景
+
+ .iconcheliangxinxibeijing
+
+
+
+
+
+
+ 背景楼房
+
+ .iconbeijingloufang
+
+
+
+
+
+
+ 企业身份-背景
+
+ .iconqiyeshenfen-beijing
+
+
+
+
+
+
+ 优惠券背景@3x
+
+ .iconyouhuiquanbeijingx
+
+
+
+
+
+
+ 飞行中的背景
+
+ .iconfeihangzhongdebeijing
+
+
+
+
+
+
+ 录像卡片背景
+
+ .iconluxiangkapianbeijing
+
+
+
+
+
+
+ 箭头背景
+
+ .iconjiantoubeijing
+
+
+
+
+
+
+ 发布
+
+ .iconfabu
+
+
+
+
+
+
+ 发布
+
+ .iconfabu1
+
+
+
+
+
+
+ 发布
+
+ .iconfabu-copy
+
+
+
+
+
+
+ vip
+
+ .iconvip
+
+
+
+
+
+
+ Vip
+
+ .iconvip1
+
+
+
+
+
+
+ vip
+
+ .iconvip2
+
+
+
+
+
+
+ vip
+
+ .iconvip3
+
+
+
+
+
+
+ VIP
+
+ .iconVIP
+
+
+
+
+
+
+ VIP
+
+ .iconVIP1
+
+
+
+
+
+
+ VIP
+
+ .iconVIP2
+
+
+
+
+
+
+ VIP
+
+ .iconVIP3
+
+
+
+
+
+
+ 闪电
+
+ .iconshandian
+
+
+
+
+
+
+ 闪电
+
+ .iconshandian1
+
+
+
+
+
+
+ 购
+
+ .icongou
+
+
+
+
+
+
+ 购
+
+ .icongou1
+
+
+
+
+
+
+ 购
+
+ .icongou2
+
+
+
+
+
+
+ 购物
+
+ .icongouwu
+
+
+
+
+
+
+ 购物
+
+ .icongouwu1
+
+
+
+
+
+
+ 店铺
+
+ .icondianpu
+
+
+
+
+
+
+ 购物
+
+ .icongouwu2
+
+
+
+
+
+
+ 购物 (1)
+
+ .icongouwu3
+
+
+
+
+
+
+ 购物
+
+ .icongouwu4
+
+
+
+
+
+
+ 购物
+
+ .iconziyuan2
+
+
+
+
+
+
+ 购物
+
+ .icongouwu5
+
+
+
+
+
+
+ 购物
+
+ .icongouwu6
+
+
+
+
+
+
+ 购物
+
+ .icongouwu7
+
+
+
+
+
+
+ 店铺
+
+ .icondianpu1
+
+
+
+
+
+
+ 购物
+
+ .icongouwu8
+
+
+
+
+
+
+ 购物
+
+ .icongouwu9
+
+
+
+
+
+
+ 截止时间
+
+ .iconjiezhishijian
+
+
+
+
+
+
+ 地址
+
+ .icondizhi1
+
+
+
+
+
+
+ 数量
+
+ .iconshuliang
+
+
+
+
+
+
+ 时间 历史记录 计时 钟表 线性
+
+ .iconshijian
+
+
+
+
+
+
+ 数量
+
+ .iconshuliang1
+
+
+
+
+
+
+ 地址
+
+ .icondizhi2
+
+
+
+
+
+
+ inbox
+
+ .iconinbox
+
+
+
+
+
+
+ apartment
+
+ .iconapartment
+
+
+
+
+
+
+ user
+
+ .iconuser
+
+
+
+
+
+
+ home
+
+ .iconhome
+
+
+
+
+
+
+ 三角形
+
+ .icontriangle-copy-copy-copy
+
+
+
+
+
+
+ 文件
+
+ .iconwenjian
+
+
+
+
+
+
+ 文件
+
+ .iconwenjian1
+
+
+
+
+
+
+ 文件
+
+ .iconwenjian2
+
+
+
+
+
+
+ 文档
+
+ .iconiconset0118
+
+
+
+
+
+
+ 文档
+
+ .iconwendang
+
+
+
+
+
+
+ 公司认证
+
+ .icongongsirenzheng
+
+
+
+
+
+
+ 公司
+
+ .icongongsi1
+
+
+
+
+
+
+ 公司
+
+ .icongongsi2
+
+
+
+
+
+
+ ST公司
+
+ .icongongsi3
+
+
+
+
+
+
+ 公司&面性
+
+ .icongongsi_
+
+
+
+
+
+
+ 公司
+
+ .icongongsi4
+
+
+
+
+
+
+ 齿轮
+
+ .icon26
+
+
+
+
+
+
+ 定制加工
+
+ .icondingzhijiagong
+
+
+
+
+
+
+ 委外加工
+
+ .iconweiwaijiagong
+
+
+
+
+
+
+ Hot
+
+ .iconHot
+
+
+
+
+
+
+ 齿轮
+
+ .iconchilun
+
+
+
+
+
+
+ HOT
+
+ .iconHOT-copy-copy-copy
+
+
+
+
+
+
+ 连锁加工
+
+ .iconliansuojiagong
+
+
+
+
+
+
+ 健康_热雾
+
+ .iconjiankangrewu
+
+
+
+
+
+
+ 健康
+
+ .icon74133
+
+
+
+
+
+
+ 健康指南文字
+
+ .iconjkznwenzi
+
+
+
+
+
+
+ 健康服务
+
+ .iconjiankangfuwu
+
+
+
+
+
+
+ 健康头条
+
+ .iconjiankangtoutiao
+
+
+
+
+
+
+ 健康营养
+
+ .iconicon-test
+
+
+
+
+
+
+ 健康商城
+
+ .iconjiankangshangcheng
+
+
+
+
+
+
+ 健康商品
+
+ .iconjiankangshangpin
+
+
+
+
+
+
+ 健康
+
+ .iconjiankang
+
+
+
+
+
+
+ 健康
+
+ .icon2
+
+
+
+
+
+
+ 健康度
+
+ .iconjiankangdu
+
+
+
+
+
+
+ 健康云 页面模版
+
+ .iconjiankangyunyemianmokuai
+
+
+
+
+
+
+ 健康评估
+
+ .iconjiankangpinggu
+
+
+
+
+
+
+ 健康
+
+ .iconjiankang1
+
+
+
+
+
+
+ 健康资讯
+
+ .iconjiankangzixun
+
+
+
+
+
+
+ 健康趋势
+
+ .iconjiankangqushi
+
+
+
+
+
+
+ 健康
+
+ .iconjiankang2
+
+
+
+
+
+
+ 健康讲堂
+
+ .iconjiankangjiangtang
+
+
+
+
+
+
+ 母婴
+
+ .iconmuying
+
+
+
+
+
+
+ 代理平台
+
+ .icondailipingtai
+
+
+
+
+
+
+ 代理平台
+
+ .icondailipingtai1
+
+
+
+
+
+
+ 母婴
+
+ .iconmuying1
+
+
+
+
+
+
+ 加工管理
+
+ .iconjiagongguanli
+
+
+
+
+
+
+ 代理合营
+
+ .iconapp-
+
+
+
+
+
+
+ 母婴
+
+ .iconmuying2
+
+
+
+
+
+
+ 加工过程
+
+ .icontubiao_huabanfuben
+
+
+
+
+
+
+ 首页/tab/会展
+
+ .iconshouyetabhuizhan
+
+
+
+
+
+
+ 代理
+
+ .icondaili
+
+
+
+
+
+
+ 代理
+
+ .icondaili1
+
+
+
+
+
+
+ 会展服务
+
+ .iconhuizhanfuwu
+
+
+
+
+
+
+ 展会
+
+ .iconzhanhui
+
+
+
+
+
+
+ 放大镜
+
+ .iconfangdajing
+
+
+
+
+
+
+ 电工电料
+
+ .icondiangongdianliao
+
+
+
+
+
+
+ 排插
+
+ .iconpaicha
+
+
+
+
+
+
+ 芯片
+
+ .iconxinpian
+
+
+
+
+
+
+ 灯管
+
+ .icondengguan
+
+
+
+
+
+
+ 购物车
+
+ .icongouwuche3
+
+
+
+
+
+
+ 皇冠
+
+ .iconhuangguan1
+
+
+
+
+
+
+ jxhy
+
+ .iconjxhy
+
+
+
+
+
+
+ jxhy
+
+ .iconlogo
+
+
+
+
+
+
+ 灯暖
+
+ .icondengnuan
+
+
+
+
+
+
+ 灯具
+
+ .iconyoupinwangtubiao-
+
+
+
+
+
+
+ 灯具
+
+ .icondengju2
+
+
+
+
+
+
+ 射灯
+
+ .iconshedeng
+
+
+
+
+
+
+ 灯具
+
+ .icondengju3
+
+
+
+
+
+
+ 灯具
+
+ .icondengju
+
+
+
+
+
+
+ 筒灯
+
+ .icontongdeng
+
+
+
+
+
+
+ 灯具
+
+ .icondengju1
+
+
+
+
+
+
+ 筒灯
+
+ .icontongdeng1
+
+
+
+
+
+
+ logo
+
+ .iconlenovologo2015
+
+
+
+
+
+
+ 谷歌
+
+ .iconGoogle
+
+
+
+
+
+
+ 新闻
+
+ .iconxinwen
+
+
+
+
+
+
+ 新闻
+
+ .iconxinwen1
+
+
+
+
+
+
+ 新闻
+
+ .iconxinwen2
+
+
+
+
+
+
+ 新闻
+
+ .iconxinwen3
+
+
+
+
+
+
+ 新闻
+
+ .iconxinwen4
+
+
+
+
+
+
+ 更多
+
+ .icongengduo1
+
+
+
+
+
+
+ 更多
+
+ .iconmore-dot
+
+
+
+
+
+
+ 商品-配置管理
+
+ .iconshangpin-peizhiguanli
+
+
+
+
+
+
+ 商品3d说明
+
+ .iconyingxiaohuodong
+
+
+
+
+
+
+ 商品销售情况
+
+ .iconshangpinxiaoshouqingkuang
+
+
+
+
+
+
+ 商品价格管理
+
+ .iconshangpinjiageguanli
+
+
+
+
+
+
+ 公告
+
+ .icongonggao
+
+
+
+
+
+
+ 公告
+
+ .icongonggao1
+
+
+
+
+
+
+ 公告
+
+ .icongonggao2
+
+
+
+
+
+
+ 公告
+
+ .icongonggao3
+
+
+
+
+
+
+ 公告 (1)
+
+ .icongonggao4
+
+
+
+
+
+
+ 公告
+
+ .iconweibiaoti-_
+
+
+
+
+
+
+ 公告
+
+ .icongonggao5
+
+
+
+
+
+
+ 分类
+
+ .iconfenlei4
+
+
+
+
+
+
+ bottom_首页
+
+ .iconshouye
+
+
+
+
+
+
+ 首页
+
+ .iconiconfontshouye
+
+
+
+
+
+
+ qq
+
+ .iconqq1
+
+
+
+
+
+
+ DPI-首页
+
+ .iconshouye1
+
+
+
+
+
+
+ QQ
+
+ .iconqq2
+
+
+
+
+
+
+ 分类
+
+ .icon3fenlei
+
+
+
+
+
+
+ 分类
+
+ .iconfenlei5
+
+
+
+
+
+
+ 类目 品类 分类 类别
+
+ .iconleimupinleifenleileibie
+
+
+
+
+
+
+ 分类
+
+ .iconrenrenyaotubiao
+
+
+
+
+
+
+ 分类
+
+ .iconfenlei6
+
+
+
+
+
+
+ 类目 品类 分类 类别-2-02
+
+ .iconcategory
+
+
+
+
+
+
+ QQ (1)
+
+ .iconQQ
+
+
+
+
+
+
+ 类目 品类 分类 类别
+
+ .iconjifenfenlei
+
+
+
+
+
+
+ 分类
+
+ .iconfenlei7
+
+
+
+
+
+
+ 首页
+
+ .iconshouye2
+
+
+
+
+
+
+ 首页
+
+ .iconziyuan1
+
+
+
+
+
+
+ 首页
+
+ .iconshouye3
+
+
+
+
+
+
+ 首页
+
+ .iconhome-active
+
+
+
+
+
+
+ 首页
+
+ .iconshouye4
+
+
+
+
+
+
+ bao
+
+ .iconbao
+
+
+
+
+
+
+ bao
+
+ .iconbao1
+
+
+
+
+
+
+ 支
+
+ .iconzhi
+
+
+
+
+
+
+ 更多
+
+ .iconmore
+
+
+
+
+
+
+ 更多
+
+ .iconbf-more
+
+
+
+
+
+
+ 更多
+
+ .icongengduo
+
+
+
+
+
+
+ 右剪头
+
+ .iconyoujiantou
+
+
+
+
+
+
+ 右剪头
+
+ .iconyoujiantou1
+
+
+
+
+
+
+ 小区到家-轮播右剪头
+
+ .iconxiaoqudaojialunbozuojiantou-copy
+
+
+
+
+
+
+ 黄底剪头
+
+ .iconhuangdijiantou
+
+
+
+
+
+
+ 用户
+
+ .iconyonghu1
+
+
+
+
+
+
+ 注册
+
+ .iconmsnui-reg
+
+
+
+
+
+
+ 注册
+
+ .iconzhuce
+
+
+
+
+
+
+ 注册
+
+ .iconzhuce1
+
+
+
+
+
+
+ 用户
+
+ .iconyonghu2
+
+
+
+
+
+
+ 用户
+
+ .iconyonghu3
+
+
+
+
+
+
+ 用户
+
+ .iconyonghu4
+
+
+
+
+
+
+ 注册 (5)
+
+ .iconzhuce2
+
+
+
+
+
+
+ 用户
+
+ .iconyonghu5
+
+
+
+
+
+
+ 用户
+
+ .iconyonghu6
+
+
+
+
+
+
+ 注册
+
+ .iconzhuce3
+
+
+
+
+
+
+ 注册
+
+ .iconzhuce4
+
+
+
+
+
+
+ 注册
+
+ .iconzhuce5
+
+
+
+
+
+
+ 采购
+
+ .iconcaigou
+
+
+
+
+
+
+ 采购员
+
+ .icongouwuche1
+
+
+
+
+
+
+ 咨询
+
+ .iconzixun
+
+
+
+
+
+
+ 帮助
+
+ .icon6
+
+
+
+
+
+
+ 咨询
+
+ .iconzixun1
+
+
+
+
+
+
+ 帮助
+
+ .iconbangzhu
+
+
+
+
+
+
+ 帮助
+
+ .iconbangzhu1
+
+
+
+
+
+
+ 咨询
+
+ .iconguanjiaowangtubiao59
+
+
+
+
+
+
+ 咨询
+
+ .iconzixun-copy
+
+
+
+
+
+
+ 售后
+
+ .iconshouhou
+
+
+
+
+
+
+ 开店
+
+ .iconkaidian
+
+
+
+
+
+
+ 全员开店
+
+ .iconquanyuankaidian
+
+
+
+
+
+
+ 正品
+
+ .iconzhengpin
+
+
+
+
+
+
+ 咨询
+
+ .iconzixun2
+
+
+
+
+
+
+ 帮助
+
+ .iconbangzhu2
+
+
+
+
+
+
+ 快速开店
+
+ .iconkuaisukaidian
+
+
+
+
+
+
+ 咨询
+
+ .iconzixun3
+
+
+
+
+
+
+ 免费开店
+
+ .icon-mianfeikaidian
+
+
+
+
+
+
+ 申请开店
+
+ .iconshenqingkaidian
+
+
+
+
+
+
+ 开店指南
+
+ .iconkaidianzhinan
+
+
+
+
+
+
+ 安全
+
+ .iconanquan
+
+
+
+
+
+
+ 咨询
+
+ .iconCombinedShapeCopy
+
+
+
+
+
+
+ 我要开店-边框
+
+ .iconwoyaokaidian-biankuang
+
+
+
+
+
+
+ 售后
+
+ .iconshouhou1
+
+
+
+
+
+
+ 快速开店
+
+ .iconkuaisukaidian1
+
+
+
+
+
+
+ 开店
+
+ .iconkaidian1
+
+
+
+
+
+
+ 安全
+
+ .iconanquan1
+
+
+
+
+
+
+ 正品
+
+ .iconzhengpin1
+
+
+
+
+
+
+ 咨询
+
+ .iconzixun4
+
+
+
+
+
+
+ 报告-时尚品牌开店数量
+
+ .iconbaogao-shishangpinpaikaidianshuliang
+
+
+
+
+
+
+ 开店
+
+ .iconkaidian2
+
+
+
+
+
+
+ 开店宝
+
+ .iconkaidian3
+
+
+
+
+
+
+ 售后
+
+ .iconshouhou2
+
+
+
+
+
+
+ 免费开店
+
+ .iconmianfd
+
+
+
+
+
+
+ 优质询盘推荐
+
+ .iconyouzhixunpantuijian
+
+
+
+
+
+
+ 优质询盘推荐_粗
+
+ .iconyouzhixunpantuijian_cu
+
+
+
+
+
+
+ 帮助
+
+ .iconbangzhu3
+
+
+
+
+
+
+ 开店
+
+ .iconkaidian4
+
+
+
+
+
+
+ 咨询
+
+ .iconshitu_ad_consultation
+
+
+
+
+
+
+ 正品
+
+ .iconzhengpin2
+
+
+
+
+
+
+ 安全
+
+ .iconanquan2
+
+
+
+
+
+
+ 发布
+
+ .iconfabu2
+
+
+
+
+
+
+ 购物车满
+
+ .icongouwucheman
+
+
+
+
+
+
+ 购物车空
+
+ .icongouwuchekong
+
+
+
+
+
+
+ 购物车满
+
+ .icongouwucheman1
+
+
+
+
+
+
+ 食品
+
+ .iconshipin1
+
+
+
+
+
+
+ 运输1
+
+ .iconyunshu1
+
+
+
+
+
+
+ 类目图标-日用百货
+
+ .iconleimutubiaoriyongbaihuo
+
+
+
+
+
+
+ 食品
+
+ .iconshipin2
+
+
+
+
+
+
+ 维修工具
+
+ .iconweixiugongju
+
+
+
+
+
+
+ 购物车
+
+ .icongouwuche
+
+
+
+
+
+
+ 基础化工
+
+ .iconjichuhuagong
+
+
+
+
+
+
+ 化工
+
+ .iconhuagong
+
+
+
+
+
+
+ 家居百货
+
+ .iconjiajubaihuo
+
+
+
+
+
+
+ 衣服
+
+ .iconyifu
+
+
+
+
+
+
+ 房屋家居
+
+ .iconfangwujiaju
+
+
+
+
+
+
+ 数码
+
+ .iconweibiaoti2fuzhi03
+
+
+
+
+
+
+ 家居家装
+
+ .iconweibiaoti2fuzhi13
+
+
+
+
+
+
+ 数码
+
+ .iconshuma
+
+
+
+
+
+
+ 日用百货
+
+ .iconriyongbaihuo
+
+
+
+
+
+
+ 食品
+
+ .iconshipin3
+
+
+
+
+
+
+ 衣服
+
+ .iconyifu1
+
+
+
+
+
+
+ 商务合作
+
+ .iconshangwuhezuo
+
+
+
+
+
+
+ 消防员
+
+ .iconjingwuicon_svg-
+
+
+
+
+
+
+ 维修
+
+ .iconweixiu
+
+
+
+
+
+
+ 运输中
+
+ .iconyunshuzhong
+
+
+
+
+
+
+ 推荐汽车
+
+ .icontuijianqiche
+
+
+
+
+
+
+ 消防斧
+
+ .iconxiaofangfu
+
+
+
+
+
+
+ 消防水泵
+
+ .iconxiaofangshuibeng
+
+
+
+
+
+
+ 化工
+
+ .iconhuagong1
+
+
+
+
+
+
+ 商务
+
+ .iconshangwu
+
+
+
+
+
+
+ 维修
+
+ .iconweixiu1
+
+
+
+
+
+
+ 食品
+
+ .iconfood
+
+
+
+
+
+
+ 机械
+
+ .iconmechanical
+
+
+
+
+
+
+ 商务
+
+ .iconshangwu1
+
+
+
+
+
+
+ 已发货-物流详情
+
+ .iconyifahuodefuben
+
+
+
+
+
+
+ 水滴
+
+ .iconblob
+
+
+
+
+
+
+ 运输-2
+
+ .iconyunshu-
+
+
+
+
+
+
+ 运输-1
+
+ .iconyunshu-1
+
+
+
+
+
+
+ 运输-4
+
+ .iconyunshu-2
+
+
+
+
+
+
+ 运输-9
+
+ .iconyunshu-3
+
+
+
+
+
+
+ 运输-19
+
+ .iconyunshu-4
+
+
+
+
+
+
+ 运输-36
+
+ .iconyunshu-5
+
+
+
+
+
+
+ 运输-59
+
+ .iconyunshu-6
+
+
+
+
+
+
+ 家居生活
+
+ .iconjiajushenghuo
+
+
+
+
+
+
+ 汽车
+
+ .iconqiche
+
+
+
+
+
+
+ 公安消防
+
+ .icongonganxiaofang
+
+
+
+
+
+
+ 化工新材料
+
+ .iconzu
+
+
+
+
+
+
+ 其他材料,化工
+
+ .iconzu1
+
+
+
+
+
+
+ 高端化工
+
+ .icongaoduanhuagong
+
+
+
+
+
+
+ 流体机械
+
+ .iconliutijixie
+
+
+
+
+
+
+ 化工
+
+ .iconhuagong2
+
+
+
+
+
+
+ 汽车
+
+ .iconqiche1
+
+
+
+
+
+
+ 行业icon_食品饮料
+
+ .iconkcb_hangyeicon-
+
+
+
+
+
+
+ 化工
+
+ .iconhuagong3
+
+
+
+
+
+
+ 食品-面包
+
+ .iconshipin-mianbao
+
+
+
+
+
+
+ 用户
+
+ .iconyonghu
+
+
+
+
+
+
+ 广告
+
+ .iconguanggao
+
+
+
+
+
+
+ 客服
+
+ .iconkefu
+
+
+
+
+
+
+ 4 返回顶部 白
+
+ .icon4fanhuidingbubai
+
+
+
+
+
+
+ 返回顶部
+
+ .iconfanhuidingbu
+
+
+
+
+
+
+ 返回顶部
+
+ .iconfanhuidingbu1
+
+
+
+
+
+
+ 分类
+
+ .iconfenlei
+
+
+
+
+
+
+ 分类
+
+ .iconfenlei1
+
+
+
+
+
+
+ 分类
+
+ .iconiconfl
+
+
+
+
+
+
+ 分类
+
+ .iconfenlei2
+
+
+
+
+
+
+ 分类
+
+ .iconfenlei3
+
+
+
+
+
+
+ 实心正方形
+
+ .iconshixinzhengfangxing
+
+
+
+
+
+
+ 今日推荐
+
+ .iconjinrituijian
+
+
+
+
+
+
+ 最新货源
+
+ .iconzuixinhuoyuan
+
+
+
+
+
+
+ 相机
+
+ .iconiconxj
+
+
+
+
+
+
+ 新闻
+
+ .iconquanbuxinwen
+
+
+
+
+
+
+ 招商代理
+
+ .iconzhaoshangdaili
+
+
+
+
+
+
+ 视频
+
+ .iconshipin
+
+
+
+
+
+
+ 商品
+
+ .iconshangpin
+
+
+
+
+
+
+ 新闻
+
+ .iconziyuan
+
+
+
+
+
+
+ 商品
+
+ .iconshangpin1
+
+
+
+
+
+
+ 公司地址
+
+ .icongongsidizhi
+
+
+
+
+
+
+ 品牌
+
+ .iconpinpai
+
+
+
+
+
+
+ 食物-97
+
+ .iconshiwu-
+
+
+
+
+
+
+ 商品
+
+ .iconshangpin2
+
+
+
+
+
+
+ icon_推荐nor
+
+ .iconicon_tuijiannor
+
+
+
+
+
+
+ 公司名称
+
+ .icongongsimingcheng
+
+
+
+
+
+
+ 零食、糖果
+
+ .iconlingshitangguo
+
+
+
+
+
+
+ 微信
+
+ .iconiconset0140
+
+
+
+
+
+
+ 电话
+
+ .iconiconfontdianhua4
+
+
+
+
+
+
+ 车巴巴-返回顶部
+
+ .iconcontrol101
+
+
+
+
+
+
+ 在线咨询
+
+ .iconzaixianzixun
+
+
+
+
+
+
+ 欢迎页
+
+ .iconhuanyingye
+
+
+
+
+
+
+ 二维码
+
+ .iconerweima2
+
+
+
+
+
+
+ 电话
+
+ .icondianhua1
+
+
+
+
+
+
+ 二维码
+
+ .iconerweima3
+
+
+
+
+
+
+ 电话
+
+ .icondianhua2
+
+
+
+
+
+
+ 通用-欢迎你图标
+
+ .icontongyong-huanyingnitubiao
+
+
+
+
+
+
+ ZS二维码
+
+ .iconerweima
+
+
+
+
+
+
+ 二维码
+
+ .iconerweima1
+
+
+
+
+
+
+ 二维码
+
+ .iconico
+
+
+
+
+
+
+ 位置
+
+ .iconweizhi
+
+
+
+
+
+
+ 位置
+
+ .iconweizhi1
+
+
+
+
+
+
+ 产品
+
+ .iconchanpin1
+
+
+
+
+
+
+ 资质证书
+
+ .iconzizhizhengshu
+
+
+
+
+
+
+ 公司
+
+ .icongongsi
+
+
+
+
+
+
+ 证书
+
+ .iconzhengshu1
+
+
+
+
+
+
+ 产品
+
+ .iconweibiaoti35
+
+
+
+
+
+
+ 证书
+
+ .iconzhengshu
+
+
+
+
+
+
+ 公司信息
+
+ .icongongsixinxi
+
+
+
+
+
+
+ 产品
+
+ .iconchanpin
+
+
+
+
+
+
+ 邮件
+
+ .iconyoujian1
+
+
+
+
+
+
+ qq
+
+ .iconqq
+
+
+
+
+
+
+ 地址
+
+ .icondizhi
+
+
+
+
+
+
+ 电话
+
+ .icondianhua5
+
+
+
+
+
+
+ 电话
+
+ .icondianhua
+
+
+
+
+
+
+ 邮件
+
+ .iconyoujian
+
+
+
+
+
+
font-class 引用
+
+
+
font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。
+
与 Unicode 使用方式相比,具有如下特点:
+
+ 兼容性良好,支持 IE8+,及所有现代浏览器。
+ 相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
+ 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。
+ 不过因为本质上还是使用的字体,所以多色图标还是不支持的。
+
+
使用步骤如下:
+
第一步:引入项目下面生成的 fontclass 代码:
+
<link rel="stylesheet" href="./iconfont.css">
+
+
第二步:挑选相应图标并获取类名,应用于页面:
+
<span class="iconfont iconxxx"></span>
+
+
+ "
+ iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。
+
+
+
+
+
+
+
+
+
+
+ 更多
+ #icongengduo2
+
+
+
+
+
+
+ 产品
+ #iconchanpin2
+
+
+
+
+
+
+ 地球
+ #icondiqiu
+
+
+
+
+
+
+ 专用车
+ #iconzhuanyongche
+
+
+
+
+
+
+ 热卖
+ #iconremai
+
+
+
+
+
+
+ 消息
+ #iconxiaoxi
+
+
+
+
+
+
+ 消息
+ #iconxiaoxi1
+
+
+
+
+
+
+ 电话
+ #icondianhua3
+
+
+
+
+
+
+ 登陆
+ #icondenglu
+
+
+
+
+
+
+ 鞋子
+ #iconxiezi
+
+
+
+
+
+
+ 关注
+ #iconguanzhu
+
+
+
+
+
+
+ 关注
+ #iconguanzhu1
+
+
+
+
+
+
+ 名片
+ #iconmingpian
+
+
+
+
+
+
+ 连接
+ #iconlianjie3
+
+
+
+
+
+
+ 连接
+ #iconlianjie4
+
+
+
+
+
+
+ 首页
+ #iconshouye-1
+
+
+
+
+
+
+ 首页
+ #iconshouye6
+
+
+
+
+
+
+ 搜索
+ #iconsousuo
+
+
+
+
+
+
+ 首页
+ #iconshouye7
+
+
+
+
+
+
+ 首页
+ #iconshouye8
+
+
+
+
+
+
+ 首页
+ #iconshouye9
+
+
+
+
+
+
+ 首页
+ #iconshouye10
+
+
+
+
+
+
+ 首页
+ #iconshouye11
+
+
+
+
+
+
+ 首页
+ #iconshouye12
+
+
+
+
+
+
+ 首页
+ #iconshouye13
+
+
+
+
+
+
+ 首页 copy
+ #iconshouyecopy
+
+
+
+
+
+
+ 首页 (3)
+ #iconshouye14
+
+
+
+
+
+
+ 首页
+ #iconicon_huabanfuben
+
+
+
+
+
+
+ 首页
+ #iconshouye15
+
+
+
+
+
+
+ 首页
+ #iconshouye16
+
+
+
+
+
+
+ 首页 未点击
+ #iconshouyeweidianji
+
+
+
+
+
+
+ 首页
+ #iconshouye17
+
+
+
+
+
+
+ 首页
+ #iconshouye18
+
+
+
+
+
+
+ 首页
+ #iconshouye19
+
+
+
+
+
+
+ 首页
+ #iconshouye20
+
+
+
+
+
+
+ 首页
+ #iconshouye21
+
+
+
+
+
+
+ 首页
+ #iconshouye22
+
+
+
+
+
+
+ 环保
+ #iconhuanbao
+
+
+
+
+
+
+ 五金工具
+ #iconwujingongju
+
+
+
+
+
+
+ 安防_警报
+ #iconb-ic-4
+
+
+
+
+
+
+ 机器人
+ #iconjiqiren2
+
+
+
+
+
+
+ 模具
+ #iconmoju
+
+
+
+
+
+
+ 环保
+ #iconhuanbao1
+
+
+
+
+
+
+ 仪表
+ #iconyibiao
+
+
+
+
+
+
+ 五金:工具
+ #iconwujingongju1
+
+
+
+
+
+
+ 新品
+ #iconxinpin
+
+
+
+
+
+
+ 仪器
+ #iconyiqi
+
+
+
+
+
+
+ 机械
+ #iconjixie
+
+
+
+
+
+
+ 安防监控
+ #iconanfangjiankong
+
+
+
+
+
+
+ 电工电气_
+ #icondiangongdianqi_
+
+
+
+
+
+
+ 交通
+ #iconjiaotong
+
+
+
+
+
+
+ 污水处理站监测
+ #iconwushuichulizhanjiance
+
+
+
+
+
+
+ 污水泵
+ #iconwushuibeng
+
+
+
+
+
+
+ 污水处理费
+ #iconwushuichulifei
+
+
+
+
+
+
+ 污水
+ #iconwushui
+
+
+
+
+
+
+ 污水处理
+ #iconwushuichuli
+
+
+
+
+
+
+ dt-污水处理厂
+ #icondt-wushuichulichang
+
+
+
+
+
+
+ 首页-咨询电话
+ #iconshouye-zixundianhua
+
+
+
+
+
+
+ 查看
+ #iconchakan2
+
+
+
+
+
+
+ 查看
+ #iconchakan3
+
+
+
+
+
+
+ home
+ #iconhome-o
+
+
+
+
+
+
+ home
+ #iconsanguohome
+
+
+
+
+
+
+ home
+ #iconzhuye
+
+
+
+
+
+
+ home
+ #iconhome1
+
+
+
+
+
+
+ 团队 线形
+ #icontuanduixianxing
+
+
+
+
+
+
+ 团队
+ #icontuandui1
+
+
+
+
+
+
+ 团队
+ #icontuandui2
+
+
+
+
+
+
+ 勾
+ #icongou3
+
+
+
+
+
+
+ 勾
+ #icongou-copy
+
+
+
+
+
+
+ 勾
+ #icongou4
+
+
+
+
+
+
+ 勾
+ #icongou5
+
+
+
+
+
+
+ 勾
+ #icongou6
+
+
+
+
+
+
+ 勾
+ #icongou7
+
+
+
+
+
+
+ 勾
+ #icongou8
+
+
+
+
+
+
+ 询价管理
+ #iconxunjiaguanli
+
+
+
+
+
+
+ 采购
+ #iconcaigou1
+
+
+
+
+
+
+ 采购主管
+ #iconcaigouzhuguan
+
+
+
+
+
+
+ 采购
+ #iconcaigou2
+
+
+
+
+
+
+ 采购跟踪
+ #iconcaigougenzong
+
+
+
+
+
+
+ 地方特产
+ #icondifangtechan
+
+
+
+
+
+
+ 鸡肉
+ #iconjirou1
+
+
+
+
+
+
+ 芒果
+ #iconmangguo
+
+
+
+
+
+
+ 芒果
+ #iconmangguo1
+
+
+
+
+
+
+ 芒果
+ #iconmangguo2
+
+
+
+
+
+
+ 鸡肉
+ #icon-jirou
+
+
+
+
+
+
+ 鸡肉
+ #iconjirou
+
+
+
+
+
+
+ 水果
+ #iconshuiguo
+
+
+
+
+
+
+ 家禽
+ #iconjiaqin
+
+
+
+
+
+
+ 水果
+ #iconshuiguo1
+
+
+
+
+
+
+ 鱼
+ #iconyu
+
+
+
+
+
+
+ 鱼
+ #iconyu1
+
+
+
+
+
+
+ 水果
+ #iconshuiguo2
+
+
+
+
+
+
+ 水果
+ #iconshuiguo3
+
+
+
+
+
+
+ 水果
+ #iconshuiguo4
+
+
+
+
+
+
+ 种子追溯
+ #iconzhongzizhuisu
+
+
+
+
+
+
+ 家禽
+ #iconjiaqin1
+
+
+
+
+
+
+ 种子投资
+ #iconzhongzitouzi
+
+
+
+
+
+
+ 虾
+ #iconxia
+
+
+
+
+
+
+ 水果
+ #iconshuiguo5
+
+
+
+
+
+
+ 家禽
+ #iconjiaqin2
+
+
+
+
+
+
+ 小龙虾
+ #iconxiaolongxia
+
+
+
+
+
+
+ 竹笋
+ #iconzhusun
+
+
+
+
+
+
+ 罐头
+ #iconguantou
+
+
+
+
+
+
+ 竹笋
+ #iconshucai-
+
+
+
+
+
+
+ 虾
+ #iconxia1
+
+
+
+
+
+
+ 种子
+ #iconzhongzi
+
+
+
+
+
+
+ 鱼
+ #iconyu2
+
+
+
+
+
+
+ 虾蟹类-01
+ #iconxiaxielei-
+
+
+
+
+
+
+ 虾
+ #icondiaoyu
+
+
+
+
+
+
+ 水果 copy 2
+ #iconshuiguocopy
+
+
+
+
+
+
+ 虾
+ #iconxia2
+
+
+
+
+
+
+ 鸡
+ #iconji
+
+
+
+
+
+
+ 鱼
+ #iconyu3
+
+
+
+
+
+
+ 手机
+ #iconshouji1
+
+
+
+
+
+
+ 手机
+ #iconshouji2
+
+
+
+
+
+
+ 手机
+ #iconshouji3
+
+
+
+
+
+
+ 苹果手机x细边框2
+ #iconpingguoxxibiankuang
+
+
+
+
+
+
+ 手机 (3)
+ #iconshouji
+
+
+
+
+
+
+ 客服
+ #iconkefu1
+
+
+
+
+
+
+ 客服
+ #iconkefu2
+
+
+
+
+
+
+ 客服
+ #iconkefu3
+
+
+
+
+
+
+ 05团队
+ #icontuandui
+
+
+
+
+
+
+ 设计-金煌
+ #iconsheji-jinhuang
+
+
+
+
+
+
+ 设计
+ #iconsheji
+
+
+
+
+
+
+ 关于我们-开发团队
+ #iconguanyuwomen-kaifatuandui
+
+
+
+
+
+
+ 我的团队-01
+ #iconwodetuandui-
+
+
+
+
+
+
+ 设计师
+ #iconzu2
+
+
+
+
+
+
+ 设计管理
+ #iconshejiguanli
+
+
+
+
+
+
+ 设计理念
+ #iconico1
+
+
+
+
+
+
+ 代码应用
+ #icondaimayingyong
+
+
+
+
+
+
+ 电脑
+ #icondiannao2
+
+
+
+
+
+
+ 多设备
+ #iconsimiquan
+
+
+
+
+
+
+ 团队管理
+ #icontuanduiguanli
+
+
+
+
+
+
+ 电脑 (1)
+ #icondiannao3
+
+
+
+
+
+
+ 代码
+ #icondaima
+
+
+
+
+
+
+ 代码
+ #icondaima1
+
+
+
+
+
+
+ 鼠标编辑
+ #iconshubiaobianji
+
+
+
+
+
+
+ 鼠标选择
+ #iconicon-test1
+
+
+
+
+
+
+ 编码
+ #iconbianma
+
+
+
+
+
+
+ 编码
+ #iconbianma1
+
+
+
+
+
+
+ 百度
+ #iconbaidu
+
+
+
+
+
+
+ 云服务器
+ #iconyunfuwuqi
+
+
+
+
+
+
+ QQ
+ #iconQQ1
+
+
+
+
+
+
+ 分类-米面粮油
+ #iconflour
+
+
+
+
+
+
+ 进口馆粮油
+ #iconjinkouguanliangyou
+
+
+
+
+
+
+ 蔬菜
+ #iconshucai
+
+
+
+
+
+
+ 蔬菜
+ #iconshucai1
+
+
+
+
+
+
+ 查看
+ #iconchakan1
+
+
+
+
+
+
+ 茄子
+ #iconqiezi
+
+
+
+
+
+
+ 南瓜
+ #iconnangua
+
+
+
+
+
+
+ 食品粮油
+ #iconshipinliangyou
+
+
+
+
+
+
+ 南瓜
+ #iconnangua1
+
+
+
+
+
+
+ 青椒
+ #iconqingjiao
+
+
+
+
+
+
+ 微信
+ #iconweixin
+
+
+
+
+
+
+ 二维码
+ #iconerweima4
+
+
+
+
+
+
+ 查看
+ #iconcheck-line
+
+
+
+
+
+
+ 微信
+ #iconweixin1
+
+
+
+
+
+
+ 查看
+ #iconchakan
+
+
+
+
+
+
+ 蔬菜
+ #iconshucai2
+
+
+
+
+
+
+ 蔬菜
+ #iconshucai3
+
+
+
+
+
+
+ 蔬菜
+ #iconshucai4
+
+
+
+
+
+
+ 查看 眼睛 实时分析 2
+ #iconchakanyanjingshishifenxi2
+
+
+
+
+
+
+ 头条1
+ #iconweibiaoti-2
+
+
+
+
+
+
+ 转发
+ #iconzhuanfa
+
+
+
+
+
+
+ 转发
+ #iconzhuanfa1
+
+
+
+
+
+
+ 点赞
+ #icondianzan
+
+
+
+
+
+
+ 转发
+ #iconzhuanfa2
+
+
+
+
+
+
+ 转发
+ #iconicon_zhuanfa
+
+
+
+
+
+
+ 菜单
+ #iconcaidan
+
+
+
+
+
+
+ 放大镜
+ #iconfangdajing1
+
+
+
+
+
+
+ 放大镜
+ #icon41
+
+
+
+
+
+
+ 链接 关联
+ #iconlianjieguanlian
+
+
+
+
+
+
+ 办公自动化
+ #iconbangongzidonghua
+
+
+
+
+
+
+ 自动化
+ #iconautomation
+
+
+
+
+
+
+ 自动化运维
+ #iconzidonghuayunwei
+
+
+
+
+
+
+ 清算和对账自动化
+ #iconqingsuanheduizhangzidonghua-
+
+
+
+
+
+
+ 链接
+ #iconlianjie
+
+
+
+
+
+
+ 链接
+ #iconlianjie1
+
+
+
+
+
+
+ 链接
+ #iconlianjie2
+
+
+
+
+
+
+ 自动化-网络
+ #iconzidonghua-wangluo
+
+
+
+
+
+
+ 自动化-服务器
+ #iconzidonghua-fuwuqi
+
+
+
+
+
+
+ 自动化流程
+ #iconziyuan4
+
+
+
+
+
+
+ 设计软件
+ #iconshejiruanjian
+
+
+
+
+
+
+ 自动化
+ #iconzidonghua
+
+
+
+
+
+
+ 软件
+ #iconruanjian
+
+
+
+
+
+
+ 仓库
+ #iconcangku
+
+
+
+
+
+
+ 软件定制
+ #iconruanjiandingzhi
+
+
+
+
+
+
+ 仓库
+ #iconcangku1
+
+
+
+
+
+
+ 物流
+ #iconwuliu
+
+
+
+
+
+
+ 升降机监测
+ #iconshengjiangjijiance
+
+
+
+
+
+
+ 输送机械
+ #iconyunshujixie
+
+
+
+
+
+
+ 托盘121
+ #icontuopan121
+
+
+
+
+
+
+ 托盘码-批量
+ #icon23
+
+
+
+
+
+
+ 物流设备
+ #iconziyuan3
+
+
+
+
+
+
+ HY物流设备
+ #iconHYwuliushebei
+
+
+
+
+
+
+ 托盘121
+ #icontuopan1211
+
+
+
+
+
+
+ 叉车
+ #iconchache
+
+
+
+
+
+
+ HY焊接设备
+ #iconHYhanjieshebei
+
+
+
+
+
+
+ 皇冠
+ #iconhuangguan
+
+
+
+
+
+
+ 皇冠
+ #iconhuangguan2
+
+
+
+
+
+
+ 时装与服装-13
+ #iconshizhuangyufuzhuang-
+
+
+
+
+
+
+ 时装与服装-59
+ #iconshizhuangyufuzhuang-1
+
+
+
+
+
+
+ 时装与服装-96
+ #iconshizhuangyufuzhuang-2
+
+
+
+
+
+
+ 时装与服装-111
+ #iconshizhuangyufuzhuang-3
+
+
+
+
+
+
+ 时装与服装-198
+ #iconshizhuangyufuzhuang-4
+
+
+
+
+
+
+ 服装02-20
+ #iconfuzhuang-1
+
+
+
+
+
+
+ 女鞋
+ #iconnvxie
+
+
+
+
+
+
+ 服饰鞋包
+ #iconfushixiebao
+
+
+
+
+
+
+ 鞋包服饰
+ #iconweibiaoti9
+
+
+
+
+
+
+ 服装
+ #iconhuabanfuben
+
+
+
+
+
+
+ 服装
+ #iconfuzhuang
+
+
+
+
+
+
+ 服装02-25
+ #iconfuzhuang-
+
+
+
+
+
+
+ 服装-电熨斗
+ #iconfuzhuang-dianyundou
+
+
+
+
+
+
+ buy-02
+ #iconbuy-
+
+
+
+
+
+
+ buying
+ #iconbuying
+
+
+
+
+
+
+ BUYU
+ #iconBUYU
+
+
+
+
+
+
+ 店铺
+ #icondianpu2
+
+
+
+
+
+
+ buycar
+ #iconbuycar
+
+
+
+
+
+
+ buyu
+ #iconbuyu
+
+
+
+
+
+
+ buy-1
+ #iconbuy-1
+
+
+
+
+
+
+ buy-2
+ #iconbuy-2
+
+
+
+
+
+
+ buy-3
+ #iconbuy-3
+
+
+
+
+
+
+ buy
+ #iconbuy
+
+
+
+
+
+
+ 线下展会
+ #iconxianxiazhanhui
+
+
+
+
+
+
+ 采购询价单
+ #iconcaigouxunjiadan
+
+
+
+
+
+
+ 展会
+ #iconzhanhui1
+
+
+
+
+
+
+ 采购专场
+ #iconcaigouzhuanchang
+
+
+
+
+
+
+ 发布招募;发布产品
+ #iconfabuzhaomu
+
+
+
+
+
+
+ 沟通工具
+ #icongoutonggongju
+
+
+
+
+
+
+ 认证企业
+ #iconrenzhengqiye
+
+
+
+
+
+
+ 采购询价
+ #iconcaigouxunjia
+
+
+
+
+
+
+ 移动建站
+ #iconyidongjianzhan
+
+
+
+
+
+
+ 全网推广
+ #iconquanwangtuiguang
+
+
+
+
+
+
+ 采购专场
+ #iconcaigouzhuanchang1
+
+
+
+
+
+
+ 发布招募
+ #iconfabuzhaomu1
+
+
+
+
+
+
+ 管理工具
+ #iconguanligongju
+
+
+
+
+
+
+ 首页new
+ #iconshouye5
+
+
+
+
+
+
+ 首页
+ #iconmenu-index
+
+
+
+
+
+
+ ia_200000014
+ #iconia_4
+
+
+
+
+
+
+ ia_200000015
+ #iconia_5
+
+
+
+
+
+
+ ia_200000013
+ #iconia_3
+
+
+
+
+
+
+ ia_200000012
+ #iconia_2
+
+
+
+
+
+
+ ia_200000011
+ #iconia_1
+
+
+
+
+
+
+ ia_200000010
+ #iconia_
+
+
+
+
+
+
+ 学生
+ #iconxuesheng1
+
+
+
+
+
+
+ 学生荣誉
+ #iconhistory
+
+
+
+
+
+
+ 学生
+ #iconxuesheng2
+
+
+
+
+
+
+ 学生
+ #iconxuesheng3
+
+
+
+
+
+
+ 电脑
+ #icondiannao-tianchong
+
+
+
+
+
+
+ 电脑
+ #icondiannao
+
+
+
+
+
+
+ 电脑
+ #icondiannao1
+
+
+
+
+
+
+ 编程题库
+ #iconbianchengtiku
+
+
+
+
+
+
+ 对教师
+ #iconduijiaoshi
+
+
+
+
+
+
+ 学士帽
+ #iconxueshimao2
+
+
+
+
+
+
+ 学士
+ #iconxueshi
+
+
+
+
+
+
+ 职业
+ #iconzhiye
+
+
+
+
+
+
+ 培训
+ #iconpeixun1
+
+
+
+
+
+
+ 学士帽
+ #iconxueshimao1
+
+
+
+
+
+
+ 学生
+ #iconxuesheng
+
+
+
+
+
+
+ 培训
+ #iconpeixun
+
+
+
+
+
+
+ 电脑
+ #iconthrowing-screen
+
+
+
+
+
+
+ 会计引擎
+ #iconhuijiyinqing
+
+
+
+
+
+
+ 会计从业
+ #iconkuaijicongye
+
+
+
+
+
+
+ 学士帽
+ #iconxueshimao
+
+
+
+
+
+
+ 编程
+ #iconbiancheng
+
+
+
+
+
+
+ 教师类
+ #iconjiaoshilei
+
+
+
+
+
+
+ 奖牌
+ #iconjiangpai1
+
+
+
+
+
+
+ 奖牌
+ #iconweibiaoti-
+
+
+
+
+
+
+ 奖牌
+ #iconjiangpai
+
+
+
+
+
+
+ 后台-会员管理
+ #iconhuiyuanguanli
+
+
+
+
+
+
+ VIP升级_2
+ #iconvipshengji2
+
+
+
+
+
+
+ ad
+ #iconad
+
+
+
+
+
+
+ 积分
+ #iconjifen
+
+
+
+
+
+
+ 金牌
+ #iconjinpai
+
+
+
+
+
+
+ 金牌
+ #iconjinpai1
+
+
+
+
+
+
+ 金牌
+ #iconjinpai2
+
+
+
+
+
+
+ 礼品
+ #iconlipin
+
+
+
+
+
+
+ 化工新材料
+ #iconhuagongxincailiao
+
+
+
+
+
+
+ 新能源
+ #iconxinnengyuan1
+
+
+
+
+
+
+ 安防
+ #iconanfang
+
+
+
+
+
+
+ 化工原料
+ #iconhuagongyuanliao
+
+
+
+
+
+
+ 咨询
+ #iconzixun5
+
+
+
+
+
+
+ 安全防护~
+ #iconanquanfanghu
+
+
+
+
+
+
+ 咨询区
+ #iconzixunqu
+
+
+
+
+
+
+ 空气开关
+ #iconkongqikaiguan
+
+
+
+
+
+
+ 家庭安防
+ #iconjiatinganfang-
+
+
+
+
+
+
+ 工业安全
+ #icongongyeanquan
+
+
+
+
+
+
+ 新能源
+ #iconxinnengyuan
+
+
+
+
+
+
+ 五金
+ #iconwujin_
+
+
+
+
+
+
+ 咨询
+ #iconzixun6
+
+
+
+
+
+
+ 购物车
+ #icongouwuche01
+
+
+
+
+
+
+ 购物车
+ #icongouwuche2
+
+
+
+
+
+
+ 用户
+ #iconuser-copy
+
+
+
+
+
+
+ 扫描
+ #iconsaomiao
+
+
+
+
+
+
+ 购物车
+ #icongouwuche4
+
+
+
+
+
+
+ 信息
+ #iconxinxi
+
+
+
+
+
+
+ 信息
+ #iconxinxi1
+
+
+
+
+
+
+ 注册
+ #iconzhuce6
+
+
+
+
+
+
+ 信息
+ #iconxinxi2
+
+
+
+
+
+
+ 信息
+ #iconICon-
+
+
+
+
+
+
+ 信息
+ #iconxinxi3
+
+
+
+
+
+
+ 用户
+ #iconyonghu7
+
+
+
+
+
+
+ 信息
+ #iconxinxi4
+
+
+
+
+
+
+ 信息
+ #iconxinxi5
+
+
+
+
+
+
+ 购物车 (1)
+ #icongouwuche5
+
+
+
+
+
+
+ 注册 (1)
+ #iconzhuce7
+
+
+
+
+
+
+ 用户
+ #iconyonghu8
+
+
+
+
+
+
+ 注册
+ #iconzhuce8
+
+
+
+
+
+
+ 方向
+ #iconleft
+
+
+
+
+
+
+ 方向
+ #iconleft-copy-copy
+
+
+
+
+
+
+ 猜你喜欢
+ #iconcainixihuan
+
+
+
+
+
+
+ 猜你喜欢
+ #iconxihuan
+
+
+
+
+
+
+ 猜你喜欢
+ #iconcainixihuan1
+
+
+
+
+
+
+ 猜你喜欢
+ #iconcainixihuan2
+
+
+
+
+
+
+ 猜你喜欢
+ #iconcainixihuan3
+
+
+
+
+
+
+ 车辆信息背景
+ #iconcheliangxinxibeijing
+
+
+
+
+
+
+ 背景楼房
+ #iconbeijingloufang
+
+
+
+
+
+
+ 企业身份-背景
+ #iconqiyeshenfen-beijing
+
+
+
+
+
+
+ 优惠券背景@3x
+ #iconyouhuiquanbeijingx
+
+
+
+
+
+
+ 飞行中的背景
+ #iconfeihangzhongdebeijing
+
+
+
+
+
+
+ 录像卡片背景
+ #iconluxiangkapianbeijing
+
+
+
+
+
+
+ 箭头背景
+ #iconjiantoubeijing
+
+
+
+
+
+
+ 发布
+ #iconfabu
+
+
+
+
+
+
+ 发布
+ #iconfabu1
+
+
+
+
+
+
+ 发布
+ #iconfabu-copy
+
+
+
+
+
+
+ vip
+ #iconvip
+
+
+
+
+
+
+ Vip
+ #iconvip1
+
+
+
+
+
+
+ vip
+ #iconvip2
+
+
+
+
+
+
+ vip
+ #iconvip3
+
+
+
+
+
+
+ VIP
+ #iconVIP
+
+
+
+
+
+
+ VIP
+ #iconVIP1
+
+
+
+
+
+
+ VIP
+ #iconVIP2
+
+
+
+
+
+
+ VIP
+ #iconVIP3
+
+
+
+
+
+
+ 闪电
+ #iconshandian
+
+
+
+
+
+
+ 闪电
+ #iconshandian1
+
+
+
+
+
+
+ 购
+ #icongou
+
+
+
+
+
+
+ 购
+ #icongou1
+
+
+
+
+
+
+ 购
+ #icongou2
+
+
+
+
+
+
+ 购物
+ #icongouwu
+
+
+
+
+
+
+ 购物
+ #icongouwu1
+
+
+
+
+
+
+ 店铺
+ #icondianpu
+
+
+
+
+
+
+ 购物
+ #icongouwu2
+
+
+
+
+
+
+ 购物 (1)
+ #icongouwu3
+
+
+
+
+
+
+ 购物
+ #icongouwu4
+
+
+
+
+
+
+ 购物
+ #iconziyuan2
+
+
+
+
+
+
+ 购物
+ #icongouwu5
+
+
+
+
+
+
+ 购物
+ #icongouwu6
+
+
+
+
+
+
+ 购物
+ #icongouwu7
+
+
+
+
+
+
+ 店铺
+ #icondianpu1
+
+
+
+
+
+
+ 购物
+ #icongouwu8
+
+
+
+
+
+
+ 购物
+ #icongouwu9
+
+
+
+
+
+
+ 截止时间
+ #iconjiezhishijian
+
+
+
+
+
+
+ 地址
+ #icondizhi1
+
+
+
+
+
+
+ 数量
+ #iconshuliang
+
+
+
+
+
+
+ 时间 历史记录 计时 钟表 线性
+ #iconshijian
+
+
+
+
+
+
+ 数量
+ #iconshuliang1
+
+
+
+
+
+
+ 地址
+ #icondizhi2
+
+
+
+
+
+
+ inbox
+ #iconinbox
+
+
+
+
+
+
+ apartment
+ #iconapartment
+
+
+
+
+
+
+ user
+ #iconuser
+
+
+
+
+
+
+ home
+ #iconhome
+
+
+
+
+
+
+ 三角形
+ #icontriangle-copy-copy-copy
+
+
+
+
+
+
+ 文件
+ #iconwenjian
+
+
+
+
+
+
+ 文件
+ #iconwenjian1
+
+
+
+
+
+
+ 文件
+ #iconwenjian2
+
+
+
+
+
+
+ 文档
+ #iconiconset0118
+
+
+
+
+
+
+ 文档
+ #iconwendang
+
+
+
+
+
+
+ 公司认证
+ #icongongsirenzheng
+
+
+
+
+
+
+ 公司
+ #icongongsi1
+
+
+
+
+
+
+ 公司
+ #icongongsi2
+
+
+
+
+
+
+ ST公司
+ #icongongsi3
+
+
+
+
+
+
+ 公司&面性
+ #icongongsi_
+
+
+
+
+
+
+ 公司
+ #icongongsi4
+
+
+
+
+
+
+ 齿轮
+ #icon26
+
+
+
+
+
+
+ 定制加工
+ #icondingzhijiagong
+
+
+
+
+
+
+ 委外加工
+ #iconweiwaijiagong
+
+
+
+
+
+
+ Hot
+ #iconHot
+
+
+
+
+
+
+ 齿轮
+ #iconchilun
+
+
+
+
+
+
+ HOT
+ #iconHOT-copy-copy-copy
+
+
+
+
+
+
+ 连锁加工
+ #iconliansuojiagong
+
+
+
+
+
+
+ 健康_热雾
+ #iconjiankangrewu
+
+
+
+
+
+
+ 健康
+ #icon74133
+
+
+
+
+
+
+ 健康指南文字
+ #iconjkznwenzi
+
+
+
+
+
+
+ 健康服务
+ #iconjiankangfuwu
+
+
+
+
+
+
+ 健康头条
+ #iconjiankangtoutiao
+
+
+
+
+
+
+ 健康营养
+ #iconicon-test
+
+
+
+
+
+
+ 健康商城
+ #iconjiankangshangcheng
+
+
+
+
+
+
+ 健康商品
+ #iconjiankangshangpin
+
+
+
+
+
+
+ 健康
+ #iconjiankang
+
+
+
+
+
+
+ 健康
+ #icon2
+
+
+
+
+
+
+ 健康度
+ #iconjiankangdu
+
+
+
+
+
+
+ 健康云 页面模版
+ #iconjiankangyunyemianmokuai
+
+
+
+
+
+
+ 健康评估
+ #iconjiankangpinggu
+
+
+
+
+
+
+ 健康
+ #iconjiankang1
+
+
+
+
+
+
+ 健康资讯
+ #iconjiankangzixun
+
+
+
+
+
+
+ 健康趋势
+ #iconjiankangqushi
+
+
+
+
+
+
+ 健康
+ #iconjiankang2
+
+
+
+
+
+
+ 健康讲堂
+ #iconjiankangjiangtang
+
+
+
+
+
+
+ 母婴
+ #iconmuying
+
+
+
+
+
+
+ 代理平台
+ #icondailipingtai
+
+
+
+
+
+
+ 代理平台
+ #icondailipingtai1
+
+
+
+
+
+
+ 母婴
+ #iconmuying1
+
+
+
+
+
+
+ 加工管理
+ #iconjiagongguanli
+
+
+
+
+
+
+ 代理合营
+ #iconapp-
+
+
+
+
+
+
+ 母婴
+ #iconmuying2
+
+
+
+
+
+
+ 加工过程
+ #icontubiao_huabanfuben
+
+
+
+
+
+
+ 首页/tab/会展
+ #iconshouyetabhuizhan
+
+
+
+
+
+
+ 代理
+ #icondaili
+
+
+
+
+
+
+ 代理
+ #icondaili1
+
+
+
+
+
+
+ 会展服务
+ #iconhuizhanfuwu
+
+
+
+
+
+
+ 展会
+ #iconzhanhui
+
+
+
+
+
+
+ 放大镜
+ #iconfangdajing
+
+
+
+
+
+
+ 电工电料
+ #icondiangongdianliao
+
+
+
+
+
+
+ 排插
+ #iconpaicha
+
+
+
+
+
+
+ 芯片
+ #iconxinpian
+
+
+
+
+
+
+ 灯管
+ #icondengguan
+
+
+
+
+
+
+ 购物车
+ #icongouwuche3
+
+
+
+
+
+
+ 皇冠
+ #iconhuangguan1
+
+
+
+
+
+
+ jxhy
+ #iconjxhy
+
+
+
+
+
+
+ jxhy
+ #iconlogo
+
+
+
+
+
+
+ 灯暖
+ #icondengnuan
+
+
+
+
+
+
+ 灯具
+ #iconyoupinwangtubiao-
+
+
+
+
+
+
+ 灯具
+ #icondengju2
+
+
+
+
+
+
+ 射灯
+ #iconshedeng
+
+
+
+
+
+
+ 灯具
+ #icondengju3
+
+
+
+
+
+
+ 灯具
+ #icondengju
+
+
+
+
+
+
+ 筒灯
+ #icontongdeng
+
+
+
+
+
+
+ 灯具
+ #icondengju1
+
+
+
+
+
+
+ 筒灯
+ #icontongdeng1
+
+
+
+
+
+
+ logo
+ #iconlenovologo2015
+
+
+
+
+
+
+ 谷歌
+ #iconGoogle
+
+
+
+
+
+
+ 新闻
+ #iconxinwen
+
+
+
+
+
+
+ 新闻
+ #iconxinwen1
+
+
+
+
+
+
+ 新闻
+ #iconxinwen2
+
+
+
+
+
+
+ 新闻
+ #iconxinwen3
+
+
+
+
+
+
+ 新闻
+ #iconxinwen4
+
+
+
+
+
+
+ 更多
+ #icongengduo1
+
+
+
+
+
+
+ 更多
+ #iconmore-dot
+
+
+
+
+
+
+ 商品-配置管理
+ #iconshangpin-peizhiguanli
+
+
+
+
+
+
+ 商品3d说明
+ #iconyingxiaohuodong
+
+
+
+
+
+
+ 商品销售情况
+ #iconshangpinxiaoshouqingkuang
+
+
+
+
+
+
+ 商品价格管理
+ #iconshangpinjiageguanli
+
+
+
+
+
+
+ 公告
+ #icongonggao
+
+
+
+
+
+
+ 公告
+ #icongonggao1
+
+
+
+
+
+
+ 公告
+ #icongonggao2
+
+
+
+
+
+
+ 公告
+ #icongonggao3
+
+
+
+
+
+
+ 公告 (1)
+ #icongonggao4
+
+
+
+
+
+
+ 公告
+ #iconweibiaoti-_
+
+
+
+
+
+
+ 公告
+ #icongonggao5
+
+
+
+
+
+
+ 分类
+ #iconfenlei4
+
+
+
+
+
+
+ bottom_首页
+ #iconshouye
+
+
+
+
+
+
+ 首页
+ #iconiconfontshouye
+
+
+
+
+
+
+ qq
+ #iconqq1
+
+
+
+
+
+
+ DPI-首页
+ #iconshouye1
+
+
+
+
+
+
+ QQ
+ #iconqq2
+
+
+
+
+
+
+ 分类
+ #icon3fenlei
+
+
+
+
+
+
+ 分类
+ #iconfenlei5
+
+
+
+
+
+
+ 类目 品类 分类 类别
+ #iconleimupinleifenleileibie
+
+
+
+
+
+
+ 分类
+ #iconrenrenyaotubiao
+
+
+
+
+
+
+ 分类
+ #iconfenlei6
+
+
+
+
+
+
+ 类目 品类 分类 类别-2-02
+ #iconcategory
+
+
+
+
+
+
+ QQ (1)
+ #iconQQ
+
+
+
+
+
+
+ 类目 品类 分类 类别
+ #iconjifenfenlei
+
+
+
+
+
+
+ 分类
+ #iconfenlei7
+
+
+
+
+
+
+ 首页
+ #iconshouye2
+
+
+
+
+
+
+ 首页
+ #iconziyuan1
+
+
+
+
+
+
+ 首页
+ #iconshouye3
+
+
+
+
+
+
+ 首页
+ #iconhome-active
+
+
+
+
+
+
+ 首页
+ #iconshouye4
+
+
+
+
+
+
+ bao
+ #iconbao
+
+
+
+
+
+
+ bao
+ #iconbao1
+
+
+
+
+
+
+ 支
+ #iconzhi
+
+
+
+
+
+
+ 更多
+ #iconmore
+
+
+
+
+
+
+ 更多
+ #iconbf-more
+
+
+
+
+
+
+ 更多
+ #icongengduo
+
+
+
+
+
+
+ 右剪头
+ #iconyoujiantou
+
+
+
+
+
+
+ 右剪头
+ #iconyoujiantou1
+
+
+
+
+
+
+ 小区到家-轮播右剪头
+ #iconxiaoqudaojialunbozuojiantou-copy
+
+
+
+
+
+
+ 黄底剪头
+ #iconhuangdijiantou
+
+
+
+
+
+
+ 用户
+ #iconyonghu1
+
+
+
+
+
+
+ 注册
+ #iconmsnui-reg
+
+
+
+
+
+
+ 注册
+ #iconzhuce
+
+
+
+
+
+
+ 注册
+ #iconzhuce1
+
+
+
+
+
+
+ 用户
+ #iconyonghu2
+
+
+
+
+
+
+ 用户
+ #iconyonghu3
+
+
+
+
+
+
+ 用户
+ #iconyonghu4
+
+
+
+
+
+
+ 注册 (5)
+ #iconzhuce2
+
+
+
+
+
+
+ 用户
+ #iconyonghu5
+
+
+
+
+
+
+ 用户
+ #iconyonghu6
+
+
+
+
+
+
+ 注册
+ #iconzhuce3
+
+
+
+
+
+
+ 注册
+ #iconzhuce4
+
+
+
+
+
+
+ 注册
+ #iconzhuce5
+
+
+
+
+
+
+ 采购
+ #iconcaigou
+
+
+
+
+
+
+ 采购员
+ #icongouwuche1
+
+
+
+
+
+
+ 咨询
+ #iconzixun
+
+
+
+
+
+
+ 帮助
+ #icon6
+
+
+
+
+
+
+ 咨询
+ #iconzixun1
+
+
+
+
+
+
+ 帮助
+ #iconbangzhu
+
+
+
+
+
+
+ 帮助
+ #iconbangzhu1
+
+
+
+
+
+
+ 咨询
+ #iconguanjiaowangtubiao59
+
+
+
+
+
+
+ 咨询
+ #iconzixun-copy
+
+
+
+
+
+
+ 售后
+ #iconshouhou
+
+
+
+
+
+
+ 开店
+ #iconkaidian
+
+
+
+
+
+
+ 全员开店
+ #iconquanyuankaidian
+
+
+
+
+
+
+ 正品
+ #iconzhengpin
+
+
+
+
+
+
+ 咨询
+ #iconzixun2
+
+
+
+
+
+
+ 帮助
+ #iconbangzhu2
+
+
+
+
+
+
+ 快速开店
+ #iconkuaisukaidian
+
+
+
+
+
+
+ 咨询
+ #iconzixun3
+
+
+
+
+
+
+ 免费开店
+ #icon-mianfeikaidian
+
+
+
+
+
+
+ 申请开店
+ #iconshenqingkaidian
+
+
+
+
+
+
+ 开店指南
+ #iconkaidianzhinan
+
+
+
+
+
+
+ 安全
+ #iconanquan
+
+
+
+
+
+
+ 咨询
+ #iconCombinedShapeCopy
+
+
+
+
+
+
+ 我要开店-边框
+ #iconwoyaokaidian-biankuang
+
+
+
+
+
+
+ 售后
+ #iconshouhou1
+
+
+
+
+
+
+ 快速开店
+ #iconkuaisukaidian1
+
+
+
+
+
+
+ 开店
+ #iconkaidian1
+
+
+
+
+
+
+ 安全
+ #iconanquan1
+
+
+
+
+
+
+ 正品
+ #iconzhengpin1
+
+
+
+
+
+
+ 咨询
+ #iconzixun4
+
+
+
+
+
+
+ 报告-时尚品牌开店数量
+ #iconbaogao-shishangpinpaikaidianshuliang
+
+
+
+
+
+
+ 开店
+ #iconkaidian2
+
+
+
+
+
+
+ 开店宝
+ #iconkaidian3
+
+
+
+
+
+
+ 售后
+ #iconshouhou2
+
+
+
+
+
+
+ 免费开店
+ #iconmianfd
+
+
+
+
+
+
+ 优质询盘推荐
+ #iconyouzhixunpantuijian
+
+
+
+
+
+
+ 优质询盘推荐_粗
+ #iconyouzhixunpantuijian_cu
+
+
+
+
+
+
+ 帮助
+ #iconbangzhu3
+
+
+
+
+
+
+ 开店
+ #iconkaidian4
+
+
+
+
+
+
+ 咨询
+ #iconshitu_ad_consultation
+
+
+
+
+
+
+ 正品
+ #iconzhengpin2
+
+
+
+
+
+
+ 安全
+ #iconanquan2
+
+
+
+
+
+
+ 发布
+ #iconfabu2
+
+
+
+
+
+
+ 购物车满
+ #icongouwucheman
+
+
+
+
+
+
+ 购物车空
+ #icongouwuchekong
+
+
+
+
+
+
+ 购物车满
+ #icongouwucheman1
+
+
+
+
+
+
+ 食品
+ #iconshipin1
+
+
+
+
+
+
+ 运输1
+ #iconyunshu1
+
+
+
+
+
+
+ 类目图标-日用百货
+ #iconleimutubiaoriyongbaihuo
+
+
+
+
+
+
+ 食品
+ #iconshipin2
+
+
+
+
+
+
+ 维修工具
+ #iconweixiugongju
+
+
+
+
+
+
+ 购物车
+ #icongouwuche
+
+
+
+
+
+
+ 基础化工
+ #iconjichuhuagong
+
+
+
+
+
+
+ 化工
+ #iconhuagong
+
+
+
+
+
+
+ 家居百货
+ #iconjiajubaihuo
+
+
+
+
+
+
+ 衣服
+ #iconyifu
+
+
+
+
+
+
+ 房屋家居
+ #iconfangwujiaju
+
+
+
+
+
+
+ 数码
+ #iconweibiaoti2fuzhi03
+
+
+
+
+
+
+ 家居家装
+ #iconweibiaoti2fuzhi13
+
+
+
+
+
+
+ 数码
+ #iconshuma
+
+
+
+
+
+
+ 日用百货
+ #iconriyongbaihuo
+
+
+
+
+
+
+ 食品
+ #iconshipin3
+
+
+
+
+
+
+ 衣服
+ #iconyifu1
+
+
+
+
+
+
+ 商务合作
+ #iconshangwuhezuo
+
+
+
+
+
+
+ 消防员
+ #iconjingwuicon_svg-
+
+
+
+
+
+
+ 维修
+ #iconweixiu
+
+
+
+
+
+
+ 运输中
+ #iconyunshuzhong
+
+
+
+
+
+
+ 推荐汽车
+ #icontuijianqiche
+
+
+
+
+
+
+ 消防斧
+ #iconxiaofangfu
+
+
+
+
+
+
+ 消防水泵
+ #iconxiaofangshuibeng
+
+
+
+
+
+
+ 化工
+ #iconhuagong1
+
+
+
+
+
+
+ 商务
+ #iconshangwu
+
+
+
+
+
+
+ 维修
+ #iconweixiu1
+
+
+
+
+
+
+ 食品
+ #iconfood
+
+
+
+
+
+
+ 机械
+ #iconmechanical
+
+
+
+
+
+
+ 商务
+ #iconshangwu1
+
+
+
+
+
+
+ 已发货-物流详情
+ #iconyifahuodefuben
+
+
+
+
+
+
+ 水滴
+ #iconblob
+
+
+
+
+
+
+ 运输-2
+ #iconyunshu-
+
+
+
+
+
+
+ 运输-1
+ #iconyunshu-1
+
+
+
+
+
+
+ 运输-4
+ #iconyunshu-2
+
+
+
+
+
+
+ 运输-9
+ #iconyunshu-3
+
+
+
+
+
+
+ 运输-19
+ #iconyunshu-4
+
+
+
+
+
+
+ 运输-36
+ #iconyunshu-5
+
+
+
+
+
+
+ 运输-59
+ #iconyunshu-6
+
+
+
+
+
+
+ 家居生活
+ #iconjiajushenghuo
+
+
+
+
+
+
+ 汽车
+ #iconqiche
+
+
+
+
+
+
+ 公安消防
+ #icongonganxiaofang
+
+
+
+
+
+
+ 化工新材料
+ #iconzu
+
+
+
+
+
+
+ 其他材料,化工
+ #iconzu1
+
+
+
+
+
+
+ 高端化工
+ #icongaoduanhuagong
+
+
+
+
+
+
+ 流体机械
+ #iconliutijixie
+
+
+
+
+
+
+ 化工
+ #iconhuagong2
+
+
+
+
+
+
+ 汽车
+ #iconqiche1
+
+
+
+
+
+
+ 行业icon_食品饮料
+ #iconkcb_hangyeicon-
+
+
+
+
+
+
+ 化工
+ #iconhuagong3
+
+
+
+
+
+
+ 食品-面包
+ #iconshipin-mianbao
+
+
+
+
+
+
+ 用户
+ #iconyonghu
+
+
+
+
+
+
+ 广告
+ #iconguanggao
+
+
+
+
+
+
+ 客服
+ #iconkefu
+
+
+
+
+
+
+ 4 返回顶部 白
+ #icon4fanhuidingbubai
+
+
+
+
+
+
+ 返回顶部
+ #iconfanhuidingbu
+
+
+
+
+
+
+ 返回顶部
+ #iconfanhuidingbu1
+
+
+
+
+
+
+ 分类
+ #iconfenlei
+
+
+
+
+
+
+ 分类
+ #iconfenlei1
+
+
+
+
+
+
+ 分类
+ #iconiconfl
+
+
+
+
+
+
+ 分类
+ #iconfenlei2
+
+
+
+
+
+
+ 分类
+ #iconfenlei3
+
+
+
+
+
+
+ 实心正方形
+ #iconshixinzhengfangxing
+
+
+
+
+
+
+ 今日推荐
+ #iconjinrituijian
+
+
+
+
+
+
+ 最新货源
+ #iconzuixinhuoyuan
+
+
+
+
+
+
+ 相机
+ #iconiconxj
+
+
+
+
+
+
+ 新闻
+ #iconquanbuxinwen
+
+
+
+
+
+
+ 招商代理
+ #iconzhaoshangdaili
+
+
+
+
+
+
+ 视频
+ #iconshipin
+
+
+
+
+
+
+ 商品
+ #iconshangpin
+
+
+
+
+
+
+ 新闻
+ #iconziyuan
+
+
+
+
+
+
+ 商品
+ #iconshangpin1
+
+
+
+
+
+
+ 公司地址
+ #icongongsidizhi
+
+
+
+
+
+
+ 品牌
+ #iconpinpai
+
+
+
+
+
+
+ 食物-97
+ #iconshiwu-
+
+
+
+
+
+
+ 商品
+ #iconshangpin2
+
+
+
+
+
+
+ icon_推荐nor
+ #iconicon_tuijiannor
+
+
+
+
+
+
+ 公司名称
+ #icongongsimingcheng
+
+
+
+
+
+
+ 零食、糖果
+ #iconlingshitangguo
+
+
+
+
+
+
+ 微信
+ #iconiconset0140
+
+
+
+
+
+
+ 电话
+ #iconiconfontdianhua4
+
+
+
+
+
+
+ 车巴巴-返回顶部
+ #iconcontrol101
+
+
+
+
+
+
+ 在线咨询
+ #iconzaixianzixun
+
+
+
+
+
+
+ 欢迎页
+ #iconhuanyingye
+
+
+
+
+
+
+ 二维码
+ #iconerweima2
+
+
+
+
+
+
+ 电话
+ #icondianhua1
+
+
+
+
+
+
+ 二维码
+ #iconerweima3
+
+
+
+
+
+
+ 电话
+ #icondianhua2
+
+
+
+
+
+
+ 通用-欢迎你图标
+ #icontongyong-huanyingnitubiao
+
+
+
+
+
+
+ ZS二维码
+ #iconerweima
+
+
+
+
+
+
+ 二维码
+ #iconerweima1
+
+
+
+
+
+
+ 二维码
+ #iconico
+
+
+
+
+
+
+ 位置
+ #iconweizhi
+
+
+
+
+
+
+ 位置
+ #iconweizhi1
+
+
+
+
+
+
+ 产品
+ #iconchanpin1
+
+
+
+
+
+
+ 资质证书
+ #iconzizhizhengshu
+
+
+
+
+
+
+ 公司
+ #icongongsi
+
+
+
+
+
+
+ 证书
+ #iconzhengshu1
+
+
+
+
+
+
+ 产品
+ #iconweibiaoti35
+
+
+
+
+
+
+ 证书
+ #iconzhengshu
+
+
+
+
+
+
+ 公司信息
+ #icongongsixinxi
+
+
+
+
+
+
+ 产品
+ #iconchanpin
+
+
+
+
+
+
+ 邮件
+ #iconyoujian1
+
+
+
+
+
+
+ qq
+ #iconqq
+
+
+
+
+
+
+ 地址
+ #icondizhi
+
+
+
+
+
+
+ 电话
+ #icondianhua5
+
+
+
+
+
+
+ 电话
+ #icondianhua
+
+
+
+
+
+
+ 邮件
+ #iconyoujian
+
+
+
+
+
Symbol 引用
+
+
+
这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章
+ 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:
+
+ 支持多色图标了,不再受单色限制。
+ 通过一些技巧,支持像字体那样,通过 font-size, color 来调整样式。
+ 兼容性较差,支持 IE9+,及现代浏览器。
+ 浏览器渲染 SVG 的性能一般,还不如 png。
+
+
使用步骤如下:
+
第一步:引入项目下面生成的 symbol 代码:
+
<script src="./iconfont.js"></script>
+
+
第二步:加入通用 CSS 代码(引入一次就行):
+
<style>
+.icon {
+ width: 1em;
+ height: 1em;
+ vertical-align: -0.15em;
+ fill: currentColor;
+ overflow: hidden;
+}
+</style>
+
+
第三步:挑选相应图标并获取类名,应用于页面:
+
<svg class="icon" aria-hidden="true">
+ <use xlink:href="#icon-xxx"></use>
+</svg>
+
+
+
+
+
+
+
+
+
diff --git a/skin/m15dt8blue/fonts/iconfont.css b/skin/m15dt8blue/fonts/iconfont.css
new file mode 100644
index 0000000..578a843
--- /dev/null
+++ b/skin/m15dt8blue/fonts/iconfont.css
@@ -0,0 +1,2597 @@
+@font-face {font-family: "iconfont";
+ src: url('iconfont.eot?t=1598693724636'); /* IE9 */
+ src: url('iconfont.eot?t=1598693724636#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'),
+ url('iconfont.woff?t=1598693724636') format('woff'),
+ url('iconfont.ttf?t=1598693724636') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
+ url('iconfont.svg?t=1598693724636#iconfont') format('svg'); /* iOS 4.1- */
+}
+
+.iconfont {
+ font-family: "iconfont" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icongengduo2:before {
+ content: "\e86b";
+}
+
+.iconchanpin2:before {
+ content: "\e86c";
+}
+
+.icondiqiu:before {
+ content: "\e870";
+}
+
+.iconzhuanyongche:before {
+ content: "\e86a";
+}
+
+.iconremai:before {
+ content: "\e866";
+}
+
+.iconxiaoxi:before {
+ content: "\e867";
+}
+
+.iconxiaoxi1:before {
+ content: "\e868";
+}
+
+.icondianhua3:before {
+ content: "\e869";
+}
+
+.icondenglu:before {
+ content: "\e864";
+}
+
+.iconxiezi:before {
+ content: "\e865";
+}
+
+.iconguanzhu:before {
+ content: "\e862";
+}
+
+.iconguanzhu1:before {
+ content: "\e863";
+}
+
+.iconmingpian:before {
+ content: "\e861";
+}
+
+.iconlianjie3:before {
+ content: "\e85d";
+}
+
+.iconlianjie4:before {
+ content: "\e860";
+}
+
+.iconshouye-1:before {
+ content: "\e845";
+}
+
+.iconshouye6:before {
+ content: "\e848";
+}
+
+.iconsousuo:before {
+ content: "\e849";
+}
+
+.iconshouye7:before {
+ content: "\e84a";
+}
+
+.iconshouye8:before {
+ content: "\e84b";
+}
+
+.iconshouye9:before {
+ content: "\e84c";
+}
+
+.iconshouye10:before {
+ content: "\e84d";
+}
+
+.iconshouye11:before {
+ content: "\e84e";
+}
+
+.iconshouye12:before {
+ content: "\e84f";
+}
+
+.iconshouye13:before {
+ content: "\e850";
+}
+
+.iconshouyecopy:before {
+ content: "\e851";
+}
+
+.iconshouye14:before {
+ content: "\e852";
+}
+
+.iconicon_huabanfuben:before {
+ content: "\e853";
+}
+
+.iconshouye15:before {
+ content: "\e854";
+}
+
+.iconshouye16:before {
+ content: "\e855";
+}
+
+.iconshouyeweidianji:before {
+ content: "\e856";
+}
+
+.iconshouye17:before {
+ content: "\e857";
+}
+
+.iconshouye18:before {
+ content: "\e858";
+}
+
+.iconshouye19:before {
+ content: "\e859";
+}
+
+.iconshouye20:before {
+ content: "\e85a";
+}
+
+.iconshouye21:before {
+ content: "\e85b";
+}
+
+.iconshouye22:before {
+ content: "\e85c";
+}
+
+.iconhuanbao:before {
+ content: "\e83a";
+}
+
+.iconwujingongju:before {
+ content: "\e83b";
+}
+
+.iconb-ic-4:before {
+ content: "\e83c";
+}
+
+.iconjiqiren2:before {
+ content: "\e83d";
+}
+
+.iconmoju:before {
+ content: "\e896";
+}
+
+.iconhuanbao1:before {
+ content: "\e83e";
+}
+
+.iconyibiao:before {
+ content: "\e83f";
+}
+
+.iconwujingongju1:before {
+ content: "\e840";
+}
+
+.iconxinpin:before {
+ content: "\e85f";
+}
+
+.iconyiqi:before {
+ content: "\e841";
+}
+
+.iconjixie:before {
+ content: "\e842";
+}
+
+.iconanfangjiankong:before {
+ content: "\e843";
+}
+
+.icondiangongdianqi_:before {
+ content: "\e844";
+}
+
+.iconjiaotong:before {
+ content: "\e847";
+}
+
+.iconwushuichulizhanjiance:before {
+ content: "\e833";
+}
+
+.iconwushuibeng:before {
+ content: "\e834";
+}
+
+.iconwushuichulifei:before {
+ content: "\e835";
+}
+
+.iconwushui:before {
+ content: "\e836";
+}
+
+.iconwushuichuli:before {
+ content: "\e838";
+}
+
+.icondt-wushuichulichang:before {
+ content: "\e839";
+}
+
+.iconshouye-zixundianhua:before {
+ content: "\e832";
+}
+
+.iconchakan2:before {
+ content: "\e830";
+}
+
+.iconchakan3:before {
+ content: "\e831";
+}
+
+.iconhome-o:before {
+ content: "\e82c";
+}
+
+.iconsanguohome:before {
+ content: "\e82d";
+}
+
+.iconzhuye:before {
+ content: "\e82e";
+}
+
+.iconhome1:before {
+ content: "\e82f";
+}
+
+.icontuanduixianxing:before {
+ content: "\e829";
+}
+
+.icontuandui1:before {
+ content: "\e82a";
+}
+
+.icontuandui2:before {
+ content: "\e82b";
+}
+
+.icongou3:before {
+ content: "\e822";
+}
+
+.icongou-copy:before {
+ content: "\e823";
+}
+
+.icongou4:before {
+ content: "\e824";
+}
+
+.icongou5:before {
+ content: "\e825";
+}
+
+.icongou6:before {
+ content: "\e826";
+}
+
+.icongou7:before {
+ content: "\e827";
+}
+
+.icongou8:before {
+ content: "\e828";
+}
+
+.iconxunjiaguanli:before {
+ content: "\e821";
+}
+
+.iconcaigou1:before {
+ content: "\e81d";
+}
+
+.iconcaigouzhuguan:before {
+ content: "\e81e";
+}
+
+.iconcaigou2:before {
+ content: "\e81f";
+}
+
+.iconcaigougenzong:before {
+ content: "\e820";
+}
+
+.icondifangtechan:before {
+ content: "\e81c";
+}
+
+.iconjirou1:before {
+ content: "\e81b";
+}
+
+.iconmangguo:before {
+ content: "\e818";
+}
+
+.iconmangguo1:before {
+ content: "\e819";
+}
+
+.iconmangguo2:before {
+ content: "\e81a";
+}
+
+.icon-jirou:before {
+ content: "\e816";
+}
+
+.iconjirou:before {
+ content: "\e817";
+}
+
+.iconshuiguo:before {
+ content: "\e7fc";
+}
+
+.iconjiaqin:before {
+ content: "\e7fd";
+}
+
+.iconshuiguo1:before {
+ content: "\e7fe";
+}
+
+.iconyu:before {
+ content: "\e7ff";
+}
+
+.iconyu1:before {
+ content: "\e800";
+}
+
+.iconshuiguo2:before {
+ content: "\e801";
+}
+
+.iconshuiguo3:before {
+ content: "\e802";
+}
+
+.iconshuiguo4:before {
+ content: "\e846";
+}
+
+.iconzhongzizhuisu:before {
+ content: "\e803";
+}
+
+.iconjiaqin1:before {
+ content: "\e805";
+}
+
+.iconzhongzitouzi:before {
+ content: "\e806";
+}
+
+.iconxia:before {
+ content: "\e807";
+}
+
+.iconshuiguo5:before {
+ content: "\e808";
+}
+
+.iconjiaqin2:before {
+ content: "\e809";
+}
+
+.iconxiaolongxia:before {
+ content: "\e80a";
+}
+
+.iconzhusun:before {
+ content: "\e80b";
+}
+
+.iconguantou:before {
+ content: "\e80c";
+}
+
+.iconshucai-:before {
+ content: "\e80d";
+}
+
+.iconxia1:before {
+ content: "\e80e";
+}
+
+.iconzhongzi:before {
+ content: "\e810";
+}
+
+.iconyu2:before {
+ content: "\e811";
+}
+
+.iconxiaxielei-:before {
+ content: "\e9a3";
+}
+
+.icondiaoyu:before {
+ content: "\e812";
+}
+
+.iconshuiguocopy:before {
+ content: "\e813";
+}
+
+.iconxia2:before {
+ content: "\e814";
+}
+
+.iconji:before {
+ content: "\e837";
+}
+
+.iconyu3:before {
+ content: "\e815";
+}
+
+.iconshouji1:before {
+ content: "\e7f7";
+}
+
+.iconshouji2:before {
+ content: "\e7f9";
+}
+
+.iconshouji3:before {
+ content: "\e7fa";
+}
+
+.iconpingguoxxibiankuang:before {
+ content: "\e7fb";
+}
+
+.iconshouji:before {
+ content: "\e7f6";
+}
+
+.iconkefu1:before {
+ content: "\e7f3";
+}
+
+.iconkefu2:before {
+ content: "\e7f4";
+}
+
+.iconkefu3:before {
+ content: "\e7f5";
+}
+
+.icontuandui:before {
+ content: "\e7e9";
+}
+
+.iconsheji-jinhuang:before {
+ content: "\e7eb";
+}
+
+.iconsheji:before {
+ content: "\e7ec";
+}
+
+.iconguanyuwomen-kaifatuandui:before {
+ content: "\e7ed";
+}
+
+.iconwodetuandui-:before {
+ content: "\e7ee";
+}
+
+.iconzu2:before {
+ content: "\e7f0";
+}
+
+.iconshejiguanli:before {
+ content: "\e7f1";
+}
+
+.iconico1:before {
+ content: "\e7f2";
+}
+
+.icondaimayingyong:before {
+ content: "\e7e2";
+}
+
+.icondiannao2:before {
+ content: "\e7e3";
+}
+
+.iconsimiquan:before {
+ content: "\e7e4";
+}
+
+.icontuanduiguanli:before {
+ content: "\e7e5";
+}
+
+.icondiannao3:before {
+ content: "\e7e6";
+}
+
+.icondaima:before {
+ content: "\e7e7";
+}
+
+.icondaima1:before {
+ content: "\e7e8";
+}
+
+.iconshubiaobianji:before {
+ content: "\e7de";
+}
+
+.iconicon-test1:before {
+ content: "\e7df";
+}
+
+.iconbianma:before {
+ content: "\e7e0";
+}
+
+.iconbianma1:before {
+ content: "\e7e1";
+}
+
+.iconbaidu:before {
+ content: "\e7dc";
+}
+
+.iconyunfuwuqi:before {
+ content: "\e7dd";
+}
+
+.iconQQ1:before {
+ content: "\e7db";
+}
+
+.iconflour:before {
+ content: "\e7c3";
+}
+
+.iconjinkouguanliangyou:before {
+ content: "\e7c6";
+}
+
+.iconshucai:before {
+ content: "\e7c7";
+}
+
+.iconshucai1:before {
+ content: "\e7c8";
+}
+
+.iconchakan1:before {
+ content: "\e7c9";
+}
+
+.iconqiezi:before {
+ content: "\e7ca";
+}
+
+.iconnangua:before {
+ content: "\e7cb";
+}
+
+.iconshipinliangyou:before {
+ content: "\e7cc";
+}
+
+.iconnangua1:before {
+ content: "\e7cd";
+}
+
+.iconqingjiao:before {
+ content: "\e7ce";
+}
+
+.iconweixin:before {
+ content: "\e7d0";
+}
+
+.iconerweima4:before {
+ content: "\e7d1";
+}
+
+.iconcheck-line:before {
+ content: "\e7d2";
+}
+
+.iconweixin1:before {
+ content: "\e7d3";
+}
+
+.iconchakan:before {
+ content: "\e7d5";
+}
+
+.iconshucai2:before {
+ content: "\e7d7";
+}
+
+.iconshucai3:before {
+ content: "\e7d8";
+}
+
+.iconshucai4:before {
+ content: "\e7d9";
+}
+
+.iconchakanyanjingshishifenxi2:before {
+ content: "\e7da";
+}
+
+.iconweibiaoti-2:before {
+ content: "\e7c5";
+}
+
+.iconzhuanfa:before {
+ content: "\e7be";
+}
+
+.iconzhuanfa1:before {
+ content: "\e7bf";
+}
+
+.icondianzan:before {
+ content: "\e7c0";
+}
+
+.iconzhuanfa2:before {
+ content: "\e7c1";
+}
+
+.iconicon_zhuanfa:before {
+ content: "\e7c2";
+}
+
+.iconcaidan:before {
+ content: "\e7bd";
+}
+
+.iconfangdajing1:before {
+ content: "\e7bc";
+}
+
+.icon41:before {
+ content: "\e7ba";
+}
+
+.iconlianjieguanlian:before {
+ content: "\e7ac";
+}
+
+.iconbangongzidonghua:before {
+ content: "\e7ad";
+}
+
+.iconautomation:before {
+ content: "\e7ae";
+}
+
+.iconzidonghuayunwei:before {
+ content: "\e7af";
+}
+
+.iconqingsuanheduizhangzidonghua-:before {
+ content: "\e7b1";
+}
+
+.iconlianjie:before {
+ content: "\e7b2";
+}
+
+.iconlianjie1:before {
+ content: "\e7b3";
+}
+
+.iconlianjie2:before {
+ content: "\e7b4";
+}
+
+.iconzidonghua-wangluo:before {
+ content: "\e7b6";
+}
+
+.iconzidonghua-fuwuqi:before {
+ content: "\e7b8";
+}
+
+.iconziyuan4:before {
+ content: "\e7b9";
+}
+
+.iconshejiruanjian:before {
+ content: "\e7a4";
+}
+
+.iconzidonghua:before {
+ content: "\e7a5";
+}
+
+.iconruanjian:before {
+ content: "\e7a6";
+}
+
+.iconcangku:before {
+ content: "\e7a7";
+}
+
+.iconruanjiandingzhi:before {
+ content: "\e7a8";
+}
+
+.iconcangku1:before {
+ content: "\e7ab";
+}
+
+.iconwuliu:before {
+ content: "\e7a3";
+}
+
+.iconshengjiangjijiance:before {
+ content: "\e7a2";
+}
+
+.iconyunshujixie:before {
+ content: "\e7d6";
+}
+
+.icontuopan121:before {
+ content: "\e79a";
+}
+
+.icon23:before {
+ content: "\e79b";
+}
+
+.iconziyuan3:before {
+ content: "\e79c";
+}
+
+.iconHYwuliushebei:before {
+ content: "\e79d";
+}
+
+.icontuopan1211:before {
+ content: "\e79f";
+}
+
+.iconchache:before {
+ content: "\e7a1";
+}
+
+.iconHYhanjieshebei:before {
+ content: "\e799";
+}
+
+.iconhuangguan:before {
+ content: "\e797";
+}
+
+.iconhuangguan2:before {
+ content: "\e798";
+}
+
+.iconshizhuangyufuzhuang-:before {
+ content: "\eb52";
+}
+
+.iconshizhuangyufuzhuang-1:before {
+ content: "\eb68";
+}
+
+.iconshizhuangyufuzhuang-2:before {
+ content: "\eb77";
+}
+
+.iconshizhuangyufuzhuang-3:before {
+ content: "\eb7e";
+}
+
+.iconshizhuangyufuzhuang-4:before {
+ content: "\eba2";
+}
+
+.iconfuzhuang-1:before {
+ content: "\e7b7";
+}
+
+.iconnvxie:before {
+ content: "\e795";
+}
+
+.iconfushixiebao:before {
+ content: "\e796";
+}
+
+.iconweibiaoti9:before {
+ content: "\e791";
+}
+
+.iconhuabanfuben:before {
+ content: "\e792";
+}
+
+.iconfuzhuang:before {
+ content: "\e793";
+}
+
+.iconfuzhuang-:before {
+ content: "\e7bb";
+}
+
+.iconfuzhuang-dianyundou:before {
+ content: "\e794";
+}
+
+.iconbuy-:before {
+ content: "\e786";
+}
+
+.iconbuying:before {
+ content: "\e788";
+}
+
+.iconBUYU:before {
+ content: "\e78a";
+}
+
+.icondianpu2:before {
+ content: "\e78b";
+}
+
+.iconbuycar:before {
+ content: "\e919";
+}
+
+.iconbuyu:before {
+ content: "\e78c";
+}
+
+.iconbuy-1:before {
+ content: "\e78d";
+}
+
+.iconbuy-2:before {
+ content: "\e78e";
+}
+
+.iconbuy-3:before {
+ content: "\e78f";
+}
+
+.iconbuy:before {
+ content: "\e790";
+}
+
+.iconxianxiazhanhui:before {
+ content: "\e787";
+}
+
+.iconcaigouxunjiadan:before {
+ content: "\e77a";
+}
+
+.iconzhanhui1:before {
+ content: "\e77b";
+}
+
+.iconcaigouzhuanchang:before {
+ content: "\e77c";
+}
+
+.iconfabuzhaomu:before {
+ content: "\e77d";
+}
+
+.icongoutonggongju:before {
+ content: "\e77e";
+}
+
+.iconrenzhengqiye:before {
+ content: "\e77f";
+}
+
+.iconcaigouxunjia:before {
+ content: "\e780";
+}
+
+.iconyidongjianzhan:before {
+ content: "\e781";
+}
+
+.iconquanwangtuiguang:before {
+ content: "\e782";
+}
+
+.iconcaigouzhuanchang1:before {
+ content: "\e783";
+}
+
+.iconfabuzhaomu1:before {
+ content: "\e784";
+}
+
+.iconguanligongju:before {
+ content: "\e785";
+}
+
+.iconshouye5:before {
+ content: "\e778";
+}
+
+.iconmenu-index:before {
+ content: "\e779";
+}
+
+.iconia_4:before {
+ content: "\e776";
+}
+
+.iconia_5:before {
+ content: "\e777";
+}
+
+.iconia_3:before {
+ content: "\e775";
+}
+
+.iconia_2:before {
+ content: "\e774";
+}
+
+.iconia_1:before {
+ content: "\e773";
+}
+
+.iconia_:before {
+ content: "\e772";
+}
+
+.iconxuesheng1:before {
+ content: "\e7aa";
+}
+
+.iconhistory:before {
+ content: "\e76e";
+}
+
+.iconxuesheng2:before {
+ content: "\e770";
+}
+
+.iconxuesheng3:before {
+ content: "\e771";
+}
+
+.icondiannao-tianchong:before {
+ content: "\e76a";
+}
+
+.icondiannao:before {
+ content: "\e76c";
+}
+
+.icondiannao1:before {
+ content: "\e76d";
+}
+
+.iconbianchengtiku:before {
+ content: "\e768";
+}
+
+.iconduijiaoshi:before {
+ content: "\e767";
+}
+
+.iconxueshimao2:before {
+ content: "\e765";
+}
+
+.iconxueshi:before {
+ content: "\e766";
+}
+
+.iconzhiye:before {
+ content: "\e763";
+}
+
+.iconpeixun1:before {
+ content: "\e764";
+}
+
+.iconxueshimao1:before {
+ content: "\e75d";
+}
+
+.iconxuesheng:before {
+ content: "\e75e";
+}
+
+.iconpeixun:before {
+ content: "\e760";
+}
+
+.iconthrowing-screen:before {
+ content: "\e761";
+}
+
+.iconhuijiyinqing:before {
+ content: "\e762";
+}
+
+.iconkuaijicongye:before {
+ content: "\e758";
+}
+
+.iconxueshimao:before {
+ content: "\e759";
+}
+
+.iconbiancheng:before {
+ content: "\e75a";
+}
+
+.iconjiaoshilei:before {
+ content: "\e75c";
+}
+
+.iconjiangpai1:before {
+ content: "\e757";
+}
+
+.iconweibiaoti-:before {
+ content: "\e756";
+}
+
+.iconjiangpai:before {
+ content: "\e755";
+}
+
+.iconhuiyuanguanli:before {
+ content: "\e754";
+}
+
+.iconvipshengji2:before {
+ content: "\e74d";
+}
+
+.iconad:before {
+ content: "\e74e";
+}
+
+.iconjifen:before {
+ content: "\e750";
+}
+
+.iconjinpai:before {
+ content: "\e751";
+}
+
+.iconjinpai1:before {
+ content: "\e752";
+}
+
+.iconjinpai2:before {
+ content: "\e753";
+}
+
+.iconlipin:before {
+ content: "\e74c";
+}
+
+.iconhuagongxincailiao:before {
+ content: "\e749";
+}
+
+.iconxinnengyuan1:before {
+ content: "\e74a";
+}
+
+.iconanfang:before {
+ content: "\e74b";
+}
+
+.iconhuagongyuanliao:before {
+ content: "\e73e";
+}
+
+.iconzixun5:before {
+ content: "\e73f";
+}
+
+.iconanquanfanghu:before {
+ content: "\e740";
+}
+
+.iconzixunqu:before {
+ content: "\e741";
+}
+
+.iconkongqikaiguan:before {
+ content: "\e742";
+}
+
+.iconjiatinganfang-:before {
+ content: "\ea85";
+}
+
+.icongongyeanquan:before {
+ content: "\e743";
+}
+
+.iconxinnengyuan:before {
+ content: "\e745";
+}
+
+.iconwujin_:before {
+ content: "\e747";
+}
+
+.iconzixun6:before {
+ content: "\e748";
+}
+
+.icongouwuche01:before {
+ content: "\e72a";
+}
+
+.icongouwuche2:before {
+ content: "\e73d";
+}
+
+.iconuser-copy:before {
+ content: "\e72c";
+}
+
+.iconsaomiao:before {
+ content: "\e9ad";
+}
+
+.icongouwuche4:before {
+ content: "\e72d";
+}
+
+.iconxinxi:before {
+ content: "\e73c";
+}
+
+.iconxinxi1:before {
+ content: "\e72e";
+}
+
+.iconzhuce6:before {
+ content: "\e72f";
+}
+
+.iconxinxi2:before {
+ content: "\e730";
+}
+
+.iconICon-:before {
+ content: "\e731";
+}
+
+.iconxinxi3:before {
+ content: "\e732";
+}
+
+.iconyonghu7:before {
+ content: "\e7b0";
+}
+
+.iconxinxi4:before {
+ content: "\e733";
+}
+
+.iconxinxi5:before {
+ content: "\e737";
+}
+
+.icongouwuche5:before {
+ content: "\e738";
+}
+
+.iconzhuce7:before {
+ content: "\e739";
+}
+
+.iconyonghu8:before {
+ content: "\e73a";
+}
+
+.iconzhuce8:before {
+ content: "\e73b";
+}
+
+.iconleft:before {
+ content: "\e728";
+}
+
+.iconleft-copy-copy:before {
+ content: "\e729";
+}
+
+.iconcainixihuan:before {
+ content: "\e722";
+}
+
+.iconxihuan:before {
+ content: "\e723";
+}
+
+.iconcainixihuan1:before {
+ content: "\e724";
+}
+
+.iconcainixihuan2:before {
+ content: "\e725";
+}
+
+.iconcainixihuan3:before {
+ content: "\e726";
+}
+
+.iconcheliangxinxibeijing:before {
+ content: "\e71d";
+}
+
+.iconbeijingloufang:before {
+ content: "\e71e";
+}
+
+.iconqiyeshenfen-beijing:before {
+ content: "\e736";
+}
+
+.iconyouhuiquanbeijingx:before {
+ content: "\e80f";
+}
+
+.iconfeihangzhongdebeijing:before {
+ content: "\e71f";
+}
+
+.iconluxiangkapianbeijing:before {
+ content: "\e720";
+}
+
+.iconjiantoubeijing:before {
+ content: "\e721";
+}
+
+.iconfabu:before {
+ content: "\e71b";
+}
+
+.iconfabu1:before {
+ content: "\e86e";
+}
+
+.iconfabu-copy:before {
+ content: "\e71c";
+}
+
+.iconvip:before {
+ content: "\e744";
+}
+
+.iconvip1:before {
+ content: "\e712";
+}
+
+.iconvip2:before {
+ content: "\e713";
+}
+
+.iconvip3:before {
+ content: "\e735";
+}
+
+.iconVIP:before {
+ content: "\e714";
+}
+
+.iconVIP1:before {
+ content: "\e717";
+}
+
+.iconVIP2:before {
+ content: "\e718";
+}
+
+.iconVIP3:before {
+ content: "\e719";
+}
+
+.iconshandian:before {
+ content: "\e70f";
+}
+
+.iconshandian1:before {
+ content: "\e711";
+}
+
+.icongou:before {
+ content: "\e70b";
+}
+
+.icongou1:before {
+ content: "\e70c";
+}
+
+.icongou2:before {
+ content: "\e70e";
+}
+
+.icongouwu:before {
+ content: "\e6fe";
+}
+
+.icongouwu1:before {
+ content: "\e6ff";
+}
+
+.icondianpu:before {
+ content: "\e8d2";
+}
+
+.icongouwu2:before {
+ content: "\e700";
+}
+
+.icongouwu3:before {
+ content: "\e701";
+}
+
+.icongouwu4:before {
+ content: "\e702";
+}
+
+.iconziyuan2:before {
+ content: "\e703";
+}
+
+.icongouwu5:before {
+ content: "\e705";
+}
+
+.icongouwu6:before {
+ content: "\e706";
+}
+
+.icongouwu7:before {
+ content: "\e707";
+}
+
+.icondianpu1:before {
+ content: "\e708";
+}
+
+.icongouwu8:before {
+ content: "\e709";
+}
+
+.icongouwu9:before {
+ content: "\e70a";
+}
+
+.iconjiezhishijian:before {
+ content: "\e6f6";
+}
+
+.icondizhi1:before {
+ content: "\e6f9";
+}
+
+.iconshuliang:before {
+ content: "\e6fa";
+}
+
+.iconshijian:before {
+ content: "\e6fc";
+}
+
+.iconshuliang1:before {
+ content: "\e716";
+}
+
+.icondizhi2:before {
+ content: "\e6fd";
+}
+
+.iconinbox:before {
+ content: "\e6f2";
+}
+
+.iconapartment:before {
+ content: "\e6f3";
+}
+
+.iconuser:before {
+ content: "\e6f4";
+}
+
+.iconhome:before {
+ content: "\e6f5";
+}
+
+.icontriangle-copy-copy-copy:before {
+ content: "\e6f1";
+}
+
+.iconwenjian:before {
+ content: "\e6ee";
+}
+
+.iconwenjian1:before {
+ content: "\e6ef";
+}
+
+.iconwenjian2:before {
+ content: "\e6f0";
+}
+
+.iconiconset0118:before {
+ content: "\e6eb";
+}
+
+.iconwendang:before {
+ content: "\e6ec";
+}
+
+.icongongsirenzheng:before {
+ content: "\e7c4";
+}
+
+.icongongsi1:before {
+ content: "\e6e6";
+}
+
+.icongongsi2:before {
+ content: "\e6e7";
+}
+
+.icongongsi3:before {
+ content: "\e6e9";
+}
+
+.icongongsi_:before {
+ content: "\e6ea";
+}
+
+.icongongsi4:before {
+ content: "\e86d";
+}
+
+.icon26:before {
+ content: "\e6df";
+}
+
+.icondingzhijiagong:before {
+ content: "\e6e0";
+}
+
+.iconweiwaijiagong:before {
+ content: "\e6e1";
+}
+
+.iconHot:before {
+ content: "\e6e2";
+}
+
+.iconchilun:before {
+ content: "\e6e3";
+}
+
+.iconHOT-copy-copy-copy:before {
+ content: "\e6e4";
+}
+
+.iconliansuojiagong:before {
+ content: "\e6e5";
+}
+
+.iconjiankangrewu:before {
+ content: "\e79e";
+}
+
+.icon74133:before {
+ content: "\e6ce";
+}
+
+.iconjkznwenzi:before {
+ content: "\e6cf";
+}
+
+.iconjiankangfuwu:before {
+ content: "\e746";
+}
+
+.iconjiankangtoutiao:before {
+ content: "\e6d0";
+}
+
+.iconicon-test:before {
+ content: "\e6d2";
+}
+
+.iconjiankangshangcheng:before {
+ content: "\e6d3";
+}
+
+.iconjiankangshangpin:before {
+ content: "\e6d4";
+}
+
+.iconjiankang:before {
+ content: "\e6d5";
+}
+
+.icon2:before {
+ content: "\e6d6";
+}
+
+.iconjiankangdu:before {
+ content: "\e6d7";
+}
+
+.iconjiankangyunyemianmokuai:before {
+ content: "\e6d8";
+}
+
+.iconjiankangpinggu:before {
+ content: "\e6d9";
+}
+
+.iconjiankang1:before {
+ content: "\e6da";
+}
+
+.iconjiankangzixun:before {
+ content: "\e6db";
+}
+
+.iconjiankangqushi:before {
+ content: "\e6dc";
+}
+
+.iconjiankang2:before {
+ content: "\e6dd";
+}
+
+.iconjiankangjiangtang:before {
+ content: "\e6de";
+}
+
+.iconmuying:before {
+ content: "\e6c1";
+}
+
+.icondailipingtai:before {
+ content: "\e6c2";
+}
+
+.icondailipingtai1:before {
+ content: "\e96c";
+}
+
+.iconmuying1:before {
+ content: "\e71a";
+}
+
+.iconjiagongguanli:before {
+ content: "\e6c4";
+}
+
+.iconapp-:before {
+ content: "\e6c5";
+}
+
+.iconmuying2:before {
+ content: "\e6c6";
+}
+
+.icontubiao_huabanfuben:before {
+ content: "\e6c7";
+}
+
+.iconshouyetabhuizhan:before {
+ content: "\e6c8";
+}
+
+.icondaili:before {
+ content: "\e6c9";
+}
+
+.icondaili1:before {
+ content: "\e6cb";
+}
+
+.iconhuizhanfuwu:before {
+ content: "\e6cc";
+}
+
+.iconzhanhui:before {
+ content: "\e6cd";
+}
+
+.iconfangdajing:before {
+ content: "\e6bf";
+}
+
+.icondiangongdianliao:before {
+ content: "\e6c0";
+}
+
+.iconpaicha:before {
+ content: "\e6bd";
+}
+
+.iconxinpian:before {
+ content: "\e6be";
+}
+
+.icondengguan:before {
+ content: "\e7ef";
+}
+
+.icongouwuche3:before {
+ content: "\e6bc";
+}
+
+.iconhuangguan1:before {
+ content: "\e6bb";
+}
+
+.iconjxhy:before {
+ content: "\e6ba";
+}
+
+.iconlogo:before {
+ content: "\e6b9";
+}
+
+.icondengnuan:before {
+ content: "\e6b5";
+}
+
+.iconyoupinwangtubiao-:before {
+ content: "\e6b6";
+}
+
+.icondengju2:before {
+ content: "\e727";
+}
+
+.iconshedeng:before {
+ content: "\e7ea";
+}
+
+.icondengju3:before {
+ content: "\e6b7";
+}
+
+.icondengju:before {
+ content: "\e6b1";
+}
+
+.icontongdeng:before {
+ content: "\e6b2";
+}
+
+.icondengju1:before {
+ content: "\e6b3";
+}
+
+.icontongdeng1:before {
+ content: "\e6b4";
+}
+
+.iconlenovologo2015:before {
+ content: "\e6af";
+}
+
+.iconGoogle:before {
+ content: "\e6b0";
+}
+
+.iconxinwen:before {
+ content: "\e710";
+}
+
+.iconxinwen1:before {
+ content: "\e6ad";
+}
+
+.iconxinwen2:before {
+ content: "\e6ab";
+}
+
+.iconxinwen3:before {
+ content: "\e6ac";
+}
+
+.iconxinwen4:before {
+ content: "\e6ae";
+}
+
+.icongengduo1:before {
+ content: "\e6aa";
+}
+
+.iconmore-dot:before {
+ content: "\e6a9";
+}
+
+.iconshangpin-peizhiguanli:before {
+ content: "\e6a5";
+}
+
+.iconyingxiaohuodong:before {
+ content: "\e6a6";
+}
+
+.iconshangpinxiaoshouqingkuang:before {
+ content: "\e6a7";
+}
+
+.iconshangpinjiageguanli:before {
+ content: "\e6a8";
+}
+
+.icongonggao:before {
+ content: "\e69d";
+}
+
+.icongonggao1:before {
+ content: "\e6a0";
+}
+
+.icongonggao2:before {
+ content: "\e76b";
+}
+
+.icongonggao3:before {
+ content: "\e6d1";
+}
+
+.icongonggao4:before {
+ content: "\e6a1";
+}
+
+.iconweibiaoti-_:before {
+ content: "\e6a3";
+}
+
+.icongonggao5:before {
+ content: "\e6a4";
+}
+
+.iconfenlei4:before {
+ content: "\e6c3";
+}
+
+.iconshouye:before {
+ content: "\e68b";
+}
+
+.iconiconfontshouye:before {
+ content: "\e68c";
+}
+
+.iconqq1:before {
+ content: "\e68e";
+}
+
+.iconshouye1:before {
+ content: "\e6ca";
+}
+
+.iconqq2:before {
+ content: "\e68f";
+}
+
+.icon3fenlei:before {
+ content: "\e690";
+}
+
+.iconfenlei5:before {
+ content: "\e691";
+}
+
+.iconleimupinleifenleileibie:before {
+ content: "\e72b";
+}
+
+.iconrenrenyaotubiao:before {
+ content: "\e692";
+}
+
+.iconfenlei6:before {
+ content: "\e693";
+}
+
+.iconcategory:before {
+ content: "\e694";
+}
+
+.iconQQ:before {
+ content: "\e695";
+}
+
+.iconjifenfenlei:before {
+ content: "\e696";
+}
+
+.iconfenlei7:before {
+ content: "\e697";
+}
+
+.iconshouye2:before {
+ content: "\e698";
+}
+
+.iconziyuan1:before {
+ content: "\e699";
+}
+
+.iconshouye3:before {
+ content: "\e69a";
+}
+
+.iconhome-active:before {
+ content: "\e69b";
+}
+
+.iconshouye4:before {
+ content: "\e69c";
+}
+
+.iconbao:before {
+ content: "\e689";
+}
+
+.iconbao1:before {
+ content: "\e68a";
+}
+
+.iconzhi:before {
+ content: "\e6f7";
+}
+
+.iconmore:before {
+ content: "\e685";
+}
+
+.iconbf-more:before {
+ content: "\e687";
+}
+
+.icongengduo:before {
+ content: "\e688";
+}
+
+.iconyoujiantou:before {
+ content: "\e67e";
+}
+
+.iconyoujiantou1:before {
+ content: "\e6fb";
+}
+
+.iconxiaoqudaojialunbozuojiantou-copy:before {
+ content: "\e680";
+}
+
+.iconhuangdijiantou:before {
+ content: "\e682";
+}
+
+.iconyonghu1:before {
+ content: "\e673";
+}
+
+.iconmsnui-reg:before {
+ content: "\e674";
+}
+
+.iconzhuce:before {
+ content: "\e675";
+}
+
+.iconzhuce1:before {
+ content: "\e676";
+}
+
+.iconyonghu2:before {
+ content: "\e677";
+}
+
+.iconyonghu3:before {
+ content: "\e67f";
+}
+
+.iconyonghu4:before {
+ content: "\e704";
+}
+
+.iconzhuce2:before {
+ content: "\e678";
+}
+
+.iconyonghu5:before {
+ content: "\e679";
+}
+
+.iconyonghu6:before {
+ content: "\e67a";
+}
+
+.iconzhuce3:before {
+ content: "\e67b";
+}
+
+.iconzhuce4:before {
+ content: "\e67c";
+}
+
+.iconzhuce5:before {
+ content: "\e7a0";
+}
+
+.iconcaigou:before {
+ content: "\e672";
+}
+
+.icongouwuche1:before {
+ content: "\e7f8";
+}
+
+.iconzixun:before {
+ content: "\e636";
+}
+
+.icon6:before {
+ content: "\e648";
+}
+
+.iconzixun1:before {
+ content: "\e66e";
+}
+
+.iconbangzhu:before {
+ content: "\e644";
+}
+
+.iconbangzhu1:before {
+ content: "\e664";
+}
+
+.iconguanjiaowangtubiao59:before {
+ content: "\e64e";
+}
+
+.iconzixun-copy:before {
+ content: "\e638";
+}
+
+.iconshouhou:before {
+ content: "\e640";
+}
+
+.iconkaidian:before {
+ content: "\e69f";
+}
+
+.iconquanyuankaidian:before {
+ content: "\e652";
+}
+
+.iconzhengpin:before {
+ content: "\e641";
+}
+
+.iconzixun2:before {
+ content: "\e642";
+}
+
+.iconbangzhu2:before {
+ content: "\e645";
+}
+
+.iconkuaisukaidian:before {
+ content: "\e6ed";
+}
+
+.iconzixun3:before {
+ content: "\e647";
+}
+
+.icon-mianfeikaidian:before {
+ content: "\e653";
+}
+
+.iconshenqingkaidian:before {
+ content: "\e654";
+}
+
+.iconkaidianzhinan:before {
+ content: "\e65e";
+}
+
+.iconanquan:before {
+ content: "\e655";
+}
+
+.iconCombinedShapeCopy:before {
+ content: "\e657";
+}
+
+.iconwoyaokaidian-biankuang:before {
+ content: "\e659";
+}
+
+.iconshouhou1:before {
+ content: "\e65a";
+}
+
+.iconkuaisukaidian1:before {
+ content: "\e65f";
+}
+
+.iconkaidian1:before {
+ content: "\e661";
+}
+
+.iconanquan1:before {
+ content: "\e662";
+}
+
+.iconzhengpin1:before {
+ content: "\e663";
+}
+
+.iconzixun4:before {
+ content: "\e68d";
+}
+
+.iconbaogao-shishangpinpaikaidianshuliang:before {
+ content: "\e66b";
+}
+
+.iconkaidian2:before {
+ content: "\e75b";
+}
+
+.iconkaidian3:before {
+ content: "\e66c";
+}
+
+.iconshouhou2:before {
+ content: "\e681";
+}
+
+.iconmianfd:before {
+ content: "\e66d";
+}
+
+.iconyouzhixunpantuijian:before {
+ content: "\e789";
+}
+
+.iconyouzhixunpantuijian_cu:before {
+ content: "\e7a9";
+}
+
+.iconbangzhu3:before {
+ content: "\e66f";
+}
+
+.iconkaidian4:before {
+ content: "\e6e8";
+}
+
+.iconshitu_ad_consultation:before {
+ content: "\e715";
+}
+
+.iconzhengpin2:before {
+ content: "\e670";
+}
+
+.iconanquan2:before {
+ content: "\e671";
+}
+
+.iconfabu2:before {
+ content: "\e635";
+}
+
+.icongouwucheman:before {
+ content: "\e601";
+}
+
+.icongouwuchekong:before {
+ content: "\e602";
+}
+
+.icongouwucheman1:before {
+ content: "\e604";
+}
+
+.iconshipin1:before {
+ content: "\e605";
+}
+
+.iconyunshu1:before {
+ content: "\e63a";
+}
+
+.iconleimutubiaoriyongbaihuo:before {
+ content: "\e617";
+}
+
+.iconshipin2:before {
+ content: "\e613";
+}
+
+.iconweixiugongju:before {
+ content: "\e60b";
+}
+
+.icongouwuche:before {
+ content: "\e614";
+}
+
+.iconjichuhuagong:before {
+ content: "\e629";
+}
+
+.iconhuagong:before {
+ content: "\e60a";
+}
+
+.iconjiajubaihuo:before {
+ content: "\e63e";
+}
+
+.iconyifu:before {
+ content: "\e60f";
+}
+
+.iconfangwujiaju:before {
+ content: "\e62d";
+}
+
+.iconweibiaoti2fuzhi03:before {
+ content: "\e616";
+}
+
+.iconweibiaoti2fuzhi13:before {
+ content: "\e61b";
+}
+
+.iconshuma:before {
+ content: "\e630";
+}
+
+.iconriyongbaihuo:before {
+ content: "\e619";
+}
+
+.iconshipin3:before {
+ content: "\e610";
+}
+
+.iconyifu1:before {
+ content: "\e666";
+}
+
+.iconshangwuhezuo:before {
+ content: "\e656";
+}
+
+.iconjingwuicon_svg-:before {
+ content: "\e631";
+}
+
+.iconweixiu:before {
+ content: "\e66a";
+}
+
+.iconyunshuzhong:before {
+ content: "\e658";
+}
+
+.icontuijianqiche:before {
+ content: "\e8cd";
+}
+
+.iconxiaofangfu:before {
+ content: "\e61a";
+}
+
+.iconxiaofangshuibeng:before {
+ content: "\e61c";
+}
+
+.iconhuagong1:before {
+ content: "\e61d";
+}
+
+.iconshangwu:before {
+ content: "\e64b";
+}
+
+.iconweixiu1:before {
+ content: "\e684";
+}
+
+.iconfood:before {
+ content: "\e64d";
+}
+
+.iconmechanical:before {
+ content: "\e650";
+}
+
+.iconshangwu1:before {
+ content: "\e74f";
+}
+
+.iconyifahuodefuben:before {
+ content: "\e61e";
+}
+
+.iconblob:before {
+ content: "\e7cf";
+}
+
+.iconyunshu-:before {
+ content: "\ee71";
+}
+
+.iconyunshu-1:before {
+ content: "\ee72";
+}
+
+.iconyunshu-2:before {
+ content: "\ee73";
+}
+
+.iconyunshu-3:before {
+ content: "\ee74";
+}
+
+.iconyunshu-4:before {
+ content: "\ee75";
+}
+
+.iconyunshu-5:before {
+ content: "\ee7a";
+}
+
+.iconyunshu-6:before {
+ content: "\ee85";
+}
+
+.iconjiajushenghuo:before {
+ content: "\e624";
+}
+
+.iconqiche:before {
+ content: "\e620";
+}
+
+.icongonganxiaofang:before {
+ content: "\e621";
+}
+
+.iconzu:before {
+ content: "\e622";
+}
+
+.iconzu1:before {
+ content: "\e625";
+}
+
+.icongaoduanhuagong:before {
+ content: "\e62a";
+}
+
+.iconliutijixie:before {
+ content: "\e64a";
+}
+
+.iconhuagong2:before {
+ content: "\e62b";
+}
+
+.iconqiche1:before {
+ content: "\e62c";
+}
+
+.iconkcb_hangyeicon-:before {
+ content: "\e686";
+}
+
+.iconhuagong3:before {
+ content: "\e634";
+}
+
+.iconshipin-mianbao:before {
+ content: "\e633";
+}
+
+.iconyonghu:before {
+ content: "\e639";
+}
+
+.iconguanggao:before {
+ content: "\e643";
+}
+
+.iconkefu:before {
+ content: "\e7b5";
+}
+
+.icon4fanhuidingbubai:before {
+ content: "\e85e";
+}
+
+.iconfanhuidingbu:before {
+ content: "\e637";
+}
+
+.iconfanhuidingbu1:before {
+ content: "\e6a2";
+}
+
+.iconfenlei:before {
+ content: "\e611";
+}
+
+.iconfenlei1:before {
+ content: "\e69e";
+}
+
+.iconiconfl:before {
+ content: "\e60e";
+}
+
+.iconfenlei2:before {
+ content: "\e6b8";
+}
+
+.iconfenlei3:before {
+ content: "\e615";
+}
+
+.iconshixinzhengfangxing:before {
+ content: "\e608";
+}
+
+.iconjinrituijian:before {
+ content: "\e65b";
+}
+
+.iconzuixinhuoyuan:before {
+ content: "\e683";
+}
+
+.iconiconxj:before {
+ content: "\e62f";
+}
+
+.iconquanbuxinwen:before {
+ content: "\e603";
+}
+
+.iconzhaoshangdaili:before {
+ content: "\e6f8";
+}
+
+.iconshipin:before {
+ content: "\e649";
+}
+
+.iconshangpin:before {
+ content: "\e665";
+}
+
+.iconziyuan:before {
+ content: "\e626";
+}
+
+.iconshangpin1:before {
+ content: "\e65c";
+}
+
+.icongongsidizhi:before {
+ content: "\e70d";
+}
+
+.iconpinpai:before {
+ content: "\e62e";
+}
+
+.iconshiwu-:before {
+ content: "\ebed";
+}
+
+.iconshangpin2:before {
+ content: "\e75f";
+}
+
+.iconicon_tuijiannor:before {
+ content: "\e606";
+}
+
+.icongongsimingcheng:before {
+ content: "\e65d";
+}
+
+.iconlingshitangguo:before {
+ content: "\e63c";
+}
+
+.iconiconset0140:before {
+ content: "\e627";
+}
+
+.iconiconfontdianhua4:before {
+ content: "\e612";
+}
+
+.iconcontrol101:before {
+ content: "\e660";
+}
+
+.iconzaixianzixun:before {
+ content: "\e7d4";
+}
+
+.iconhuanyingye:before {
+ content: "\e60c";
+}
+
+.iconerweima2:before {
+ content: "\e651";
+}
+
+.icondianhua1:before {
+ content: "\e667";
+}
+
+.iconerweima3:before {
+ content: "\e64c";
+}
+
+.icondianhua2:before {
+ content: "\e669";
+}
+
+.icontongyong-huanyingnitubiao:before {
+ content: "\e63b";
+}
+
+.iconerweima:before {
+ content: "\e628";
+}
+
+.iconerweima1:before {
+ content: "\e609";
+}
+
+.iconico:before {
+ content: "\e646";
+}
+
+.iconweizhi:before {
+ content: "\e61f";
+}
+
+.iconweizhi1:before {
+ content: "\e76f";
+}
+
+.iconchanpin1:before {
+ content: "\e632";
+}
+
+.iconzizhizhengshu:before {
+ content: "\e67d";
+}
+
+.icongongsi:before {
+ content: "\e769";
+}
+
+.iconzhengshu1:before {
+ content: "\e668";
+}
+
+.iconweibiaoti35:before {
+ content: "\e63d";
+}
+
+.iconzhengshu:before {
+ content: "\e63f";
+}
+
+.icongongsixinxi:before {
+ content: "\e618";
+}
+
+.iconchanpin:before {
+ content: "\e64f";
+}
+
+.iconyoujian1:before {
+ content: "\e804";
+}
+
+.iconqq:before {
+ content: "\e600";
+}
+
+.icondizhi:before {
+ content: "\e734";
+}
+
+.icondianhua5:before {
+ content: "\e607";
+}
+
+.icondianhua:before {
+ content: "\e60d";
+}
+
+.iconyoujian:before {
+ content: "\e623";
+}
+
diff --git a/skin/m15dt8blue/fonts/iconfont.eot b/skin/m15dt8blue/fonts/iconfont.eot
new file mode 100644
index 0000000..52a7802
Binary files /dev/null and b/skin/m15dt8blue/fonts/iconfont.eot differ
diff --git a/skin/m15dt8blue/fonts/iconfont.json b/skin/m15dt8blue/fonts/iconfont.json
new file mode 100644
index 0000000..7ef1e2b
--- /dev/null
+++ b/skin/m15dt8blue/fonts/iconfont.json
@@ -0,0 +1,4524 @@
+{
+ "id": "1234650",
+ "name": "no name",
+ "font_family": "iconfont",
+ "css_prefix_text": "icon",
+ "description": "",
+ "glyphs": [
+ {
+ "icon_id": "553629",
+ "name": "更多",
+ "font_class": "gengduo2",
+ "unicode": "e86b",
+ "unicode_decimal": 59499
+ },
+ {
+ "icon_id": "4144654",
+ "name": "产品",
+ "font_class": "chanpin2",
+ "unicode": "e86c",
+ "unicode_decimal": 59500
+ },
+ {
+ "icon_id": "8043875",
+ "name": "地球",
+ "font_class": "diqiu",
+ "unicode": "e870",
+ "unicode_decimal": 59504
+ },
+ {
+ "icon_id": "4195949",
+ "name": "专用车",
+ "font_class": "zhuanyongche",
+ "unicode": "e86a",
+ "unicode_decimal": 59498
+ },
+ {
+ "icon_id": "4002656",
+ "name": "热卖",
+ "font_class": "remai",
+ "unicode": "e866",
+ "unicode_decimal": 59494
+ },
+ {
+ "icon_id": "4150164",
+ "name": "消息",
+ "font_class": "xiaoxi",
+ "unicode": "e867",
+ "unicode_decimal": 59495
+ },
+ {
+ "icon_id": "5044669",
+ "name": "消息",
+ "font_class": "xiaoxi1",
+ "unicode": "e868",
+ "unicode_decimal": 59496
+ },
+ {
+ "icon_id": "9732840",
+ "name": "电话",
+ "font_class": "dianhua3",
+ "unicode": "e869",
+ "unicode_decimal": 59497
+ },
+ {
+ "icon_id": "824927",
+ "name": "登陆",
+ "font_class": "denglu",
+ "unicode": "e864",
+ "unicode_decimal": 59492
+ },
+ {
+ "icon_id": "9168871",
+ "name": "鞋子",
+ "font_class": "xiezi",
+ "unicode": "e865",
+ "unicode_decimal": 59493
+ },
+ {
+ "icon_id": "11007988",
+ "name": "关注",
+ "font_class": "guanzhu",
+ "unicode": "e862",
+ "unicode_decimal": 59490
+ },
+ {
+ "icon_id": "14214603",
+ "name": "关注",
+ "font_class": "guanzhu1",
+ "unicode": "e863",
+ "unicode_decimal": 59491
+ },
+ {
+ "icon_id": "3919475",
+ "name": "名片",
+ "font_class": "mingpian",
+ "unicode": "e861",
+ "unicode_decimal": 59489
+ },
+ {
+ "icon_id": "8287638",
+ "name": "连接",
+ "font_class": "lianjie3",
+ "unicode": "e85d",
+ "unicode_decimal": 59485
+ },
+ {
+ "icon_id": "13728270",
+ "name": "连接",
+ "font_class": "lianjie4",
+ "unicode": "e860",
+ "unicode_decimal": 59488
+ },
+ {
+ "icon_id": "1272090",
+ "name": "首页",
+ "font_class": "shouye-1",
+ "unicode": "e845",
+ "unicode_decimal": 59461
+ },
+ {
+ "icon_id": "1293068",
+ "name": "首页",
+ "font_class": "shouye6",
+ "unicode": "e848",
+ "unicode_decimal": 59464
+ },
+ {
+ "icon_id": "2456261",
+ "name": "搜索",
+ "font_class": "sousuo",
+ "unicode": "e849",
+ "unicode_decimal": 59465
+ },
+ {
+ "icon_id": "4480836",
+ "name": "首页",
+ "font_class": "shouye7",
+ "unicode": "e84a",
+ "unicode_decimal": 59466
+ },
+ {
+ "icon_id": "4646755",
+ "name": "首页",
+ "font_class": "shouye8",
+ "unicode": "e84b",
+ "unicode_decimal": 59467
+ },
+ {
+ "icon_id": "4988894",
+ "name": "首页",
+ "font_class": "shouye9",
+ "unicode": "e84c",
+ "unicode_decimal": 59468
+ },
+ {
+ "icon_id": "5372805",
+ "name": "首页",
+ "font_class": "shouye10",
+ "unicode": "e84d",
+ "unicode_decimal": 59469
+ },
+ {
+ "icon_id": "5966395",
+ "name": "首页",
+ "font_class": "shouye11",
+ "unicode": "e84e",
+ "unicode_decimal": 59470
+ },
+ {
+ "icon_id": "7495118",
+ "name": "首页",
+ "font_class": "shouye12",
+ "unicode": "e84f",
+ "unicode_decimal": 59471
+ },
+ {
+ "icon_id": "8956618",
+ "name": "首页",
+ "font_class": "shouye13",
+ "unicode": "e850",
+ "unicode_decimal": 59472
+ },
+ {
+ "icon_id": "10485593",
+ "name": "首页 copy",
+ "font_class": "shouyecopy",
+ "unicode": "e851",
+ "unicode_decimal": 59473
+ },
+ {
+ "icon_id": "11037115",
+ "name": "首页 (3)",
+ "font_class": "shouye14",
+ "unicode": "e852",
+ "unicode_decimal": 59474
+ },
+ {
+ "icon_id": "11223764",
+ "name": "首页",
+ "font_class": "icon_huabanfuben",
+ "unicode": "e853",
+ "unicode_decimal": 59475
+ },
+ {
+ "icon_id": "12623303",
+ "name": "首页",
+ "font_class": "shouye15",
+ "unicode": "e854",
+ "unicode_decimal": 59476
+ },
+ {
+ "icon_id": "13251915",
+ "name": "首页",
+ "font_class": "shouye16",
+ "unicode": "e855",
+ "unicode_decimal": 59477
+ },
+ {
+ "icon_id": "13783883",
+ "name": "首页 未点击",
+ "font_class": "shouyeweidianji",
+ "unicode": "e856",
+ "unicode_decimal": 59478
+ },
+ {
+ "icon_id": "14128421",
+ "name": "首页",
+ "font_class": "shouye17",
+ "unicode": "e857",
+ "unicode_decimal": 59479
+ },
+ {
+ "icon_id": "14234614",
+ "name": "首页",
+ "font_class": "shouye18",
+ "unicode": "e858",
+ "unicode_decimal": 59480
+ },
+ {
+ "icon_id": "14318272",
+ "name": "首页",
+ "font_class": "shouye19",
+ "unicode": "e859",
+ "unicode_decimal": 59481
+ },
+ {
+ "icon_id": "14457985",
+ "name": "首页",
+ "font_class": "shouye20",
+ "unicode": "e85a",
+ "unicode_decimal": 59482
+ },
+ {
+ "icon_id": "14737358",
+ "name": "首页",
+ "font_class": "shouye21",
+ "unicode": "e85b",
+ "unicode_decimal": 59483
+ },
+ {
+ "icon_id": "14737615",
+ "name": "首页",
+ "font_class": "shouye22",
+ "unicode": "e85c",
+ "unicode_decimal": 59484
+ },
+ {
+ "icon_id": "93349",
+ "name": "环保",
+ "font_class": "huanbao",
+ "unicode": "e83a",
+ "unicode_decimal": 59450
+ },
+ {
+ "icon_id": "182991",
+ "name": "五金工具",
+ "font_class": "wujingongju",
+ "unicode": "e83b",
+ "unicode_decimal": 59451
+ },
+ {
+ "icon_id": "617225",
+ "name": "安防_警报",
+ "font_class": "b-ic-4",
+ "unicode": "e83c",
+ "unicode_decimal": 59452
+ },
+ {
+ "icon_id": "1232929",
+ "name": "机器人",
+ "font_class": "jiqiren2",
+ "unicode": "e83d",
+ "unicode_decimal": 59453
+ },
+ {
+ "icon_id": "2024110",
+ "name": "模具",
+ "font_class": "moju",
+ "unicode": "e896",
+ "unicode_decimal": 59542
+ },
+ {
+ "icon_id": "3296560",
+ "name": "环保",
+ "font_class": "huanbao1",
+ "unicode": "e83e",
+ "unicode_decimal": 59454
+ },
+ {
+ "icon_id": "4251101",
+ "name": "仪表",
+ "font_class": "yibiao",
+ "unicode": "e83f",
+ "unicode_decimal": 59455
+ },
+ {
+ "icon_id": "5921963",
+ "name": "五金:工具",
+ "font_class": "wujingongju1",
+ "unicode": "e840",
+ "unicode_decimal": 59456
+ },
+ {
+ "icon_id": "6996191",
+ "name": "新品",
+ "font_class": "xinpin",
+ "unicode": "e85f",
+ "unicode_decimal": 59487
+ },
+ {
+ "icon_id": "8895715",
+ "name": "仪器",
+ "font_class": "yiqi",
+ "unicode": "e841",
+ "unicode_decimal": 59457
+ },
+ {
+ "icon_id": "10793238",
+ "name": "机械",
+ "font_class": "jixie",
+ "unicode": "e842",
+ "unicode_decimal": 59458
+ },
+ {
+ "icon_id": "11067547",
+ "name": "安防监控",
+ "font_class": "anfangjiankong",
+ "unicode": "e843",
+ "unicode_decimal": 59459
+ },
+ {
+ "icon_id": "11437386",
+ "name": "电工电气_",
+ "font_class": "diangongdianqi_",
+ "unicode": "e844",
+ "unicode_decimal": 59460
+ },
+ {
+ "icon_id": "14004095",
+ "name": "交通",
+ "font_class": "jiaotong",
+ "unicode": "e847",
+ "unicode_decimal": 59463
+ },
+ {
+ "icon_id": "5287472",
+ "name": "污水处理站监测",
+ "font_class": "wushuichulizhanjiance",
+ "unicode": "e833",
+ "unicode_decimal": 59443
+ },
+ {
+ "icon_id": "5427525",
+ "name": "污水泵",
+ "font_class": "wushuibeng",
+ "unicode": "e834",
+ "unicode_decimal": 59444
+ },
+ {
+ "icon_id": "7370803",
+ "name": "污水处理费",
+ "font_class": "wushuichulifei",
+ "unicode": "e835",
+ "unicode_decimal": 59445
+ },
+ {
+ "icon_id": "8312587",
+ "name": "污水",
+ "font_class": "wushui",
+ "unicode": "e836",
+ "unicode_decimal": 59446
+ },
+ {
+ "icon_id": "11836725",
+ "name": "污水处理",
+ "font_class": "wushuichuli",
+ "unicode": "e838",
+ "unicode_decimal": 59448
+ },
+ {
+ "icon_id": "12081428",
+ "name": "dt-污水处理厂",
+ "font_class": "dt-wushuichulichang",
+ "unicode": "e839",
+ "unicode_decimal": 59449
+ },
+ {
+ "icon_id": "8365304",
+ "name": "首页-咨询电话",
+ "font_class": "shouye-zixundianhua",
+ "unicode": "e832",
+ "unicode_decimal": 59442
+ },
+ {
+ "icon_id": "12903888",
+ "name": "查看",
+ "font_class": "chakan2",
+ "unicode": "e830",
+ "unicode_decimal": 59440
+ },
+ {
+ "icon_id": "13482273",
+ "name": "查看",
+ "font_class": "chakan3",
+ "unicode": "e831",
+ "unicode_decimal": 59441
+ },
+ {
+ "icon_id": "6812638",
+ "name": "home",
+ "font_class": "home-o",
+ "unicode": "e82c",
+ "unicode_decimal": 59436
+ },
+ {
+ "icon_id": "12679287",
+ "name": "home",
+ "font_class": "sanguohome",
+ "unicode": "e82d",
+ "unicode_decimal": 59437
+ },
+ {
+ "icon_id": "12765911",
+ "name": "home",
+ "font_class": "zhuye",
+ "unicode": "e82e",
+ "unicode_decimal": 59438
+ },
+ {
+ "icon_id": "13273714",
+ "name": "home",
+ "font_class": "home1",
+ "unicode": "e82f",
+ "unicode_decimal": 59439
+ },
+ {
+ "icon_id": "463077",
+ "name": "团队 线形",
+ "font_class": "tuanduixianxing",
+ "unicode": "e829",
+ "unicode_decimal": 59433
+ },
+ {
+ "icon_id": "7306540",
+ "name": "团队",
+ "font_class": "tuandui1",
+ "unicode": "e82a",
+ "unicode_decimal": 59434
+ },
+ {
+ "icon_id": "7643377",
+ "name": "团队",
+ "font_class": "tuandui2",
+ "unicode": "e82b",
+ "unicode_decimal": 59435
+ },
+ {
+ "icon_id": "315962",
+ "name": "勾",
+ "font_class": "gou3",
+ "unicode": "e822",
+ "unicode_decimal": 59426
+ },
+ {
+ "icon_id": "1027444",
+ "name": "勾",
+ "font_class": "gou-copy",
+ "unicode": "e823",
+ "unicode_decimal": 59427
+ },
+ {
+ "icon_id": "2519589",
+ "name": "勾",
+ "font_class": "gou4",
+ "unicode": "e824",
+ "unicode_decimal": 59428
+ },
+ {
+ "icon_id": "2902250",
+ "name": "勾",
+ "font_class": "gou5",
+ "unicode": "e825",
+ "unicode_decimal": 59429
+ },
+ {
+ "icon_id": "9210184",
+ "name": "勾",
+ "font_class": "gou6",
+ "unicode": "e826",
+ "unicode_decimal": 59430
+ },
+ {
+ "icon_id": "12817302",
+ "name": "勾",
+ "font_class": "gou7",
+ "unicode": "e827",
+ "unicode_decimal": 59431
+ },
+ {
+ "icon_id": "12906696",
+ "name": "勾",
+ "font_class": "gou8",
+ "unicode": "e828",
+ "unicode_decimal": 59432
+ },
+ {
+ "icon_id": "11750987",
+ "name": "询价管理",
+ "font_class": "xunjiaguanli",
+ "unicode": "e821",
+ "unicode_decimal": 59425
+ },
+ {
+ "icon_id": "1426764",
+ "name": "采购",
+ "font_class": "caigou1",
+ "unicode": "e81d",
+ "unicode_decimal": 59421
+ },
+ {
+ "icon_id": "2995703",
+ "name": "采购主管",
+ "font_class": "caigouzhuguan",
+ "unicode": "e81e",
+ "unicode_decimal": 59422
+ },
+ {
+ "icon_id": "6924192",
+ "name": "采购",
+ "font_class": "caigou2",
+ "unicode": "e81f",
+ "unicode_decimal": 59423
+ },
+ {
+ "icon_id": "10304365",
+ "name": "采购跟踪",
+ "font_class": "caigougenzong",
+ "unicode": "e820",
+ "unicode_decimal": 59424
+ },
+ {
+ "icon_id": "6722724",
+ "name": "地方特产",
+ "font_class": "difangtechan",
+ "unicode": "e81c",
+ "unicode_decimal": 59420
+ },
+ {
+ "icon_id": "10475235",
+ "name": "鸡肉",
+ "font_class": "jirou1",
+ "unicode": "e81b",
+ "unicode_decimal": 59419
+ },
+ {
+ "icon_id": "5112086",
+ "name": "芒果",
+ "font_class": "mangguo",
+ "unicode": "e818",
+ "unicode_decimal": 59416
+ },
+ {
+ "icon_id": "5649122",
+ "name": "芒果",
+ "font_class": "mangguo1",
+ "unicode": "e819",
+ "unicode_decimal": 59417
+ },
+ {
+ "icon_id": "9526259",
+ "name": "芒果",
+ "font_class": "mangguo2",
+ "unicode": "e81a",
+ "unicode_decimal": 59418
+ },
+ {
+ "icon_id": "5194473",
+ "name": "鸡肉",
+ "font_class": "-jirou",
+ "unicode": "e816",
+ "unicode_decimal": 59414
+ },
+ {
+ "icon_id": "10178901",
+ "name": "鸡肉",
+ "font_class": "jirou",
+ "unicode": "e817",
+ "unicode_decimal": 59415
+ },
+ {
+ "icon_id": "203577",
+ "name": "水果",
+ "font_class": "shuiguo",
+ "unicode": "e7fc",
+ "unicode_decimal": 59388
+ },
+ {
+ "icon_id": "391147",
+ "name": "家禽",
+ "font_class": "jiaqin",
+ "unicode": "e7fd",
+ "unicode_decimal": 59389
+ },
+ {
+ "icon_id": "421827",
+ "name": "水果",
+ "font_class": "shuiguo1",
+ "unicode": "e7fe",
+ "unicode_decimal": 59390
+ },
+ {
+ "icon_id": "642790",
+ "name": "鱼",
+ "font_class": "yu",
+ "unicode": "e7ff",
+ "unicode_decimal": 59391
+ },
+ {
+ "icon_id": "839213",
+ "name": "鱼",
+ "font_class": "yu1",
+ "unicode": "e800",
+ "unicode_decimal": 59392
+ },
+ {
+ "icon_id": "1170002",
+ "name": "水果",
+ "font_class": "shuiguo2",
+ "unicode": "e801",
+ "unicode_decimal": 59393
+ },
+ {
+ "icon_id": "1287531",
+ "name": "水果",
+ "font_class": "shuiguo3",
+ "unicode": "e802",
+ "unicode_decimal": 59394
+ },
+ {
+ "icon_id": "1493613",
+ "name": "水果",
+ "font_class": "shuiguo4",
+ "unicode": "e846",
+ "unicode_decimal": 59462
+ },
+ {
+ "icon_id": "1567904",
+ "name": "种子追溯",
+ "font_class": "zhongzizhuisu",
+ "unicode": "e803",
+ "unicode_decimal": 59395
+ },
+ {
+ "icon_id": "1673388",
+ "name": "家禽",
+ "font_class": "jiaqin1",
+ "unicode": "e805",
+ "unicode_decimal": 59397
+ },
+ {
+ "icon_id": "2237990",
+ "name": "种子投资",
+ "font_class": "zhongzitouzi",
+ "unicode": "e806",
+ "unicode_decimal": 59398
+ },
+ {
+ "icon_id": "3051197",
+ "name": "虾",
+ "font_class": "xia",
+ "unicode": "e807",
+ "unicode_decimal": 59399
+ },
+ {
+ "icon_id": "4465156",
+ "name": "水果",
+ "font_class": "shuiguo5",
+ "unicode": "e808",
+ "unicode_decimal": 59400
+ },
+ {
+ "icon_id": "4483860",
+ "name": "家禽",
+ "font_class": "jiaqin2",
+ "unicode": "e809",
+ "unicode_decimal": 59401
+ },
+ {
+ "icon_id": "4964244",
+ "name": "小龙虾",
+ "font_class": "xiaolongxia",
+ "unicode": "e80a",
+ "unicode_decimal": 59402
+ },
+ {
+ "icon_id": "5075164",
+ "name": "竹笋",
+ "font_class": "zhusun",
+ "unicode": "e80b",
+ "unicode_decimal": 59403
+ },
+ {
+ "icon_id": "5092031",
+ "name": "罐头",
+ "font_class": "guantou",
+ "unicode": "e80c",
+ "unicode_decimal": 59404
+ },
+ {
+ "icon_id": "5172325",
+ "name": "竹笋",
+ "font_class": "shucai-",
+ "unicode": "e80d",
+ "unicode_decimal": 59405
+ },
+ {
+ "icon_id": "5214082",
+ "name": "虾",
+ "font_class": "xia1",
+ "unicode": "e80e",
+ "unicode_decimal": 59406
+ },
+ {
+ "icon_id": "5702444",
+ "name": "种子",
+ "font_class": "zhongzi",
+ "unicode": "e810",
+ "unicode_decimal": 59408
+ },
+ {
+ "icon_id": "6401691",
+ "name": "鱼",
+ "font_class": "yu2",
+ "unicode": "e811",
+ "unicode_decimal": 59409
+ },
+ {
+ "icon_id": "6867036",
+ "name": "虾蟹类-01",
+ "font_class": "xiaxielei-",
+ "unicode": "e9a3",
+ "unicode_decimal": 59811
+ },
+ {
+ "icon_id": "7765095",
+ "name": "虾",
+ "font_class": "diaoyu",
+ "unicode": "e812",
+ "unicode_decimal": 59410
+ },
+ {
+ "icon_id": "7819990",
+ "name": "水果 copy 2",
+ "font_class": "shuiguocopy",
+ "unicode": "e813",
+ "unicode_decimal": 59411
+ },
+ {
+ "icon_id": "7952957",
+ "name": "虾",
+ "font_class": "xia2",
+ "unicode": "e814",
+ "unicode_decimal": 59412
+ },
+ {
+ "icon_id": "8984098",
+ "name": "鸡",
+ "font_class": "ji",
+ "unicode": "e837",
+ "unicode_decimal": 59447
+ },
+ {
+ "icon_id": "13281484",
+ "name": "鱼",
+ "font_class": "yu3",
+ "unicode": "e815",
+ "unicode_decimal": 59413
+ },
+ {
+ "icon_id": "1319954",
+ "name": "手机",
+ "font_class": "shouji1",
+ "unicode": "e7f7",
+ "unicode_decimal": 59383
+ },
+ {
+ "icon_id": "1685480",
+ "name": "手机",
+ "font_class": "shouji2",
+ "unicode": "e7f9",
+ "unicode_decimal": 59385
+ },
+ {
+ "icon_id": "3521980",
+ "name": "手机",
+ "font_class": "shouji3",
+ "unicode": "e7fa",
+ "unicode_decimal": 59386
+ },
+ {
+ "icon_id": "12355945",
+ "name": "苹果手机x细边框2",
+ "font_class": "pingguoxxibiankuang",
+ "unicode": "e7fb",
+ "unicode_decimal": 59387
+ },
+ {
+ "icon_id": "3080629",
+ "name": "手机 (3)",
+ "font_class": "shouji",
+ "unicode": "e7f6",
+ "unicode_decimal": 59382
+ },
+ {
+ "icon_id": "2439600",
+ "name": "客服",
+ "font_class": "kefu1",
+ "unicode": "e7f3",
+ "unicode_decimal": 59379
+ },
+ {
+ "icon_id": "10978420",
+ "name": "客服",
+ "font_class": "kefu2",
+ "unicode": "e7f4",
+ "unicode_decimal": 59380
+ },
+ {
+ "icon_id": "11446981",
+ "name": "客服",
+ "font_class": "kefu3",
+ "unicode": "e7f5",
+ "unicode_decimal": 59381
+ },
+ {
+ "icon_id": "1464115",
+ "name": "05团队",
+ "font_class": "tuandui",
+ "unicode": "e7e9",
+ "unicode_decimal": 59369
+ },
+ {
+ "icon_id": "2686582",
+ "name": "设计-金煌",
+ "font_class": "sheji-jinhuang",
+ "unicode": "e7eb",
+ "unicode_decimal": 59371
+ },
+ {
+ "icon_id": "4152191",
+ "name": "设计",
+ "font_class": "sheji",
+ "unicode": "e7ec",
+ "unicode_decimal": 59372
+ },
+ {
+ "icon_id": "4616653",
+ "name": "关于我们-开发团队",
+ "font_class": "guanyuwomen-kaifatuandui",
+ "unicode": "e7ed",
+ "unicode_decimal": 59373
+ },
+ {
+ "icon_id": "8739553",
+ "name": "我的团队-01",
+ "font_class": "wodetuandui-",
+ "unicode": "e7ee",
+ "unicode_decimal": 59374
+ },
+ {
+ "icon_id": "9514828",
+ "name": "设计师",
+ "font_class": "zu2",
+ "unicode": "e7f0",
+ "unicode_decimal": 59376
+ },
+ {
+ "icon_id": "12095897",
+ "name": "设计管理",
+ "font_class": "shejiguanli",
+ "unicode": "e7f1",
+ "unicode_decimal": 59377
+ },
+ {
+ "icon_id": "12463815",
+ "name": "设计理念",
+ "font_class": "ico1",
+ "unicode": "e7f2",
+ "unicode_decimal": 59378
+ },
+ {
+ "icon_id": "1127243",
+ "name": "代码应用",
+ "font_class": "daimayingyong",
+ "unicode": "e7e2",
+ "unicode_decimal": 59362
+ },
+ {
+ "icon_id": "2545541",
+ "name": "电脑",
+ "font_class": "diannao2",
+ "unicode": "e7e3",
+ "unicode_decimal": 59363
+ },
+ {
+ "icon_id": "3232831",
+ "name": "多设备",
+ "font_class": "simiquan",
+ "unicode": "e7e4",
+ "unicode_decimal": 59364
+ },
+ {
+ "icon_id": "3335201",
+ "name": "团队管理",
+ "font_class": "tuanduiguanli",
+ "unicode": "e7e5",
+ "unicode_decimal": 59365
+ },
+ {
+ "icon_id": "5793844",
+ "name": "电脑 (1)",
+ "font_class": "diannao3",
+ "unicode": "e7e6",
+ "unicode_decimal": 59366
+ },
+ {
+ "icon_id": "11270780",
+ "name": "代码",
+ "font_class": "daima",
+ "unicode": "e7e7",
+ "unicode_decimal": 59367
+ },
+ {
+ "icon_id": "12299320",
+ "name": "代码",
+ "font_class": "daima1",
+ "unicode": "e7e8",
+ "unicode_decimal": 59368
+ },
+ {
+ "icon_id": "5766898",
+ "name": "鼠标编辑",
+ "font_class": "shubiaobianji",
+ "unicode": "e7de",
+ "unicode_decimal": 59358
+ },
+ {
+ "icon_id": "6340454",
+ "name": "鼠标选择",
+ "font_class": "icon-test1",
+ "unicode": "e7df",
+ "unicode_decimal": 59359
+ },
+ {
+ "icon_id": "10353162",
+ "name": "编码",
+ "font_class": "bianma",
+ "unicode": "e7e0",
+ "unicode_decimal": 59360
+ },
+ {
+ "icon_id": "11321697",
+ "name": "编码",
+ "font_class": "bianma1",
+ "unicode": "e7e1",
+ "unicode_decimal": 59361
+ },
+ {
+ "icon_id": "7309259",
+ "name": "百度",
+ "font_class": "baidu",
+ "unicode": "e7dc",
+ "unicode_decimal": 59356
+ },
+ {
+ "icon_id": "10569671",
+ "name": "云服务器",
+ "font_class": "yunfuwuqi",
+ "unicode": "e7dd",
+ "unicode_decimal": 59357
+ },
+ {
+ "icon_id": "7671208",
+ "name": "QQ",
+ "font_class": "QQ1",
+ "unicode": "e7db",
+ "unicode_decimal": 59355
+ },
+ {
+ "icon_id": "202594",
+ "name": "分类-米面粮油",
+ "font_class": "flour",
+ "unicode": "e7c3",
+ "unicode_decimal": 59331
+ },
+ {
+ "icon_id": "440602",
+ "name": "进口馆粮油",
+ "font_class": "jinkouguanliangyou",
+ "unicode": "e7c6",
+ "unicode_decimal": 59334
+ },
+ {
+ "icon_id": "981457",
+ "name": "蔬菜",
+ "font_class": "shucai",
+ "unicode": "e7c7",
+ "unicode_decimal": 59335
+ },
+ {
+ "icon_id": "1637507",
+ "name": "蔬菜",
+ "font_class": "shucai1",
+ "unicode": "e7c8",
+ "unicode_decimal": 59336
+ },
+ {
+ "icon_id": "3323509",
+ "name": "查看",
+ "font_class": "chakan1",
+ "unicode": "e7c9",
+ "unicode_decimal": 59337
+ },
+ {
+ "icon_id": "3446954",
+ "name": "茄子",
+ "font_class": "qiezi",
+ "unicode": "e7ca",
+ "unicode_decimal": 59338
+ },
+ {
+ "icon_id": "4232391",
+ "name": "南瓜",
+ "font_class": "nangua",
+ "unicode": "e7cb",
+ "unicode_decimal": 59339
+ },
+ {
+ "icon_id": "4895614",
+ "name": "食品粮油",
+ "font_class": "shipinliangyou",
+ "unicode": "e7cc",
+ "unicode_decimal": 59340
+ },
+ {
+ "icon_id": "5075150",
+ "name": "南瓜",
+ "font_class": "nangua1",
+ "unicode": "e7cd",
+ "unicode_decimal": 59341
+ },
+ {
+ "icon_id": "5199854",
+ "name": "青椒",
+ "font_class": "qingjiao",
+ "unicode": "e7ce",
+ "unicode_decimal": 59342
+ },
+ {
+ "icon_id": "6635767",
+ "name": "微信",
+ "font_class": "weixin",
+ "unicode": "e7d0",
+ "unicode_decimal": 59344
+ },
+ {
+ "icon_id": "7687664",
+ "name": "二维码",
+ "font_class": "erweima4",
+ "unicode": "e7d1",
+ "unicode_decimal": 59345
+ },
+ {
+ "icon_id": "8963645",
+ "name": "查看",
+ "font_class": "check-line",
+ "unicode": "e7d2",
+ "unicode_decimal": 59346
+ },
+ {
+ "icon_id": "9007464",
+ "name": "微信",
+ "font_class": "weixin1",
+ "unicode": "e7d3",
+ "unicode_decimal": 59347
+ },
+ {
+ "icon_id": "9700019",
+ "name": "查看",
+ "font_class": "chakan",
+ "unicode": "e7d5",
+ "unicode_decimal": 59349
+ },
+ {
+ "icon_id": "10403960",
+ "name": "蔬菜",
+ "font_class": "shucai2",
+ "unicode": "e7d7",
+ "unicode_decimal": 59351
+ },
+ {
+ "icon_id": "10709967",
+ "name": "蔬菜",
+ "font_class": "shucai3",
+ "unicode": "e7d8",
+ "unicode_decimal": 59352
+ },
+ {
+ "icon_id": "11940166",
+ "name": "蔬菜",
+ "font_class": "shucai4",
+ "unicode": "e7d9",
+ "unicode_decimal": 59353
+ },
+ {
+ "icon_id": "12822019",
+ "name": "查看 眼睛 实时分析 2",
+ "font_class": "chakanyanjingshishifenxi2",
+ "unicode": "e7da",
+ "unicode_decimal": 59354
+ },
+ {
+ "icon_id": "13063897",
+ "name": "头条1",
+ "font_class": "weibiaoti-2",
+ "unicode": "e7c5",
+ "unicode_decimal": 59333
+ },
+ {
+ "icon_id": "714439",
+ "name": "转发",
+ "font_class": "zhuanfa",
+ "unicode": "e7be",
+ "unicode_decimal": 59326
+ },
+ {
+ "icon_id": "5663328",
+ "name": "转发",
+ "font_class": "zhuanfa1",
+ "unicode": "e7bf",
+ "unicode_decimal": 59327
+ },
+ {
+ "icon_id": "5835463",
+ "name": "点赞",
+ "font_class": "dianzan",
+ "unicode": "e7c0",
+ "unicode_decimal": 59328
+ },
+ {
+ "icon_id": "7316088",
+ "name": "转发",
+ "font_class": "zhuanfa2",
+ "unicode": "e7c1",
+ "unicode_decimal": 59329
+ },
+ {
+ "icon_id": "12686747",
+ "name": "转发",
+ "font_class": "icon_zhuanfa",
+ "unicode": "e7c2",
+ "unicode_decimal": 59330
+ },
+ {
+ "icon_id": "5475530",
+ "name": "菜单",
+ "font_class": "caidan",
+ "unicode": "e7bd",
+ "unicode_decimal": 59325
+ },
+ {
+ "icon_id": "2676665",
+ "name": "放大镜",
+ "font_class": "fangdajing1",
+ "unicode": "e7bc",
+ "unicode_decimal": 59324
+ },
+ {
+ "icon_id": "49851",
+ "name": "放大镜",
+ "font_class": "41",
+ "unicode": "e7ba",
+ "unicode_decimal": 59322
+ },
+ {
+ "icon_id": "688082",
+ "name": "链接 关联",
+ "font_class": "lianjieguanlian",
+ "unicode": "e7ac",
+ "unicode_decimal": 59308
+ },
+ {
+ "icon_id": "1233627",
+ "name": "办公自动化",
+ "font_class": "bangongzidonghua",
+ "unicode": "e7ad",
+ "unicode_decimal": 59309
+ },
+ {
+ "icon_id": "4928483",
+ "name": "自动化",
+ "font_class": "automation",
+ "unicode": "e7ae",
+ "unicode_decimal": 59310
+ },
+ {
+ "icon_id": "6715381",
+ "name": "自动化运维",
+ "font_class": "zidonghuayunwei",
+ "unicode": "e7af",
+ "unicode_decimal": 59311
+ },
+ {
+ "icon_id": "9043701",
+ "name": "清算和对账自动化",
+ "font_class": "qingsuanheduizhangzidonghua-",
+ "unicode": "e7b1",
+ "unicode_decimal": 59313
+ },
+ {
+ "icon_id": "9755022",
+ "name": "链接",
+ "font_class": "lianjie",
+ "unicode": "e7b2",
+ "unicode_decimal": 59314
+ },
+ {
+ "icon_id": "9776565",
+ "name": "链接",
+ "font_class": "lianjie1",
+ "unicode": "e7b3",
+ "unicode_decimal": 59315
+ },
+ {
+ "icon_id": "9812037",
+ "name": "链接",
+ "font_class": "lianjie2",
+ "unicode": "e7b4",
+ "unicode_decimal": 59316
+ },
+ {
+ "icon_id": "11396578",
+ "name": "自动化-网络",
+ "font_class": "zidonghua-wangluo",
+ "unicode": "e7b6",
+ "unicode_decimal": 59318
+ },
+ {
+ "icon_id": "11396579",
+ "name": "自动化-服务器",
+ "font_class": "zidonghua-fuwuqi",
+ "unicode": "e7b8",
+ "unicode_decimal": 59320
+ },
+ {
+ "icon_id": "12542911",
+ "name": "自动化流程",
+ "font_class": "ziyuan4",
+ "unicode": "e7b9",
+ "unicode_decimal": 59321
+ },
+ {
+ "icon_id": "1844826",
+ "name": "设计软件",
+ "font_class": "shejiruanjian",
+ "unicode": "e7a4",
+ "unicode_decimal": 59300
+ },
+ {
+ "icon_id": "6229067",
+ "name": "自动化",
+ "font_class": "zidonghua",
+ "unicode": "e7a5",
+ "unicode_decimal": 59301
+ },
+ {
+ "icon_id": "7468707",
+ "name": "软件",
+ "font_class": "ruanjian",
+ "unicode": "e7a6",
+ "unicode_decimal": 59302
+ },
+ {
+ "icon_id": "7866943",
+ "name": "仓库",
+ "font_class": "cangku",
+ "unicode": "e7a7",
+ "unicode_decimal": 59303
+ },
+ {
+ "icon_id": "7944519",
+ "name": "软件定制",
+ "font_class": "ruanjiandingzhi",
+ "unicode": "e7a8",
+ "unicode_decimal": 59304
+ },
+ {
+ "icon_id": "9118143",
+ "name": "仓库",
+ "font_class": "cangku1",
+ "unicode": "e7ab",
+ "unicode_decimal": 59307
+ },
+ {
+ "icon_id": "5109544",
+ "name": "物流",
+ "font_class": "wuliu",
+ "unicode": "e7a3",
+ "unicode_decimal": 59299
+ },
+ {
+ "icon_id": "7768174",
+ "name": "升降机监测",
+ "font_class": "shengjiangjijiance",
+ "unicode": "e7a2",
+ "unicode_decimal": 59298
+ },
+ {
+ "icon_id": "12032044",
+ "name": "输送机械",
+ "font_class": "yunshujixie",
+ "unicode": "e7d6",
+ "unicode_decimal": 59350
+ },
+ {
+ "icon_id": "538593",
+ "name": "托盘121",
+ "font_class": "tuopan121",
+ "unicode": "e79a",
+ "unicode_decimal": 59290
+ },
+ {
+ "icon_id": "1270710",
+ "name": "托盘码-批量",
+ "font_class": "23",
+ "unicode": "e79b",
+ "unicode_decimal": 59291
+ },
+ {
+ "icon_id": "5927145",
+ "name": "物流设备",
+ "font_class": "ziyuan3",
+ "unicode": "e79c",
+ "unicode_decimal": 59292
+ },
+ {
+ "icon_id": "7745762",
+ "name": "HY物流设备",
+ "font_class": "HYwuliushebei",
+ "unicode": "e79d",
+ "unicode_decimal": 59293
+ },
+ {
+ "icon_id": "7759221",
+ "name": "托盘121",
+ "font_class": "tuopan1211",
+ "unicode": "e79f",
+ "unicode_decimal": 59295
+ },
+ {
+ "icon_id": "7845510",
+ "name": "叉车",
+ "font_class": "chache",
+ "unicode": "e7a1",
+ "unicode_decimal": 59297
+ },
+ {
+ "icon_id": "7745758",
+ "name": "HY焊接设备",
+ "font_class": "HYhanjieshebei",
+ "unicode": "e799",
+ "unicode_decimal": 59289
+ },
+ {
+ "icon_id": "4772877",
+ "name": "皇冠",
+ "font_class": "huangguan",
+ "unicode": "e797",
+ "unicode_decimal": 59287
+ },
+ {
+ "icon_id": "7078837",
+ "name": "皇冠",
+ "font_class": "huangguan2",
+ "unicode": "e798",
+ "unicode_decimal": 59288
+ },
+ {
+ "icon_id": "5737423",
+ "name": "时装与服装-13",
+ "font_class": "shizhuangyufuzhuang-",
+ "unicode": "eb52",
+ "unicode_decimal": 60242
+ },
+ {
+ "icon_id": "5737467",
+ "name": "时装与服装-59",
+ "font_class": "shizhuangyufuzhuang-1",
+ "unicode": "eb68",
+ "unicode_decimal": 60264
+ },
+ {
+ "icon_id": "5737505",
+ "name": "时装与服装-96",
+ "font_class": "shizhuangyufuzhuang-2",
+ "unicode": "eb77",
+ "unicode_decimal": 60279
+ },
+ {
+ "icon_id": "5737519",
+ "name": "时装与服装-111",
+ "font_class": "shizhuangyufuzhuang-3",
+ "unicode": "eb7e",
+ "unicode_decimal": 60286
+ },
+ {
+ "icon_id": "5737607",
+ "name": "时装与服装-198",
+ "font_class": "shizhuangyufuzhuang-4",
+ "unicode": "eba2",
+ "unicode_decimal": 60322
+ },
+ {
+ "icon_id": "6358072",
+ "name": "服装02-20",
+ "font_class": "fuzhuang-1",
+ "unicode": "e7b7",
+ "unicode_decimal": 59319
+ },
+ {
+ "icon_id": "1732092",
+ "name": "女鞋",
+ "font_class": "nvxie",
+ "unicode": "e795",
+ "unicode_decimal": 59285
+ },
+ {
+ "icon_id": "5102843",
+ "name": "服饰鞋包",
+ "font_class": "fushixiebao",
+ "unicode": "e796",
+ "unicode_decimal": 59286
+ },
+ {
+ "icon_id": "34102",
+ "name": "鞋包服饰",
+ "font_class": "weibiaoti9",
+ "unicode": "e791",
+ "unicode_decimal": 59281
+ },
+ {
+ "icon_id": "3459804",
+ "name": "服装",
+ "font_class": "huabanfuben",
+ "unicode": "e792",
+ "unicode_decimal": 59282
+ },
+ {
+ "icon_id": "3553421",
+ "name": "服装",
+ "font_class": "fuzhuang",
+ "unicode": "e793",
+ "unicode_decimal": 59283
+ },
+ {
+ "icon_id": "6358077",
+ "name": "服装02-25",
+ "font_class": "fuzhuang-",
+ "unicode": "e7bb",
+ "unicode_decimal": 59323
+ },
+ {
+ "icon_id": "7695321",
+ "name": "服装-电熨斗",
+ "font_class": "fuzhuang-dianyundou",
+ "unicode": "e794",
+ "unicode_decimal": 59284
+ },
+ {
+ "icon_id": "1429018",
+ "name": "buy-02",
+ "font_class": "buy-",
+ "unicode": "e786",
+ "unicode_decimal": 59270
+ },
+ {
+ "icon_id": "3416549",
+ "name": "buying",
+ "font_class": "buying",
+ "unicode": "e788",
+ "unicode_decimal": 59272
+ },
+ {
+ "icon_id": "5074666",
+ "name": "BUYU",
+ "font_class": "BUYU",
+ "unicode": "e78a",
+ "unicode_decimal": 59274
+ },
+ {
+ "icon_id": "5539326",
+ "name": "店铺",
+ "font_class": "dianpu2",
+ "unicode": "e78b",
+ "unicode_decimal": 59275
+ },
+ {
+ "icon_id": "7175063",
+ "name": "buycar",
+ "font_class": "buycar",
+ "unicode": "e919",
+ "unicode_decimal": 59673
+ },
+ {
+ "icon_id": "8695935",
+ "name": "buyu",
+ "font_class": "buyu",
+ "unicode": "e78c",
+ "unicode_decimal": 59276
+ },
+ {
+ "icon_id": "9389729",
+ "name": "buy-1",
+ "font_class": "buy-1",
+ "unicode": "e78d",
+ "unicode_decimal": 59277
+ },
+ {
+ "icon_id": "9389789",
+ "name": "buy-2",
+ "font_class": "buy-2",
+ "unicode": "e78e",
+ "unicode_decimal": 59278
+ },
+ {
+ "icon_id": "9389796",
+ "name": "buy-3",
+ "font_class": "buy-3",
+ "unicode": "e78f",
+ "unicode_decimal": 59279
+ },
+ {
+ "icon_id": "10840509",
+ "name": "buy",
+ "font_class": "buy",
+ "unicode": "e790",
+ "unicode_decimal": 59280
+ },
+ {
+ "icon_id": "7660846",
+ "name": "线下展会",
+ "font_class": "xianxiazhanhui",
+ "unicode": "e787",
+ "unicode_decimal": 59271
+ },
+ {
+ "icon_id": "3729960",
+ "name": "采购询价单",
+ "font_class": "caigouxunjiadan",
+ "unicode": "e77a",
+ "unicode_decimal": 59258
+ },
+ {
+ "icon_id": "5349930",
+ "name": "展会",
+ "font_class": "zhanhui1",
+ "unicode": "e77b",
+ "unicode_decimal": 59259
+ },
+ {
+ "icon_id": "7601057",
+ "name": "采购专场",
+ "font_class": "caigouzhuanchang",
+ "unicode": "e77c",
+ "unicode_decimal": 59260
+ },
+ {
+ "icon_id": "7660840",
+ "name": "发布招募;发布产品",
+ "font_class": "fabuzhaomu",
+ "unicode": "e77d",
+ "unicode_decimal": 59261
+ },
+ {
+ "icon_id": "7660844",
+ "name": "沟通工具",
+ "font_class": "goutonggongju",
+ "unicode": "e77e",
+ "unicode_decimal": 59262
+ },
+ {
+ "icon_id": "7660847",
+ "name": "认证企业",
+ "font_class": "renzhengqiye",
+ "unicode": "e77f",
+ "unicode_decimal": 59263
+ },
+ {
+ "icon_id": "7660848",
+ "name": "采购询价",
+ "font_class": "caigouxunjia",
+ "unicode": "e780",
+ "unicode_decimal": 59264
+ },
+ {
+ "icon_id": "7660849",
+ "name": "移动建站",
+ "font_class": "yidongjianzhan",
+ "unicode": "e781",
+ "unicode_decimal": 59265
+ },
+ {
+ "icon_id": "7660850",
+ "name": "全网推广",
+ "font_class": "quanwangtuiguang",
+ "unicode": "e782",
+ "unicode_decimal": 59266
+ },
+ {
+ "icon_id": "7661409",
+ "name": "采购专场",
+ "font_class": "caigouzhuanchang1",
+ "unicode": "e783",
+ "unicode_decimal": 59267
+ },
+ {
+ "icon_id": "8102779",
+ "name": "发布招募",
+ "font_class": "fabuzhaomu1",
+ "unicode": "e784",
+ "unicode_decimal": 59268
+ },
+ {
+ "icon_id": "11525014",
+ "name": "管理工具",
+ "font_class": "guanligongju",
+ "unicode": "e785",
+ "unicode_decimal": 59269
+ },
+ {
+ "icon_id": "616099",
+ "name": "首页new",
+ "font_class": "shouye5",
+ "unicode": "e778",
+ "unicode_decimal": 59256
+ },
+ {
+ "icon_id": "2066562",
+ "name": "首页",
+ "font_class": "menu-index",
+ "unicode": "e779",
+ "unicode_decimal": 59257
+ },
+ {
+ "icon_id": "12062600",
+ "name": "ia_200000014",
+ "font_class": "ia_4",
+ "unicode": "e776",
+ "unicode_decimal": 59254
+ },
+ {
+ "icon_id": "12062601",
+ "name": "ia_200000015",
+ "font_class": "ia_5",
+ "unicode": "e777",
+ "unicode_decimal": 59255
+ },
+ {
+ "icon_id": "12062590",
+ "name": "ia_200000013",
+ "font_class": "ia_3",
+ "unicode": "e775",
+ "unicode_decimal": 59253
+ },
+ {
+ "icon_id": "12062585",
+ "name": "ia_200000012",
+ "font_class": "ia_2",
+ "unicode": "e774",
+ "unicode_decimal": 59252
+ },
+ {
+ "icon_id": "12062583",
+ "name": "ia_200000011",
+ "font_class": "ia_1",
+ "unicode": "e773",
+ "unicode_decimal": 59251
+ },
+ {
+ "icon_id": "12062578",
+ "name": "ia_200000010",
+ "font_class": "ia_",
+ "unicode": "e772",
+ "unicode_decimal": 59250
+ },
+ {
+ "icon_id": "8021361",
+ "name": "学生",
+ "font_class": "xuesheng1",
+ "unicode": "e7aa",
+ "unicode_decimal": 59306
+ },
+ {
+ "icon_id": "8795855",
+ "name": "学生荣誉",
+ "font_class": "history",
+ "unicode": "e76e",
+ "unicode_decimal": 59246
+ },
+ {
+ "icon_id": "11296549",
+ "name": "学生",
+ "font_class": "xuesheng2",
+ "unicode": "e770",
+ "unicode_decimal": 59248
+ },
+ {
+ "icon_id": "11296665",
+ "name": "学生",
+ "font_class": "xuesheng3",
+ "unicode": "e771",
+ "unicode_decimal": 59249
+ },
+ {
+ "icon_id": "2570103",
+ "name": "电脑",
+ "font_class": "diannao-tianchong",
+ "unicode": "e76a",
+ "unicode_decimal": 59242
+ },
+ {
+ "icon_id": "8148984",
+ "name": "电脑",
+ "font_class": "diannao",
+ "unicode": "e76c",
+ "unicode_decimal": 59244
+ },
+ {
+ "icon_id": "9011713",
+ "name": "电脑",
+ "font_class": "diannao1",
+ "unicode": "e76d",
+ "unicode_decimal": 59245
+ },
+ {
+ "icon_id": "11288864",
+ "name": "编程题库",
+ "font_class": "bianchengtiku",
+ "unicode": "e768",
+ "unicode_decimal": 59240
+ },
+ {
+ "icon_id": "7405942",
+ "name": "对教师",
+ "font_class": "duijiaoshi",
+ "unicode": "e767",
+ "unicode_decimal": 59239
+ },
+ {
+ "icon_id": "4026717",
+ "name": "学士帽",
+ "font_class": "xueshimao2",
+ "unicode": "e765",
+ "unicode_decimal": 59237
+ },
+ {
+ "icon_id": "9365830",
+ "name": "学士",
+ "font_class": "xueshi",
+ "unicode": "e766",
+ "unicode_decimal": 59238
+ },
+ {
+ "icon_id": "3066808",
+ "name": "职业",
+ "font_class": "zhiye",
+ "unicode": "e763",
+ "unicode_decimal": 59235
+ },
+ {
+ "icon_id": "9717219",
+ "name": "培训",
+ "font_class": "peixun1",
+ "unicode": "e764",
+ "unicode_decimal": 59236
+ },
+ {
+ "icon_id": "5794850",
+ "name": "学士帽",
+ "font_class": "xueshimao1",
+ "unicode": "e75d",
+ "unicode_decimal": 59229
+ },
+ {
+ "icon_id": "7620554",
+ "name": "学生",
+ "font_class": "xuesheng",
+ "unicode": "e75e",
+ "unicode_decimal": 59230
+ },
+ {
+ "icon_id": "9041364",
+ "name": "培训",
+ "font_class": "peixun",
+ "unicode": "e760",
+ "unicode_decimal": 59232
+ },
+ {
+ "icon_id": "9903639",
+ "name": "电脑",
+ "font_class": "throwing-screen",
+ "unicode": "e761",
+ "unicode_decimal": 59233
+ },
+ {
+ "icon_id": "11736621",
+ "name": "会计引擎",
+ "font_class": "huijiyinqing",
+ "unicode": "e762",
+ "unicode_decimal": 59234
+ },
+ {
+ "icon_id": "904751",
+ "name": "会计从业",
+ "font_class": "kuaijicongye",
+ "unicode": "e758",
+ "unicode_decimal": 59224
+ },
+ {
+ "icon_id": "2197056",
+ "name": "学士帽",
+ "font_class": "xueshimao",
+ "unicode": "e759",
+ "unicode_decimal": 59225
+ },
+ {
+ "icon_id": "2570660",
+ "name": "编程",
+ "font_class": "biancheng",
+ "unicode": "e75a",
+ "unicode_decimal": 59226
+ },
+ {
+ "icon_id": "5203978",
+ "name": "教师类",
+ "font_class": "jiaoshilei",
+ "unicode": "e75c",
+ "unicode_decimal": 59228
+ },
+ {
+ "icon_id": "10896141",
+ "name": "奖牌",
+ "font_class": "jiangpai1",
+ "unicode": "e757",
+ "unicode_decimal": 59223
+ },
+ {
+ "icon_id": "10076047",
+ "name": "奖牌",
+ "font_class": "weibiaoti-",
+ "unicode": "e756",
+ "unicode_decimal": 59222
+ },
+ {
+ "icon_id": "2276703",
+ "name": "奖牌",
+ "font_class": "jiangpai",
+ "unicode": "e755",
+ "unicode_decimal": 59221
+ },
+ {
+ "icon_id": "1933657",
+ "name": "后台-会员管理",
+ "font_class": "huiyuanguanli",
+ "unicode": "e754",
+ "unicode_decimal": 59220
+ },
+ {
+ "icon_id": "375748",
+ "name": "VIP升级_2",
+ "font_class": "vipshengji2",
+ "unicode": "e74d",
+ "unicode_decimal": 59213
+ },
+ {
+ "icon_id": "918790",
+ "name": "ad",
+ "font_class": "ad",
+ "unicode": "e74e",
+ "unicode_decimal": 59214
+ },
+ {
+ "icon_id": "1083647",
+ "name": "积分",
+ "font_class": "jifen",
+ "unicode": "e750",
+ "unicode_decimal": 59216
+ },
+ {
+ "icon_id": "6006634",
+ "name": "金牌",
+ "font_class": "jinpai",
+ "unicode": "e751",
+ "unicode_decimal": 59217
+ },
+ {
+ "icon_id": "7436630",
+ "name": "金牌",
+ "font_class": "jinpai1",
+ "unicode": "e752",
+ "unicode_decimal": 59218
+ },
+ {
+ "icon_id": "10076783",
+ "name": "金牌",
+ "font_class": "jinpai2",
+ "unicode": "e753",
+ "unicode_decimal": 59219
+ },
+ {
+ "icon_id": "2955808",
+ "name": "礼品",
+ "font_class": "lipin",
+ "unicode": "e74c",
+ "unicode_decimal": 59212
+ },
+ {
+ "icon_id": "11061243",
+ "name": "化工新材料",
+ "font_class": "huagongxincailiao",
+ "unicode": "e749",
+ "unicode_decimal": 59209
+ },
+ {
+ "icon_id": "11526448",
+ "name": "新能源",
+ "font_class": "xinnengyuan1",
+ "unicode": "e74a",
+ "unicode_decimal": 59210
+ },
+ {
+ "icon_id": "11552783",
+ "name": "安防",
+ "font_class": "anfang",
+ "unicode": "e74b",
+ "unicode_decimal": 59211
+ },
+ {
+ "icon_id": "85392",
+ "name": "化工原料",
+ "font_class": "huagongyuanliao",
+ "unicode": "e73e",
+ "unicode_decimal": 59198
+ },
+ {
+ "icon_id": "233639",
+ "name": "咨询",
+ "font_class": "zixun5",
+ "unicode": "e73f",
+ "unicode_decimal": 59199
+ },
+ {
+ "icon_id": "357166",
+ "name": "安全防护~",
+ "font_class": "anquanfanghu",
+ "unicode": "e740",
+ "unicode_decimal": 59200
+ },
+ {
+ "icon_id": "1424316",
+ "name": "咨询区",
+ "font_class": "zixunqu",
+ "unicode": "e741",
+ "unicode_decimal": 59201
+ },
+ {
+ "icon_id": "3872000",
+ "name": "空气开关",
+ "font_class": "kongqikaiguan",
+ "unicode": "e742",
+ "unicode_decimal": 59202
+ },
+ {
+ "icon_id": "5533206",
+ "name": "家庭安防",
+ "font_class": "jiatinganfang-",
+ "unicode": "ea85",
+ "unicode_decimal": 60037
+ },
+ {
+ "icon_id": "5692047",
+ "name": "工业安全",
+ "font_class": "gongyeanquan",
+ "unicode": "e743",
+ "unicode_decimal": 59203
+ },
+ {
+ "icon_id": "6323207",
+ "name": "新能源",
+ "font_class": "xinnengyuan",
+ "unicode": "e745",
+ "unicode_decimal": 59205
+ },
+ {
+ "icon_id": "8279645",
+ "name": "五金",
+ "font_class": "wujin_",
+ "unicode": "e747",
+ "unicode_decimal": 59207
+ },
+ {
+ "icon_id": "9087169",
+ "name": "咨询",
+ "font_class": "zixun6",
+ "unicode": "e748",
+ "unicode_decimal": 59208
+ },
+ {
+ "icon_id": "336640",
+ "name": "购物车",
+ "font_class": "gouwuche01",
+ "unicode": "e72a",
+ "unicode_decimal": 59178
+ },
+ {
+ "icon_id": "814106",
+ "name": "购物车",
+ "font_class": "gouwuche2",
+ "unicode": "e73d",
+ "unicode_decimal": 59197
+ },
+ {
+ "icon_id": "1172731",
+ "name": "用户",
+ "font_class": "user-copy",
+ "unicode": "e72c",
+ "unicode_decimal": 59180
+ },
+ {
+ "icon_id": "1202348",
+ "name": "扫描",
+ "font_class": "saomiao",
+ "unicode": "e9ad",
+ "unicode_decimal": 59821
+ },
+ {
+ "icon_id": "1540916",
+ "name": "购物车",
+ "font_class": "gouwuche4",
+ "unicode": "e72d",
+ "unicode_decimal": 59181
+ },
+ {
+ "icon_id": "1817628",
+ "name": "信息",
+ "font_class": "xinxi",
+ "unicode": "e73c",
+ "unicode_decimal": 59196
+ },
+ {
+ "icon_id": "1906652",
+ "name": "信息",
+ "font_class": "xinxi1",
+ "unicode": "e72e",
+ "unicode_decimal": 59182
+ },
+ {
+ "icon_id": "2028110",
+ "name": "注册",
+ "font_class": "zhuce6",
+ "unicode": "e72f",
+ "unicode_decimal": 59183
+ },
+ {
+ "icon_id": "3251359",
+ "name": "信息",
+ "font_class": "xinxi2",
+ "unicode": "e730",
+ "unicode_decimal": 59184
+ },
+ {
+ "icon_id": "4069631",
+ "name": "信息",
+ "font_class": "ICon-",
+ "unicode": "e731",
+ "unicode_decimal": 59185
+ },
+ {
+ "icon_id": "4770033",
+ "name": "信息",
+ "font_class": "xinxi3",
+ "unicode": "e732",
+ "unicode_decimal": 59186
+ },
+ {
+ "icon_id": "4855211",
+ "name": "用户",
+ "font_class": "yonghu7",
+ "unicode": "e7b0",
+ "unicode_decimal": 59312
+ },
+ {
+ "icon_id": "4954360",
+ "name": "信息",
+ "font_class": "xinxi4",
+ "unicode": "e733",
+ "unicode_decimal": 59187
+ },
+ {
+ "icon_id": "8940180",
+ "name": "信息",
+ "font_class": "xinxi5",
+ "unicode": "e737",
+ "unicode_decimal": 59191
+ },
+ {
+ "icon_id": "9198044",
+ "name": "购物车 (1)",
+ "font_class": "gouwuche5",
+ "unicode": "e738",
+ "unicode_decimal": 59192
+ },
+ {
+ "icon_id": "9590387",
+ "name": "注册 (1)",
+ "font_class": "zhuce7",
+ "unicode": "e739",
+ "unicode_decimal": 59193
+ },
+ {
+ "icon_id": "10908101",
+ "name": "用户",
+ "font_class": "yonghu8",
+ "unicode": "e73a",
+ "unicode_decimal": 59194
+ },
+ {
+ "icon_id": "11070527",
+ "name": "注册",
+ "font_class": "zhuce8",
+ "unicode": "e73b",
+ "unicode_decimal": 59195
+ },
+ {
+ "icon_id": "1770365",
+ "name": "方向",
+ "font_class": "left",
+ "unicode": "e728",
+ "unicode_decimal": 59176
+ },
+ {
+ "icon_id": "4824524",
+ "name": "方向",
+ "font_class": "left-copy-copy",
+ "unicode": "e729",
+ "unicode_decimal": 59177
+ },
+ {
+ "icon_id": "4121468",
+ "name": "猜你喜欢",
+ "font_class": "cainixihuan",
+ "unicode": "e722",
+ "unicode_decimal": 59170
+ },
+ {
+ "icon_id": "7085335",
+ "name": "猜你喜欢",
+ "font_class": "xihuan",
+ "unicode": "e723",
+ "unicode_decimal": 59171
+ },
+ {
+ "icon_id": "7901396",
+ "name": "猜你喜欢",
+ "font_class": "cainixihuan1",
+ "unicode": "e724",
+ "unicode_decimal": 59172
+ },
+ {
+ "icon_id": "8664874",
+ "name": "猜你喜欢",
+ "font_class": "cainixihuan2",
+ "unicode": "e725",
+ "unicode_decimal": 59173
+ },
+ {
+ "icon_id": "11351566",
+ "name": "猜你喜欢",
+ "font_class": "cainixihuan3",
+ "unicode": "e726",
+ "unicode_decimal": 59174
+ },
+ {
+ "icon_id": "1518421",
+ "name": "车辆信息背景",
+ "font_class": "cheliangxinxibeijing",
+ "unicode": "e71d",
+ "unicode_decimal": 59165
+ },
+ {
+ "icon_id": "1577681",
+ "name": "背景楼房",
+ "font_class": "beijingloufang",
+ "unicode": "e71e",
+ "unicode_decimal": 59166
+ },
+ {
+ "icon_id": "3362017",
+ "name": "企业身份-背景",
+ "font_class": "qiyeshenfen-beijing",
+ "unicode": "e736",
+ "unicode_decimal": 59190
+ },
+ {
+ "icon_id": "6275322",
+ "name": "优惠券背景@3x",
+ "font_class": "youhuiquanbeijingx",
+ "unicode": "e80f",
+ "unicode_decimal": 59407
+ },
+ {
+ "icon_id": "6748081",
+ "name": "飞行中的背景",
+ "font_class": "feihangzhongdebeijing",
+ "unicode": "e71f",
+ "unicode_decimal": 59167
+ },
+ {
+ "icon_id": "10964207",
+ "name": "录像卡片背景",
+ "font_class": "luxiangkapianbeijing",
+ "unicode": "e720",
+ "unicode_decimal": 59168
+ },
+ {
+ "icon_id": "11204014",
+ "name": "箭头背景",
+ "font_class": "jiantoubeijing",
+ "unicode": "e721",
+ "unicode_decimal": 59169
+ },
+ {
+ "icon_id": "1987675",
+ "name": "发布",
+ "font_class": "fabu",
+ "unicode": "e71b",
+ "unicode_decimal": 59163
+ },
+ {
+ "icon_id": "2229493",
+ "name": "发布",
+ "font_class": "fabu1",
+ "unicode": "e86e",
+ "unicode_decimal": 59502
+ },
+ {
+ "icon_id": "8735651",
+ "name": "发布",
+ "font_class": "fabu-copy",
+ "unicode": "e71c",
+ "unicode_decimal": 59164
+ },
+ {
+ "icon_id": "1070266",
+ "name": "vip",
+ "font_class": "vip",
+ "unicode": "e744",
+ "unicode_decimal": 59204
+ },
+ {
+ "icon_id": "1632430",
+ "name": "Vip",
+ "font_class": "vip1",
+ "unicode": "e712",
+ "unicode_decimal": 59154
+ },
+ {
+ "icon_id": "1983842",
+ "name": "vip",
+ "font_class": "vip2",
+ "unicode": "e713",
+ "unicode_decimal": 59155
+ },
+ {
+ "icon_id": "2327334",
+ "name": "vip",
+ "font_class": "vip3",
+ "unicode": "e735",
+ "unicode_decimal": 59189
+ },
+ {
+ "icon_id": "5545170",
+ "name": "VIP",
+ "font_class": "VIP",
+ "unicode": "e714",
+ "unicode_decimal": 59156
+ },
+ {
+ "icon_id": "7419372",
+ "name": "VIP",
+ "font_class": "VIP1",
+ "unicode": "e717",
+ "unicode_decimal": 59159
+ },
+ {
+ "icon_id": "8854814",
+ "name": "VIP",
+ "font_class": "VIP2",
+ "unicode": "e718",
+ "unicode_decimal": 59160
+ },
+ {
+ "icon_id": "10085195",
+ "name": "VIP",
+ "font_class": "VIP3",
+ "unicode": "e719",
+ "unicode_decimal": 59161
+ },
+ {
+ "icon_id": "5141195",
+ "name": "闪电",
+ "font_class": "shandian",
+ "unicode": "e70f",
+ "unicode_decimal": 59151
+ },
+ {
+ "icon_id": "7285349",
+ "name": "闪电",
+ "font_class": "shandian1",
+ "unicode": "e711",
+ "unicode_decimal": 59153
+ },
+ {
+ "icon_id": "2511",
+ "name": "购",
+ "font_class": "gou",
+ "unicode": "e70b",
+ "unicode_decimal": 59147
+ },
+ {
+ "icon_id": "3624490",
+ "name": "购",
+ "font_class": "gou1",
+ "unicode": "e70c",
+ "unicode_decimal": 59148
+ },
+ {
+ "icon_id": "3986142",
+ "name": "购",
+ "font_class": "gou2",
+ "unicode": "e70e",
+ "unicode_decimal": 59150
+ },
+ {
+ "icon_id": "1593544",
+ "name": "购物",
+ "font_class": "gouwu",
+ "unicode": "e6fe",
+ "unicode_decimal": 59134
+ },
+ {
+ "icon_id": "1683581",
+ "name": "购物",
+ "font_class": "gouwu1",
+ "unicode": "e6ff",
+ "unicode_decimal": 59135
+ },
+ {
+ "icon_id": "1760710",
+ "name": "店铺",
+ "font_class": "dianpu",
+ "unicode": "e8d2",
+ "unicode_decimal": 59602
+ },
+ {
+ "icon_id": "2315105",
+ "name": "购物",
+ "font_class": "gouwu2",
+ "unicode": "e700",
+ "unicode_decimal": 59136
+ },
+ {
+ "icon_id": "2594664",
+ "name": "购物 (1)",
+ "font_class": "gouwu3",
+ "unicode": "e701",
+ "unicode_decimal": 59137
+ },
+ {
+ "icon_id": "3769144",
+ "name": "购物",
+ "font_class": "gouwu4",
+ "unicode": "e702",
+ "unicode_decimal": 59138
+ },
+ {
+ "icon_id": "4071836",
+ "name": "购物",
+ "font_class": "ziyuan2",
+ "unicode": "e703",
+ "unicode_decimal": 59139
+ },
+ {
+ "icon_id": "5259673",
+ "name": "购物",
+ "font_class": "gouwu5",
+ "unicode": "e705",
+ "unicode_decimal": 59141
+ },
+ {
+ "icon_id": "8149021",
+ "name": "购物",
+ "font_class": "gouwu6",
+ "unicode": "e706",
+ "unicode_decimal": 59142
+ },
+ {
+ "icon_id": "8609724",
+ "name": "购物",
+ "font_class": "gouwu7",
+ "unicode": "e707",
+ "unicode_decimal": 59143
+ },
+ {
+ "icon_id": "8779045",
+ "name": "店铺",
+ "font_class": "dianpu1",
+ "unicode": "e708",
+ "unicode_decimal": 59144
+ },
+ {
+ "icon_id": "8854319",
+ "name": "购物",
+ "font_class": "gouwu8",
+ "unicode": "e709",
+ "unicode_decimal": 59145
+ },
+ {
+ "icon_id": "9970109",
+ "name": "购物",
+ "font_class": "gouwu9",
+ "unicode": "e70a",
+ "unicode_decimal": 59146
+ },
+ {
+ "icon_id": "2237494",
+ "name": "截止时间",
+ "font_class": "jiezhishijian",
+ "unicode": "e6f6",
+ "unicode_decimal": 59126
+ },
+ {
+ "icon_id": "3750470",
+ "name": "地址",
+ "font_class": "dizhi1",
+ "unicode": "e6f9",
+ "unicode_decimal": 59129
+ },
+ {
+ "icon_id": "4920885",
+ "name": "数量",
+ "font_class": "shuliang",
+ "unicode": "e6fa",
+ "unicode_decimal": 59130
+ },
+ {
+ "icon_id": "5943694",
+ "name": "时间 历史记录 计时 钟表 线性",
+ "font_class": "shijian",
+ "unicode": "e6fc",
+ "unicode_decimal": 59132
+ },
+ {
+ "icon_id": "9837159",
+ "name": "数量",
+ "font_class": "shuliang1",
+ "unicode": "e716",
+ "unicode_decimal": 59158
+ },
+ {
+ "icon_id": "10258636",
+ "name": "地址",
+ "font_class": "dizhi2",
+ "unicode": "e6fd",
+ "unicode_decimal": 59133
+ },
+ {
+ "icon_id": "10756670",
+ "name": "inbox",
+ "font_class": "inbox",
+ "unicode": "e6f2",
+ "unicode_decimal": 59122
+ },
+ {
+ "icon_id": "10756671",
+ "name": "apartment",
+ "font_class": "apartment",
+ "unicode": "e6f3",
+ "unicode_decimal": 59123
+ },
+ {
+ "icon_id": "10756672",
+ "name": "user",
+ "font_class": "user",
+ "unicode": "e6f4",
+ "unicode_decimal": 59124
+ },
+ {
+ "icon_id": "10756725",
+ "name": "home",
+ "font_class": "home",
+ "unicode": "e6f5",
+ "unicode_decimal": 59125
+ },
+ {
+ "icon_id": "1135434",
+ "name": "三角形",
+ "font_class": "triangle-copy-copy-copy",
+ "unicode": "e6f1",
+ "unicode_decimal": 59121
+ },
+ {
+ "icon_id": "2542134",
+ "name": "文件",
+ "font_class": "wenjian",
+ "unicode": "e6ee",
+ "unicode_decimal": 59118
+ },
+ {
+ "icon_id": "3248713",
+ "name": "文件",
+ "font_class": "wenjian1",
+ "unicode": "e6ef",
+ "unicode_decimal": 59119
+ },
+ {
+ "icon_id": "9550458",
+ "name": "文件",
+ "font_class": "wenjian2",
+ "unicode": "e6f0",
+ "unicode_decimal": 59120
+ },
+ {
+ "icon_id": "553900",
+ "name": "文档",
+ "font_class": "iconset0118",
+ "unicode": "e6eb",
+ "unicode_decimal": 59115
+ },
+ {
+ "icon_id": "840137",
+ "name": "文档",
+ "font_class": "wendang",
+ "unicode": "e6ec",
+ "unicode_decimal": 59116
+ },
+ {
+ "icon_id": "2019100",
+ "name": "公司认证",
+ "font_class": "gongsirenzheng",
+ "unicode": "e7c4",
+ "unicode_decimal": 59332
+ },
+ {
+ "icon_id": "3135410",
+ "name": "公司",
+ "font_class": "gongsi1",
+ "unicode": "e6e6",
+ "unicode_decimal": 59110
+ },
+ {
+ "icon_id": "3208450",
+ "name": "公司",
+ "font_class": "gongsi2",
+ "unicode": "e6e7",
+ "unicode_decimal": 59111
+ },
+ {
+ "icon_id": "7537878",
+ "name": "ST公司",
+ "font_class": "gongsi3",
+ "unicode": "e6e9",
+ "unicode_decimal": 59113
+ },
+ {
+ "icon_id": "7952857",
+ "name": "公司&面性",
+ "font_class": "gongsi_",
+ "unicode": "e6ea",
+ "unicode_decimal": 59114
+ },
+ {
+ "icon_id": "9626866",
+ "name": "公司",
+ "font_class": "gongsi4",
+ "unicode": "e86d",
+ "unicode_decimal": 59501
+ },
+ {
+ "icon_id": "131446",
+ "name": "齿轮",
+ "font_class": "26",
+ "unicode": "e6df",
+ "unicode_decimal": 59103
+ },
+ {
+ "icon_id": "2061085",
+ "name": "定制加工",
+ "font_class": "dingzhijiagong",
+ "unicode": "e6e0",
+ "unicode_decimal": 59104
+ },
+ {
+ "icon_id": "6306886",
+ "name": "委外加工",
+ "font_class": "weiwaijiagong",
+ "unicode": "e6e1",
+ "unicode_decimal": 59105
+ },
+ {
+ "icon_id": "6550320",
+ "name": "Hot",
+ "font_class": "Hot",
+ "unicode": "e6e2",
+ "unicode_decimal": 59106
+ },
+ {
+ "icon_id": "6945180",
+ "name": "齿轮",
+ "font_class": "chilun",
+ "unicode": "e6e3",
+ "unicode_decimal": 59107
+ },
+ {
+ "icon_id": "7891275",
+ "name": "HOT",
+ "font_class": "HOT-copy-copy-copy",
+ "unicode": "e6e4",
+ "unicode_decimal": 59108
+ },
+ {
+ "icon_id": "8790057",
+ "name": "连锁加工",
+ "font_class": "liansuojiagong",
+ "unicode": "e6e5",
+ "unicode_decimal": 59109
+ },
+ {
+ "icon_id": "222627",
+ "name": "健康_热雾",
+ "font_class": "jiankangrewu",
+ "unicode": "e79e",
+ "unicode_decimal": 59294
+ },
+ {
+ "icon_id": "424757",
+ "name": "健康",
+ "font_class": "74133",
+ "unicode": "e6ce",
+ "unicode_decimal": 59086
+ },
+ {
+ "icon_id": "1716467",
+ "name": "健康指南文字",
+ "font_class": "jkznwenzi",
+ "unicode": "e6cf",
+ "unicode_decimal": 59087
+ },
+ {
+ "icon_id": "2175074",
+ "name": "健康服务",
+ "font_class": "jiankangfuwu",
+ "unicode": "e746",
+ "unicode_decimal": 59206
+ },
+ {
+ "icon_id": "2260067",
+ "name": "健康头条",
+ "font_class": "jiankangtoutiao",
+ "unicode": "e6d0",
+ "unicode_decimal": 59088
+ },
+ {
+ "icon_id": "2685599",
+ "name": "健康营养",
+ "font_class": "icon-test",
+ "unicode": "e6d2",
+ "unicode_decimal": 59090
+ },
+ {
+ "icon_id": "3201924",
+ "name": "健康商城",
+ "font_class": "jiankangshangcheng",
+ "unicode": "e6d3",
+ "unicode_decimal": 59091
+ },
+ {
+ "icon_id": "3201925",
+ "name": "健康商品",
+ "font_class": "jiankangshangpin",
+ "unicode": "e6d4",
+ "unicode_decimal": 59092
+ },
+ {
+ "icon_id": "3582584",
+ "name": "健康",
+ "font_class": "jiankang",
+ "unicode": "e6d5",
+ "unicode_decimal": 59093
+ },
+ {
+ "icon_id": "4580061",
+ "name": "健康",
+ "font_class": "2",
+ "unicode": "e6d6",
+ "unicode_decimal": 59094
+ },
+ {
+ "icon_id": "5545113",
+ "name": "健康度",
+ "font_class": "jiankangdu",
+ "unicode": "e6d7",
+ "unicode_decimal": 59095
+ },
+ {
+ "icon_id": "5613058",
+ "name": "健康云 页面模版",
+ "font_class": "jiankangyunyemianmokuai",
+ "unicode": "e6d8",
+ "unicode_decimal": 59096
+ },
+ {
+ "icon_id": "6032286",
+ "name": "健康评估",
+ "font_class": "jiankangpinggu",
+ "unicode": "e6d9",
+ "unicode_decimal": 59097
+ },
+ {
+ "icon_id": "7079011",
+ "name": "健康",
+ "font_class": "jiankang1",
+ "unicode": "e6da",
+ "unicode_decimal": 59098
+ },
+ {
+ "icon_id": "7422505",
+ "name": "健康资讯",
+ "font_class": "jiankangzixun",
+ "unicode": "e6db",
+ "unicode_decimal": 59099
+ },
+ {
+ "icon_id": "7843196",
+ "name": "健康趋势",
+ "font_class": "jiankangqushi",
+ "unicode": "e6dc",
+ "unicode_decimal": 59100
+ },
+ {
+ "icon_id": "8545418",
+ "name": "健康",
+ "font_class": "jiankang2",
+ "unicode": "e6dd",
+ "unicode_decimal": 59101
+ },
+ {
+ "icon_id": "10041213",
+ "name": "健康讲堂",
+ "font_class": "jiankangjiangtang",
+ "unicode": "e6de",
+ "unicode_decimal": 59102
+ },
+ {
+ "icon_id": "1229067",
+ "name": "母婴",
+ "font_class": "muying",
+ "unicode": "e6c1",
+ "unicode_decimal": 59073
+ },
+ {
+ "icon_id": "1838769",
+ "name": "代理平台",
+ "font_class": "dailipingtai",
+ "unicode": "e6c2",
+ "unicode_decimal": 59074
+ },
+ {
+ "icon_id": "2084306",
+ "name": "代理平台",
+ "font_class": "dailipingtai1",
+ "unicode": "e96c",
+ "unicode_decimal": 59756
+ },
+ {
+ "icon_id": "3040172",
+ "name": "母婴",
+ "font_class": "muying1",
+ "unicode": "e71a",
+ "unicode_decimal": 59162
+ },
+ {
+ "icon_id": "4190034",
+ "name": "加工管理",
+ "font_class": "jiagongguanli",
+ "unicode": "e6c4",
+ "unicode_decimal": 59076
+ },
+ {
+ "icon_id": "6379199",
+ "name": "代理合营",
+ "font_class": "app-",
+ "unicode": "e6c5",
+ "unicode_decimal": 59077
+ },
+ {
+ "icon_id": "6999109",
+ "name": "母婴",
+ "font_class": "muying2",
+ "unicode": "e6c6",
+ "unicode_decimal": 59078
+ },
+ {
+ "icon_id": "8630894",
+ "name": "加工过程",
+ "font_class": "tubiao_huabanfuben",
+ "unicode": "e6c7",
+ "unicode_decimal": 59079
+ },
+ {
+ "icon_id": "8714171",
+ "name": "首页/tab/会展",
+ "font_class": "shouyetabhuizhan",
+ "unicode": "e6c8",
+ "unicode_decimal": 59080
+ },
+ {
+ "icon_id": "8904869",
+ "name": "代理",
+ "font_class": "daili",
+ "unicode": "e6c9",
+ "unicode_decimal": 59081
+ },
+ {
+ "icon_id": "9047423",
+ "name": "代理",
+ "font_class": "daili1",
+ "unicode": "e6cb",
+ "unicode_decimal": 59083
+ },
+ {
+ "icon_id": "9501442",
+ "name": "会展服务",
+ "font_class": "huizhanfuwu",
+ "unicode": "e6cc",
+ "unicode_decimal": 59084
+ },
+ {
+ "icon_id": "9755680",
+ "name": "展会",
+ "font_class": "zhanhui",
+ "unicode": "e6cd",
+ "unicode_decimal": 59085
+ },
+ {
+ "icon_id": "7942699",
+ "name": "放大镜",
+ "font_class": "fangdajing",
+ "unicode": "e6bf",
+ "unicode_decimal": 59071
+ },
+ {
+ "icon_id": "9040074",
+ "name": "电工电料",
+ "font_class": "diangongdianliao",
+ "unicode": "e6c0",
+ "unicode_decimal": 59072
+ },
+ {
+ "icon_id": "5044298",
+ "name": "排插",
+ "font_class": "paicha",
+ "unicode": "e6bd",
+ "unicode_decimal": 59069
+ },
+ {
+ "icon_id": "9138839",
+ "name": "芯片",
+ "font_class": "xinpian",
+ "unicode": "e6be",
+ "unicode_decimal": 59070
+ },
+ {
+ "icon_id": "2136716",
+ "name": "灯管",
+ "font_class": "dengguan",
+ "unicode": "e7ef",
+ "unicode_decimal": 59375
+ },
+ {
+ "icon_id": "1710253",
+ "name": "购物车",
+ "font_class": "gouwuche3",
+ "unicode": "e6bc",
+ "unicode_decimal": 59068
+ },
+ {
+ "icon_id": "7604235",
+ "name": "皇冠",
+ "font_class": "huangguan1",
+ "unicode": "e6bb",
+ "unicode_decimal": 59067
+ },
+ {
+ "icon_id": "10315493",
+ "name": "jxhy",
+ "font_class": "jxhy",
+ "unicode": "e6ba",
+ "unicode_decimal": 59066
+ },
+ {
+ "icon_id": "10314985",
+ "name": "jxhy",
+ "font_class": "logo",
+ "unicode": "e6b9",
+ "unicode_decimal": 59065
+ },
+ {
+ "icon_id": "494313",
+ "name": "灯暖",
+ "font_class": "dengnuan",
+ "unicode": "e6b5",
+ "unicode_decimal": 59061
+ },
+ {
+ "icon_id": "1596234",
+ "name": "灯具",
+ "font_class": "youpinwangtubiao-",
+ "unicode": "e6b6",
+ "unicode_decimal": 59062
+ },
+ {
+ "icon_id": "2545376",
+ "name": "灯具",
+ "font_class": "dengju2",
+ "unicode": "e727",
+ "unicode_decimal": 59175
+ },
+ {
+ "icon_id": "9536660",
+ "name": "射灯",
+ "font_class": "shedeng",
+ "unicode": "e7ea",
+ "unicode_decimal": 59370
+ },
+ {
+ "icon_id": "9764687",
+ "name": "灯具",
+ "font_class": "dengju3",
+ "unicode": "e6b7",
+ "unicode_decimal": 59063
+ },
+ {
+ "icon_id": "4460897",
+ "name": "灯具",
+ "font_class": "dengju",
+ "unicode": "e6b1",
+ "unicode_decimal": 59057
+ },
+ {
+ "icon_id": "5578625",
+ "name": "筒灯",
+ "font_class": "tongdeng",
+ "unicode": "e6b2",
+ "unicode_decimal": 59058
+ },
+ {
+ "icon_id": "6046737",
+ "name": "灯具",
+ "font_class": "dengju1",
+ "unicode": "e6b3",
+ "unicode_decimal": 59059
+ },
+ {
+ "icon_id": "10096459",
+ "name": "筒灯",
+ "font_class": "tongdeng1",
+ "unicode": "e6b4",
+ "unicode_decimal": 59060
+ },
+ {
+ "icon_id": "1087769",
+ "name": "logo",
+ "font_class": "lenovologo2015",
+ "unicode": "e6af",
+ "unicode_decimal": 59055
+ },
+ {
+ "icon_id": "2183047",
+ "name": "谷歌",
+ "font_class": "Google",
+ "unicode": "e6b0",
+ "unicode_decimal": 59056
+ },
+ {
+ "icon_id": "1760663",
+ "name": "新闻",
+ "font_class": "xinwen",
+ "unicode": "e710",
+ "unicode_decimal": 59152
+ },
+ {
+ "icon_id": "2393274",
+ "name": "新闻",
+ "font_class": "xinwen1",
+ "unicode": "e6ad",
+ "unicode_decimal": 59053
+ },
+ {
+ "icon_id": "3169679",
+ "name": "新闻",
+ "font_class": "xinwen2",
+ "unicode": "e6ab",
+ "unicode_decimal": 59051
+ },
+ {
+ "icon_id": "5436179",
+ "name": "新闻",
+ "font_class": "xinwen3",
+ "unicode": "e6ac",
+ "unicode_decimal": 59052
+ },
+ {
+ "icon_id": "9401488",
+ "name": "新闻",
+ "font_class": "xinwen4",
+ "unicode": "e6ae",
+ "unicode_decimal": 59054
+ },
+ {
+ "icon_id": "1634369",
+ "name": "更多",
+ "font_class": "gengduo1",
+ "unicode": "e6aa",
+ "unicode_decimal": 59050
+ },
+ {
+ "icon_id": "7824604",
+ "name": "更多",
+ "font_class": "more-dot",
+ "unicode": "e6a9",
+ "unicode_decimal": 59049
+ },
+ {
+ "icon_id": "2934125",
+ "name": "商品-配置管理",
+ "font_class": "shangpin-peizhiguanli",
+ "unicode": "e6a5",
+ "unicode_decimal": 59045
+ },
+ {
+ "icon_id": "3029073",
+ "name": "商品3d说明",
+ "font_class": "yingxiaohuodong",
+ "unicode": "e6a6",
+ "unicode_decimal": 59046
+ },
+ {
+ "icon_id": "3884316",
+ "name": "商品销售情况",
+ "font_class": "shangpinxiaoshouqingkuang",
+ "unicode": "e6a7",
+ "unicode_decimal": 59047
+ },
+ {
+ "icon_id": "8431753",
+ "name": "商品价格管理",
+ "font_class": "shangpinjiageguanli",
+ "unicode": "e6a8",
+ "unicode_decimal": 59048
+ },
+ {
+ "icon_id": "1643028",
+ "name": "公告",
+ "font_class": "gonggao",
+ "unicode": "e69d",
+ "unicode_decimal": 59037
+ },
+ {
+ "icon_id": "1738074",
+ "name": "公告",
+ "font_class": "gonggao1",
+ "unicode": "e6a0",
+ "unicode_decimal": 59040
+ },
+ {
+ "icon_id": "2492088",
+ "name": "公告",
+ "font_class": "gonggao2",
+ "unicode": "e76b",
+ "unicode_decimal": 59243
+ },
+ {
+ "icon_id": "4505037",
+ "name": "公告",
+ "font_class": "gonggao3",
+ "unicode": "e6d1",
+ "unicode_decimal": 59089
+ },
+ {
+ "icon_id": "6706948",
+ "name": "公告 (1)",
+ "font_class": "gonggao4",
+ "unicode": "e6a1",
+ "unicode_decimal": 59041
+ },
+ {
+ "icon_id": "6898446",
+ "name": "公告",
+ "font_class": "weibiaoti-_",
+ "unicode": "e6a3",
+ "unicode_decimal": 59043
+ },
+ {
+ "icon_id": "7669724",
+ "name": "公告",
+ "font_class": "gonggao5",
+ "unicode": "e6a4",
+ "unicode_decimal": 59044
+ },
+ {
+ "icon_id": "55245",
+ "name": "分类",
+ "font_class": "fenlei4",
+ "unicode": "e6c3",
+ "unicode_decimal": 59075
+ },
+ {
+ "icon_id": "407493",
+ "name": "bottom_首页",
+ "font_class": "shouye",
+ "unicode": "e68b",
+ "unicode_decimal": 59019
+ },
+ {
+ "icon_id": "543812",
+ "name": "首页",
+ "font_class": "iconfontshouye",
+ "unicode": "e68c",
+ "unicode_decimal": 59020
+ },
+ {
+ "icon_id": "607940",
+ "name": "qq",
+ "font_class": "qq1",
+ "unicode": "e68e",
+ "unicode_decimal": 59022
+ },
+ {
+ "icon_id": "646626",
+ "name": "DPI-首页",
+ "font_class": "shouye1",
+ "unicode": "e6ca",
+ "unicode_decimal": 59082
+ },
+ {
+ "icon_id": "753570",
+ "name": "QQ",
+ "font_class": "qq2",
+ "unicode": "e68f",
+ "unicode_decimal": 59023
+ },
+ {
+ "icon_id": "952179",
+ "name": "分类",
+ "font_class": "3fenlei",
+ "unicode": "e690",
+ "unicode_decimal": 59024
+ },
+ {
+ "icon_id": "1011861",
+ "name": "分类",
+ "font_class": "fenlei5",
+ "unicode": "e691",
+ "unicode_decimal": 59025
+ },
+ {
+ "icon_id": "1208993",
+ "name": "类目 品类 分类 类别",
+ "font_class": "leimupinleifenleileibie",
+ "unicode": "e72b",
+ "unicode_decimal": 59179
+ },
+ {
+ "icon_id": "1381804",
+ "name": "分类",
+ "font_class": "renrenyaotubiao",
+ "unicode": "e692",
+ "unicode_decimal": 59026
+ },
+ {
+ "icon_id": "1786698",
+ "name": "分类",
+ "font_class": "fenlei6",
+ "unicode": "e693",
+ "unicode_decimal": 59027
+ },
+ {
+ "icon_id": "3294631",
+ "name": "类目 品类 分类 类别-2-02",
+ "font_class": "category",
+ "unicode": "e694",
+ "unicode_decimal": 59028
+ },
+ {
+ "icon_id": "4018307",
+ "name": "QQ (1)",
+ "font_class": "QQ",
+ "unicode": "e695",
+ "unicode_decimal": 59029
+ },
+ {
+ "icon_id": "4563719",
+ "name": "类目 品类 分类 类别",
+ "font_class": "jifenfenlei",
+ "unicode": "e696",
+ "unicode_decimal": 59030
+ },
+ {
+ "icon_id": "5730594",
+ "name": "分类",
+ "font_class": "fenlei7",
+ "unicode": "e697",
+ "unicode_decimal": 59031
+ },
+ {
+ "icon_id": "6155292",
+ "name": "首页",
+ "font_class": "shouye2",
+ "unicode": "e698",
+ "unicode_decimal": 59032
+ },
+ {
+ "icon_id": "7418958",
+ "name": "首页",
+ "font_class": "ziyuan1",
+ "unicode": "e699",
+ "unicode_decimal": 59033
+ },
+ {
+ "icon_id": "7487651",
+ "name": "首页",
+ "font_class": "shouye3",
+ "unicode": "e69a",
+ "unicode_decimal": 59034
+ },
+ {
+ "icon_id": "7748600",
+ "name": "首页",
+ "font_class": "home-active",
+ "unicode": "e69b",
+ "unicode_decimal": 59035
+ },
+ {
+ "icon_id": "7861811",
+ "name": "首页",
+ "font_class": "shouye4",
+ "unicode": "e69c",
+ "unicode_decimal": 59036
+ },
+ {
+ "icon_id": "599681",
+ "name": "bao",
+ "font_class": "bao",
+ "unicode": "e689",
+ "unicode_decimal": 59017
+ },
+ {
+ "icon_id": "1045995",
+ "name": "bao",
+ "font_class": "bao1",
+ "unicode": "e68a",
+ "unicode_decimal": 59018
+ },
+ {
+ "icon_id": "1264874",
+ "name": "支",
+ "font_class": "zhi",
+ "unicode": "e6f7",
+ "unicode_decimal": 59127
+ },
+ {
+ "icon_id": "122504",
+ "name": "更多",
+ "font_class": "more",
+ "unicode": "e685",
+ "unicode_decimal": 59013
+ },
+ {
+ "icon_id": "330048",
+ "name": "更多",
+ "font_class": "bf-more",
+ "unicode": "e687",
+ "unicode_decimal": 59015
+ },
+ {
+ "icon_id": "925362",
+ "name": "更多",
+ "font_class": "gengduo",
+ "unicode": "e688",
+ "unicode_decimal": 59016
+ },
+ {
+ "icon_id": "110032",
+ "name": "右剪头",
+ "font_class": "youjiantou",
+ "unicode": "e67e",
+ "unicode_decimal": 59006
+ },
+ {
+ "icon_id": "434025",
+ "name": "右剪头",
+ "font_class": "youjiantou1",
+ "unicode": "e6fb",
+ "unicode_decimal": 59131
+ },
+ {
+ "icon_id": "745206",
+ "name": "小区到家-轮播右剪头",
+ "font_class": "xiaoqudaojialunbozuojiantou-copy",
+ "unicode": "e680",
+ "unicode_decimal": 59008
+ },
+ {
+ "icon_id": "9066747",
+ "name": "黄底剪头",
+ "font_class": "huangdijiantou",
+ "unicode": "e682",
+ "unicode_decimal": 59010
+ },
+ {
+ "icon_id": "1165710",
+ "name": "用户",
+ "font_class": "yonghu1",
+ "unicode": "e673",
+ "unicode_decimal": 58995
+ },
+ {
+ "icon_id": "1259227",
+ "name": "注册",
+ "font_class": "msnui-reg",
+ "unicode": "e674",
+ "unicode_decimal": 58996
+ },
+ {
+ "icon_id": "2008897",
+ "name": "注册",
+ "font_class": "zhuce",
+ "unicode": "e675",
+ "unicode_decimal": 58997
+ },
+ {
+ "icon_id": "2421698",
+ "name": "注册",
+ "font_class": "zhuce1",
+ "unicode": "e676",
+ "unicode_decimal": 58998
+ },
+ {
+ "icon_id": "3337794",
+ "name": "用户",
+ "font_class": "yonghu2",
+ "unicode": "e677",
+ "unicode_decimal": 58999
+ },
+ {
+ "icon_id": "3392003",
+ "name": "用户",
+ "font_class": "yonghu3",
+ "unicode": "e67f",
+ "unicode_decimal": 59007
+ },
+ {
+ "icon_id": "3685062",
+ "name": "用户",
+ "font_class": "yonghu4",
+ "unicode": "e704",
+ "unicode_decimal": 59140
+ },
+ {
+ "icon_id": "3729427",
+ "name": "注册 (5)",
+ "font_class": "zhuce2",
+ "unicode": "e678",
+ "unicode_decimal": 59000
+ },
+ {
+ "icon_id": "5080031",
+ "name": "用户",
+ "font_class": "yonghu5",
+ "unicode": "e679",
+ "unicode_decimal": 59001
+ },
+ {
+ "icon_id": "5253012",
+ "name": "用户",
+ "font_class": "yonghu6",
+ "unicode": "e67a",
+ "unicode_decimal": 59002
+ },
+ {
+ "icon_id": "6038848",
+ "name": "注册",
+ "font_class": "zhuce3",
+ "unicode": "e67b",
+ "unicode_decimal": 59003
+ },
+ {
+ "icon_id": "7403076",
+ "name": "注册",
+ "font_class": "zhuce4",
+ "unicode": "e67c",
+ "unicode_decimal": 59004
+ },
+ {
+ "icon_id": "7418251",
+ "name": "注册",
+ "font_class": "zhuce5",
+ "unicode": "e7a0",
+ "unicode_decimal": 59296
+ },
+ {
+ "icon_id": "3654070",
+ "name": "采购",
+ "font_class": "caigou",
+ "unicode": "e672",
+ "unicode_decimal": 58994
+ },
+ {
+ "icon_id": "5449512",
+ "name": "采购员",
+ "font_class": "gouwuche1",
+ "unicode": "e7f8",
+ "unicode_decimal": 59384
+ },
+ {
+ "icon_id": "542157",
+ "name": "咨询",
+ "font_class": "zixun",
+ "unicode": "e636",
+ "unicode_decimal": 58934
+ },
+ {
+ "icon_id": "545615",
+ "name": "帮助",
+ "font_class": "6",
+ "unicode": "e648",
+ "unicode_decimal": 58952
+ },
+ {
+ "icon_id": "703655",
+ "name": "咨询",
+ "font_class": "zixun1",
+ "unicode": "e66e",
+ "unicode_decimal": 58990
+ },
+ {
+ "icon_id": "819623",
+ "name": "帮助",
+ "font_class": "bangzhu",
+ "unicode": "e644",
+ "unicode_decimal": 58948
+ },
+ {
+ "icon_id": "819710",
+ "name": "帮助",
+ "font_class": "bangzhu1",
+ "unicode": "e664",
+ "unicode_decimal": 58980
+ },
+ {
+ "icon_id": "930615",
+ "name": "咨询",
+ "font_class": "guanjiaowangtubiao59",
+ "unicode": "e64e",
+ "unicode_decimal": 58958
+ },
+ {
+ "icon_id": "1059054",
+ "name": "咨询",
+ "font_class": "zixun-copy",
+ "unicode": "e638",
+ "unicode_decimal": 58936
+ },
+ {
+ "icon_id": "1265320",
+ "name": "售后",
+ "font_class": "shouhou",
+ "unicode": "e640",
+ "unicode_decimal": 58944
+ },
+ {
+ "icon_id": "1372625",
+ "name": "开店",
+ "font_class": "kaidian",
+ "unicode": "e69f",
+ "unicode_decimal": 59039
+ },
+ {
+ "icon_id": "1672055",
+ "name": "全员开店",
+ "font_class": "quanyuankaidian",
+ "unicode": "e652",
+ "unicode_decimal": 58962
+ },
+ {
+ "icon_id": "1849747",
+ "name": "正品",
+ "font_class": "zhengpin",
+ "unicode": "e641",
+ "unicode_decimal": 58945
+ },
+ {
+ "icon_id": "2188860",
+ "name": "咨询",
+ "font_class": "zixun2",
+ "unicode": "e642",
+ "unicode_decimal": 58946
+ },
+ {
+ "icon_id": "2422058",
+ "name": "帮助",
+ "font_class": "bangzhu2",
+ "unicode": "e645",
+ "unicode_decimal": 58949
+ },
+ {
+ "icon_id": "2429099",
+ "name": "快速开店",
+ "font_class": "kuaisukaidian",
+ "unicode": "e6ed",
+ "unicode_decimal": 59117
+ },
+ {
+ "icon_id": "2588359",
+ "name": "咨询",
+ "font_class": "zixun3",
+ "unicode": "e647",
+ "unicode_decimal": 58951
+ },
+ {
+ "icon_id": "2682251",
+ "name": "免费开店",
+ "font_class": "-mianfeikaidian",
+ "unicode": "e653",
+ "unicode_decimal": 58963
+ },
+ {
+ "icon_id": "2881688",
+ "name": "申请开店",
+ "font_class": "shenqingkaidian",
+ "unicode": "e654",
+ "unicode_decimal": 58964
+ },
+ {
+ "icon_id": "2975406",
+ "name": "开店指南",
+ "font_class": "kaidianzhinan",
+ "unicode": "e65e",
+ "unicode_decimal": 58974
+ },
+ {
+ "icon_id": "3119246",
+ "name": "安全",
+ "font_class": "anquan",
+ "unicode": "e655",
+ "unicode_decimal": 58965
+ },
+ {
+ "icon_id": "3151581",
+ "name": "咨询",
+ "font_class": "CombinedShapeCopy",
+ "unicode": "e657",
+ "unicode_decimal": 58967
+ },
+ {
+ "icon_id": "3307934",
+ "name": "我要开店-边框",
+ "font_class": "woyaokaidian-biankuang",
+ "unicode": "e659",
+ "unicode_decimal": 58969
+ },
+ {
+ "icon_id": "3823044",
+ "name": "售后",
+ "font_class": "shouhou1",
+ "unicode": "e65a",
+ "unicode_decimal": 58970
+ },
+ {
+ "icon_id": "4104794",
+ "name": "快速开店",
+ "font_class": "kuaisukaidian1",
+ "unicode": "e65f",
+ "unicode_decimal": 58975
+ },
+ {
+ "icon_id": "4240575",
+ "name": "开店",
+ "font_class": "kaidian1",
+ "unicode": "e661",
+ "unicode_decimal": 58977
+ },
+ {
+ "icon_id": "4495112",
+ "name": "安全",
+ "font_class": "anquan1",
+ "unicode": "e662",
+ "unicode_decimal": 58978
+ },
+ {
+ "icon_id": "4518344",
+ "name": "正品",
+ "font_class": "zhengpin1",
+ "unicode": "e663",
+ "unicode_decimal": 58979
+ },
+ {
+ "icon_id": "4766028",
+ "name": "咨询",
+ "font_class": "zixun4",
+ "unicode": "e68d",
+ "unicode_decimal": 59021
+ },
+ {
+ "icon_id": "4932980",
+ "name": "报告-时尚品牌开店数量",
+ "font_class": "baogao-shishangpinpaikaidianshuliang",
+ "unicode": "e66b",
+ "unicode_decimal": 58987
+ },
+ {
+ "icon_id": "5141786",
+ "name": "开店",
+ "font_class": "kaidian2",
+ "unicode": "e75b",
+ "unicode_decimal": 59227
+ },
+ {
+ "icon_id": "5168298",
+ "name": "开店宝",
+ "font_class": "kaidian3",
+ "unicode": "e66c",
+ "unicode_decimal": 58988
+ },
+ {
+ "icon_id": "5314544",
+ "name": "售后",
+ "font_class": "shouhou2",
+ "unicode": "e681",
+ "unicode_decimal": 59009
+ },
+ {
+ "icon_id": "5422045",
+ "name": "免费开店",
+ "font_class": "mianfd",
+ "unicode": "e66d",
+ "unicode_decimal": 58989
+ },
+ {
+ "icon_id": "5474035",
+ "name": "优质询盘推荐",
+ "font_class": "youzhixunpantuijian",
+ "unicode": "e789",
+ "unicode_decimal": 59273
+ },
+ {
+ "icon_id": "5476610",
+ "name": "优质询盘推荐_粗",
+ "font_class": "youzhixunpantuijian_cu",
+ "unicode": "e7a9",
+ "unicode_decimal": 59305
+ },
+ {
+ "icon_id": "5628041",
+ "name": "帮助",
+ "font_class": "bangzhu3",
+ "unicode": "e66f",
+ "unicode_decimal": 58991
+ },
+ {
+ "icon_id": "6319000",
+ "name": "开店",
+ "font_class": "kaidian4",
+ "unicode": "e6e8",
+ "unicode_decimal": 59112
+ },
+ {
+ "icon_id": "7774941",
+ "name": "咨询",
+ "font_class": "shitu_ad_consultation",
+ "unicode": "e715",
+ "unicode_decimal": 59157
+ },
+ {
+ "icon_id": "8142739",
+ "name": "正品",
+ "font_class": "zhengpin2",
+ "unicode": "e670",
+ "unicode_decimal": 58992
+ },
+ {
+ "icon_id": "8301238",
+ "name": "安全",
+ "font_class": "anquan2",
+ "unicode": "e671",
+ "unicode_decimal": 58993
+ },
+ {
+ "icon_id": "859519",
+ "name": "发布",
+ "font_class": "fabu2",
+ "unicode": "e635",
+ "unicode_decimal": 58933
+ },
+ {
+ "icon_id": "1305",
+ "name": "购物车满",
+ "font_class": "gouwucheman",
+ "unicode": "e601",
+ "unicode_decimal": 58881
+ },
+ {
+ "icon_id": "1306",
+ "name": "购物车空",
+ "font_class": "gouwuchekong",
+ "unicode": "e602",
+ "unicode_decimal": 58882
+ },
+ {
+ "icon_id": "5030",
+ "name": "购物车满",
+ "font_class": "gouwucheman1",
+ "unicode": "e604",
+ "unicode_decimal": 58884
+ },
+ {
+ "icon_id": "5133",
+ "name": "食品",
+ "font_class": "shipin1",
+ "unicode": "e605",
+ "unicode_decimal": 58885
+ },
+ {
+ "icon_id": "356488",
+ "name": "运输1",
+ "font_class": "yunshu1",
+ "unicode": "e63a",
+ "unicode_decimal": 58938
+ },
+ {
+ "icon_id": "383575",
+ "name": "类目图标-日用百货",
+ "font_class": "leimutubiaoriyongbaihuo",
+ "unicode": "e617",
+ "unicode_decimal": 58903
+ },
+ {
+ "icon_id": "508256",
+ "name": "食品",
+ "font_class": "shipin2",
+ "unicode": "e613",
+ "unicode_decimal": 58899
+ },
+ {
+ "icon_id": "525986",
+ "name": "维修工具",
+ "font_class": "weixiugongju",
+ "unicode": "e60b",
+ "unicode_decimal": 58891
+ },
+ {
+ "icon_id": "637766",
+ "name": "购物车",
+ "font_class": "gouwuche",
+ "unicode": "e614",
+ "unicode_decimal": 58900
+ },
+ {
+ "icon_id": "688252",
+ "name": "基础化工",
+ "font_class": "jichuhuagong",
+ "unicode": "e629",
+ "unicode_decimal": 58921
+ },
+ {
+ "icon_id": "759070",
+ "name": "化工",
+ "font_class": "huagong",
+ "unicode": "e60a",
+ "unicode_decimal": 58890
+ },
+ {
+ "icon_id": "848292",
+ "name": "家居百货",
+ "font_class": "jiajubaihuo",
+ "unicode": "e63e",
+ "unicode_decimal": 58942
+ },
+ {
+ "icon_id": "925319",
+ "name": "衣服",
+ "font_class": "yifu",
+ "unicode": "e60f",
+ "unicode_decimal": 58895
+ },
+ {
+ "icon_id": "1045562",
+ "name": "房屋家居",
+ "font_class": "fangwujiaju",
+ "unicode": "e62d",
+ "unicode_decimal": 58925
+ },
+ {
+ "icon_id": "1068647",
+ "name": "数码",
+ "font_class": "weibiaoti2fuzhi03",
+ "unicode": "e616",
+ "unicode_decimal": 58902
+ },
+ {
+ "icon_id": "1068657",
+ "name": "家居家装",
+ "font_class": "weibiaoti2fuzhi13",
+ "unicode": "e61b",
+ "unicode_decimal": 58907
+ },
+ {
+ "icon_id": "1079503",
+ "name": "数码",
+ "font_class": "shuma",
+ "unicode": "e630",
+ "unicode_decimal": 58928
+ },
+ {
+ "icon_id": "1119904",
+ "name": "日用百货",
+ "font_class": "riyongbaihuo",
+ "unicode": "e619",
+ "unicode_decimal": 58905
+ },
+ {
+ "icon_id": "1229074",
+ "name": "食品",
+ "font_class": "shipin3",
+ "unicode": "e610",
+ "unicode_decimal": 58896
+ },
+ {
+ "icon_id": "1301391",
+ "name": "衣服",
+ "font_class": "yifu1",
+ "unicode": "e666",
+ "unicode_decimal": 58982
+ },
+ {
+ "icon_id": "1422703",
+ "name": "商务合作",
+ "font_class": "shangwuhezuo",
+ "unicode": "e656",
+ "unicode_decimal": 58966
+ },
+ {
+ "icon_id": "1461871",
+ "name": "消防员",
+ "font_class": "jingwuicon_svg-",
+ "unicode": "e631",
+ "unicode_decimal": 58929
+ },
+ {
+ "icon_id": "1799760",
+ "name": "维修",
+ "font_class": "weixiu",
+ "unicode": "e66a",
+ "unicode_decimal": 58986
+ },
+ {
+ "icon_id": "2044448",
+ "name": "运输中",
+ "font_class": "yunshuzhong",
+ "unicode": "e658",
+ "unicode_decimal": 58968
+ },
+ {
+ "icon_id": "2076412",
+ "name": "推荐汽车",
+ "font_class": "tuijianqiche",
+ "unicode": "e8cd",
+ "unicode_decimal": 59597
+ },
+ {
+ "icon_id": "2477516",
+ "name": "消防斧",
+ "font_class": "xiaofangfu",
+ "unicode": "e61a",
+ "unicode_decimal": 58906
+ },
+ {
+ "icon_id": "2477522",
+ "name": "消防水泵",
+ "font_class": "xiaofangshuibeng",
+ "unicode": "e61c",
+ "unicode_decimal": 58908
+ },
+ {
+ "icon_id": "3219693",
+ "name": "化工",
+ "font_class": "huagong1",
+ "unicode": "e61d",
+ "unicode_decimal": 58909
+ },
+ {
+ "icon_id": "4251755",
+ "name": "商务",
+ "font_class": "shangwu",
+ "unicode": "e64b",
+ "unicode_decimal": 58955
+ },
+ {
+ "icon_id": "4272338",
+ "name": "维修",
+ "font_class": "weixiu1",
+ "unicode": "e684",
+ "unicode_decimal": 59012
+ },
+ {
+ "icon_id": "4925640",
+ "name": "食品",
+ "font_class": "food",
+ "unicode": "e64d",
+ "unicode_decimal": 58957
+ },
+ {
+ "icon_id": "4925648",
+ "name": "机械",
+ "font_class": "mechanical",
+ "unicode": "e650",
+ "unicode_decimal": 58960
+ },
+ {
+ "icon_id": "4933384",
+ "name": "商务",
+ "font_class": "shangwu1",
+ "unicode": "e74f",
+ "unicode_decimal": 59215
+ },
+ {
+ "icon_id": "5270574",
+ "name": "已发货-物流详情",
+ "font_class": "yifahuodefuben",
+ "unicode": "e61e",
+ "unicode_decimal": 58910
+ },
+ {
+ "icon_id": "5531035",
+ "name": "水滴",
+ "font_class": "blob",
+ "unicode": "e7cf",
+ "unicode_decimal": 59343
+ },
+ {
+ "icon_id": "5739124",
+ "name": "运输-2",
+ "font_class": "yunshu-",
+ "unicode": "ee71",
+ "unicode_decimal": 61041
+ },
+ {
+ "icon_id": "5739125",
+ "name": "运输-1",
+ "font_class": "yunshu-1",
+ "unicode": "ee72",
+ "unicode_decimal": 61042
+ },
+ {
+ "icon_id": "5739126",
+ "name": "运输-4",
+ "font_class": "yunshu-2",
+ "unicode": "ee73",
+ "unicode_decimal": 61043
+ },
+ {
+ "icon_id": "5739129",
+ "name": "运输-9",
+ "font_class": "yunshu-3",
+ "unicode": "ee74",
+ "unicode_decimal": 61044
+ },
+ {
+ "icon_id": "5739140",
+ "name": "运输-19",
+ "font_class": "yunshu-4",
+ "unicode": "ee75",
+ "unicode_decimal": 61045
+ },
+ {
+ "icon_id": "5739157",
+ "name": "运输-36",
+ "font_class": "yunshu-5",
+ "unicode": "ee7a",
+ "unicode_decimal": 61050
+ },
+ {
+ "icon_id": "5739179",
+ "name": "运输-59",
+ "font_class": "yunshu-6",
+ "unicode": "ee85",
+ "unicode_decimal": 61061
+ },
+ {
+ "icon_id": "6228186",
+ "name": "家居生活",
+ "font_class": "jiajushenghuo",
+ "unicode": "e624",
+ "unicode_decimal": 58916
+ },
+ {
+ "icon_id": "6607923",
+ "name": "汽车",
+ "font_class": "qiche",
+ "unicode": "e620",
+ "unicode_decimal": 58912
+ },
+ {
+ "icon_id": "8027302",
+ "name": "公安消防",
+ "font_class": "gonganxiaofang",
+ "unicode": "e621",
+ "unicode_decimal": 58913
+ },
+ {
+ "icon_id": "8135224",
+ "name": "化工新材料",
+ "font_class": "zu",
+ "unicode": "e622",
+ "unicode_decimal": 58914
+ },
+ {
+ "icon_id": "8135231",
+ "name": "其他材料,化工",
+ "font_class": "zu1",
+ "unicode": "e625",
+ "unicode_decimal": 58917
+ },
+ {
+ "icon_id": "8284761",
+ "name": "高端化工",
+ "font_class": "gaoduanhuagong",
+ "unicode": "e62a",
+ "unicode_decimal": 58922
+ },
+ {
+ "icon_id": "8406405",
+ "name": "流体机械",
+ "font_class": "liutijixie",
+ "unicode": "e64a",
+ "unicode_decimal": 58954
+ },
+ {
+ "icon_id": "8467870",
+ "name": "化工",
+ "font_class": "huagong2",
+ "unicode": "e62b",
+ "unicode_decimal": 58923
+ },
+ {
+ "icon_id": "8922343",
+ "name": "汽车",
+ "font_class": "qiche1",
+ "unicode": "e62c",
+ "unicode_decimal": 58924
+ },
+ {
+ "icon_id": "8954786",
+ "name": "行业icon_食品饮料",
+ "font_class": "kcb_hangyeicon-",
+ "unicode": "e686",
+ "unicode_decimal": 59014
+ },
+ {
+ "icon_id": "9289130",
+ "name": "化工",
+ "font_class": "huagong3",
+ "unicode": "e634",
+ "unicode_decimal": 58932
+ },
+ {
+ "icon_id": "9524664",
+ "name": "食品-面包",
+ "font_class": "shipin-mianbao",
+ "unicode": "e633",
+ "unicode_decimal": 58931
+ },
+ {
+ "icon_id": "677608",
+ "name": "用户",
+ "font_class": "yonghu",
+ "unicode": "e639",
+ "unicode_decimal": 58937
+ },
+ {
+ "icon_id": "6684329",
+ "name": "广告",
+ "font_class": "guanggao",
+ "unicode": "e643",
+ "unicode_decimal": 58947
+ },
+ {
+ "icon_id": "435925",
+ "name": "客服",
+ "font_class": "kefu",
+ "unicode": "e7b5",
+ "unicode_decimal": 59317
+ },
+ {
+ "icon_id": "438635",
+ "name": "4 返回顶部 白",
+ "font_class": "4fanhuidingbubai",
+ "unicode": "e85e",
+ "unicode_decimal": 59486
+ },
+ {
+ "icon_id": "450224",
+ "name": "返回顶部",
+ "font_class": "fanhuidingbu",
+ "unicode": "e637",
+ "unicode_decimal": 58935
+ },
+ {
+ "icon_id": "637514",
+ "name": "返回顶部",
+ "font_class": "fanhuidingbu1",
+ "unicode": "e6a2",
+ "unicode_decimal": 59042
+ },
+ {
+ "icon_id": "300295",
+ "name": "分类",
+ "font_class": "fenlei",
+ "unicode": "e611",
+ "unicode_decimal": 58897
+ },
+ {
+ "icon_id": "974793",
+ "name": "分类",
+ "font_class": "fenlei1",
+ "unicode": "e69e",
+ "unicode_decimal": 59038
+ },
+ {
+ "icon_id": "1001059",
+ "name": "分类",
+ "font_class": "iconfl",
+ "unicode": "e60e",
+ "unicode_decimal": 58894
+ },
+ {
+ "icon_id": "1171205",
+ "name": "分类",
+ "font_class": "fenlei2",
+ "unicode": "e6b8",
+ "unicode_decimal": 59064
+ },
+ {
+ "icon_id": "5392430",
+ "name": "分类",
+ "font_class": "fenlei3",
+ "unicode": "e615",
+ "unicode_decimal": 58901
+ },
+ {
+ "icon_id": "7639355",
+ "name": "实心正方形",
+ "font_class": "shixinzhengfangxing",
+ "unicode": "e608",
+ "unicode_decimal": 58888
+ },
+ {
+ "icon_id": "462188",
+ "name": "今日推荐",
+ "font_class": "jinrituijian",
+ "unicode": "e65b",
+ "unicode_decimal": 58971
+ },
+ {
+ "icon_id": "771077",
+ "name": "最新货源",
+ "font_class": "zuixinhuoyuan",
+ "unicode": "e683",
+ "unicode_decimal": 59011
+ },
+ {
+ "icon_id": "1001176",
+ "name": "相机",
+ "font_class": "iconxj",
+ "unicode": "e62f",
+ "unicode_decimal": 58927
+ },
+ {
+ "icon_id": "1203697",
+ "name": "新闻",
+ "font_class": "quanbuxinwen",
+ "unicode": "e603",
+ "unicode_decimal": 58883
+ },
+ {
+ "icon_id": "2053210",
+ "name": "招商代理",
+ "font_class": "zhaoshangdaili",
+ "unicode": "e6f8",
+ "unicode_decimal": 59128
+ },
+ {
+ "icon_id": "2901897",
+ "name": "视频",
+ "font_class": "shipin",
+ "unicode": "e649",
+ "unicode_decimal": 58953
+ },
+ {
+ "icon_id": "3851371",
+ "name": "商品",
+ "font_class": "shangpin",
+ "unicode": "e665",
+ "unicode_decimal": 58981
+ },
+ {
+ "icon_id": "4409279",
+ "name": "新闻",
+ "font_class": "ziyuan",
+ "unicode": "e626",
+ "unicode_decimal": 58918
+ },
+ {
+ "icon_id": "4954942",
+ "name": "商品",
+ "font_class": "shangpin1",
+ "unicode": "e65c",
+ "unicode_decimal": 58972
+ },
+ {
+ "icon_id": "5391599",
+ "name": "公司地址",
+ "font_class": "gongsidizhi",
+ "unicode": "e70d",
+ "unicode_decimal": 59149
+ },
+ {
+ "icon_id": "5532894",
+ "name": "品牌",
+ "font_class": "pinpai",
+ "unicode": "e62e",
+ "unicode_decimal": 58926
+ },
+ {
+ "icon_id": "5737778",
+ "name": "食物-97",
+ "font_class": "shiwu-",
+ "unicode": "ebed",
+ "unicode_decimal": 60397
+ },
+ {
+ "icon_id": "5878217",
+ "name": "商品",
+ "font_class": "shangpin2",
+ "unicode": "e75f",
+ "unicode_decimal": 59231
+ },
+ {
+ "icon_id": "6442171",
+ "name": "icon_推荐nor",
+ "font_class": "icon_tuijiannor",
+ "unicode": "e606",
+ "unicode_decimal": 58886
+ },
+ {
+ "icon_id": "6604903",
+ "name": "公司名称",
+ "font_class": "gongsimingcheng",
+ "unicode": "e65d",
+ "unicode_decimal": 58973
+ },
+ {
+ "icon_id": "567233",
+ "name": "零食、糖果",
+ "font_class": "lingshitangguo",
+ "unicode": "e63c",
+ "unicode_decimal": 58940
+ },
+ {
+ "icon_id": "554035",
+ "name": "微信",
+ "font_class": "iconset0140",
+ "unicode": "e627",
+ "unicode_decimal": 58919
+ },
+ {
+ "icon_id": "584108",
+ "name": "电话",
+ "font_class": "iconfontdianhua4",
+ "unicode": "e612",
+ "unicode_decimal": 58898
+ },
+ {
+ "icon_id": "1173135",
+ "name": "车巴巴-返回顶部",
+ "font_class": "control101",
+ "unicode": "e660",
+ "unicode_decimal": 58976
+ },
+ {
+ "icon_id": "8798008",
+ "name": "在线咨询",
+ "font_class": "zaixianzixun",
+ "unicode": "e7d4",
+ "unicode_decimal": 59348
+ },
+ {
+ "icon_id": "128369",
+ "name": "欢迎页",
+ "font_class": "huanyingye",
+ "unicode": "e60c",
+ "unicode_decimal": 58892
+ },
+ {
+ "icon_id": "729531",
+ "name": "二维码",
+ "font_class": "erweima2",
+ "unicode": "e651",
+ "unicode_decimal": 58961
+ },
+ {
+ "icon_id": "774455",
+ "name": "电话",
+ "font_class": "dianhua1",
+ "unicode": "e667",
+ "unicode_decimal": 58983
+ },
+ {
+ "icon_id": "827623",
+ "name": "二维码",
+ "font_class": "erweima3",
+ "unicode": "e64c",
+ "unicode_decimal": 58956
+ },
+ {
+ "icon_id": "982376",
+ "name": "电话",
+ "font_class": "dianhua2",
+ "unicode": "e669",
+ "unicode_decimal": 58985
+ },
+ {
+ "icon_id": "6651156",
+ "name": "通用-欢迎你图标",
+ "font_class": "tongyong-huanyingnitubiao",
+ "unicode": "e63b",
+ "unicode_decimal": 58939
+ },
+ {
+ "icon_id": "623182",
+ "name": "ZS二维码",
+ "font_class": "erweima",
+ "unicode": "e628",
+ "unicode_decimal": 58920
+ },
+ {
+ "icon_id": "5112077",
+ "name": "二维码",
+ "font_class": "erweima1",
+ "unicode": "e609",
+ "unicode_decimal": 58889
+ },
+ {
+ "icon_id": "6364167",
+ "name": "二维码",
+ "font_class": "ico",
+ "unicode": "e646",
+ "unicode_decimal": 58950
+ },
+ {
+ "icon_id": "478791",
+ "name": "位置",
+ "font_class": "weizhi",
+ "unicode": "e61f",
+ "unicode_decimal": 58911
+ },
+ {
+ "icon_id": "7404298",
+ "name": "位置",
+ "font_class": "weizhi1",
+ "unicode": "e76f",
+ "unicode_decimal": 59247
+ },
+ {
+ "icon_id": "839492",
+ "name": "产品",
+ "font_class": "chanpin1",
+ "unicode": "e632",
+ "unicode_decimal": 58930
+ },
+ {
+ "icon_id": "1876361",
+ "name": "资质证书",
+ "font_class": "zizhizhengshu",
+ "unicode": "e67d",
+ "unicode_decimal": 59005
+ },
+ {
+ "icon_id": "7404290",
+ "name": "公司",
+ "font_class": "gongsi",
+ "unicode": "e769",
+ "unicode_decimal": 59241
+ },
+ {
+ "icon_id": "7450654",
+ "name": "证书",
+ "font_class": "zhengshu1",
+ "unicode": "e668",
+ "unicode_decimal": 58984
+ },
+ {
+ "icon_id": "617221",
+ "name": "产品",
+ "font_class": "weibiaoti35",
+ "unicode": "e63d",
+ "unicode_decimal": 58941
+ },
+ {
+ "icon_id": "1119366",
+ "name": "证书",
+ "font_class": "zhengshu",
+ "unicode": "e63f",
+ "unicode_decimal": 58943
+ },
+ {
+ "icon_id": "1376046",
+ "name": "公司信息",
+ "font_class": "gongsixinxi",
+ "unicode": "e618",
+ "unicode_decimal": 58904
+ },
+ {
+ "icon_id": "5121534",
+ "name": "产品",
+ "font_class": "chanpin",
+ "unicode": "e64f",
+ "unicode_decimal": 58959
+ },
+ {
+ "icon_id": "436015",
+ "name": "邮件",
+ "font_class": "youjian1",
+ "unicode": "e804",
+ "unicode_decimal": 59396
+ },
+ {
+ "icon_id": "26701",
+ "name": "qq",
+ "font_class": "qq",
+ "unicode": "e600",
+ "unicode_decimal": 58880
+ },
+ {
+ "icon_id": "1546895",
+ "name": "地址",
+ "font_class": "dizhi",
+ "unicode": "e734",
+ "unicode_decimal": 59188
+ },
+ {
+ "icon_id": "1374719",
+ "name": "电话",
+ "font_class": "dianhua5",
+ "unicode": "e607",
+ "unicode_decimal": 58887
+ },
+ {
+ "icon_id": "479389",
+ "name": "电话",
+ "font_class": "dianhua",
+ "unicode": "e60d",
+ "unicode_decimal": 58893
+ },
+ {
+ "icon_id": "774387",
+ "name": "邮件",
+ "font_class": "youjian",
+ "unicode": "e623",
+ "unicode_decimal": 58915
+ }
+ ]
+}
diff --git a/skin/m15dt8blue/fonts/iconfont.svg b/skin/m15dt8blue/fonts/iconfont.svg
new file mode 100644
index 0000000..15988b1
--- /dev/null
+++ b/skin/m15dt8blue/fonts/iconfont.svg
@@ -0,0 +1,1961 @@
+
+
+
+
+
+Created by iconfont
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/skin/m15dt8blue/fonts/iconfont.woff b/skin/m15dt8blue/fonts/iconfont.woff
new file mode 100644
index 0000000..f9507af
Binary files /dev/null and b/skin/m15dt8blue/fonts/iconfont.woff differ
diff --git a/skin/m15dt8blue/group/1.png b/skin/m15dt8blue/group/1.png
new file mode 100644
index 0000000..d5ad087
Binary files /dev/null and b/skin/m15dt8blue/group/1.png differ
diff --git a/skin/m15dt8blue/group/6.png b/skin/m15dt8blue/group/6.png
new file mode 100644
index 0000000..2f1c2ef
Binary files /dev/null and b/skin/m15dt8blue/group/6.png differ
diff --git a/skin/m15dt8blue/group/7.png b/skin/m15dt8blue/group/7.png
new file mode 100644
index 0000000..d5ad087
Binary files /dev/null and b/skin/m15dt8blue/group/7.png differ
diff --git a/skin/m15dt8blue/homepage.css b/skin/m15dt8blue/homepage.css
new file mode 100644
index 0000000..5a3e8d4
--- /dev/null
+++ b/skin/m15dt8blue/homepage.css
@@ -0,0 +1,22 @@
+/*
+ [DESTOON B2B System] Copyright (c) 2008-2020 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+.tool {padding:24px 0;text-align:center;border-top:#F5F5F5 1px solid;}
+.tool i {font-style:normal;font-size:14px;color:#555555;display:inline-block;height:24px;line-height:24px;padding:0 28px;cursor:pointer;}
+.tool b {font-weight:normal;font-size:12px;}
+.tool .like {background:url('image/tool-like.png') no-repeat 0 center;}
+.tool .like:hover {background:url('image/tool-like-on.png') no-repeat 0 center;color:#FF6600;}
+.tool .hate {background:url('image/tool-hate.png') no-repeat 0 center;}
+.tool .hate:hover {background:url('image/tool-hate-on.png') no-repeat 0 center;color:#FF6600;}
+.tool .report {background:url('image/tool-report.png') no-repeat 0 center;}
+.tool .report:hover {background:url('image/tool-report-on.png') no-repeat 0 center;color:#FF6600;}
+.tool .favorite {background:url('image/tool-favorite.png') no-repeat 0 center;}
+.tool .favorite:hover {background:url('image/tool-favorite-on.png') no-repeat 0 center;color:#FF6600;}
+.tool .comment {background:url('image/tool-comment.png') no-repeat 0 center;}
+.tool .comment:hover {background:url('image/tool-comment-on.png') no-repeat 0 center;color:#FF6600;}
+.tool .award {background:url('image/tool-award.png') no-repeat 0 center;}
+.tool .award:hover {background:url('image/tool-award-on.png') no-repeat 0 center;color:#FF6600;}
+.tool .share {background:url('image/tool-share.png') no-repeat 0 center;}
+.tool .share:hover {background:url('image/tool-share-on.png') no-repeat 0 center;color:#FF6600;}
+.ui-toast {height:48px;line-height:48px;overflow:hidden;display:inline-block;padding:0 16px;background:#000000;opacity:0.8;filter:alpha(opacity=80);color:#FFFFFF;border-radius:6px;position:fixed;z-index:99;top:40%;left:48%;font-size:16px;}
\ No newline at end of file
diff --git a/skin/m15dt8blue/icon/ad_ctr.png b/skin/m15dt8blue/icon/ad_ctr.png
new file mode 100644
index 0000000..ccf090e
Binary files /dev/null and b/skin/m15dt8blue/icon/ad_ctr.png differ
diff --git a/skin/m15dt8blue/icon/bottom.png b/skin/m15dt8blue/icon/bottom.png
new file mode 100644
index 0000000..266d2d4
Binary files /dev/null and b/skin/m15dt8blue/icon/bottom.png differ
diff --git a/skin/m15dt8blue/icon/dot.png b/skin/m15dt8blue/icon/dot.png
new file mode 100644
index 0000000..50b31db
Binary files /dev/null and b/skin/m15dt8blue/icon/dot.png differ
diff --git a/skin/m15dt8blue/icon/shili.png b/skin/m15dt8blue/icon/shili.png
new file mode 100644
index 0000000..0d3427a
Binary files /dev/null and b/skin/m15dt8blue/icon/shili.png differ
diff --git a/skin/m15dt8blue/iconfont.css b/skin/m15dt8blue/iconfont.css
new file mode 100644
index 0000000..8e15ba1
--- /dev/null
+++ b/skin/m15dt8blue/iconfont.css
@@ -0,0 +1,2624 @@
+/*--------------------------------------------------
+慧一科技版权 - destoon模板定制仿站找慧一科技
+QQ:3292628658
+官网地址:http://www.destoon.info
+微 信:huiyikeji8
+淘宝店地址:https://destoonhy.taobao.com
+--------------------------------------------------*/
+@font-face {font-family: "iconfont";
+ src: url('fonts/iconfont.eot'); /* IE9 */
+ src: url('fonts/iconfont.eot') format('embedded-opentype'), /* IE6-IE8 */
+ url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'),
+ url('fonts/iconfont.woff') format('woff'),
+ url('fonts/iconfont.ttf') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
+ url('fonts/iconfont.svg') format('svg'); /* iOS 4.1- */
+}
+
+.iconfont {
+ font-family: "iconfont" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.iconlunkuohua22_lianjiefuben:before {
+ content: "\e874";
+}
+
+.icongongyingshang:before {
+ content: "\e873";
+}
+
+.iconbangong:before {
+ content: "\e872";
+}
+
+.iconyouqi1:before {
+ content: "\e871";
+}
+
+.iconluntai:before {
+ content: "\e86f";
+}
+
+.icongengduo2:before {
+ content: "\e86b";
+}
+
+.iconchanpin2:before {
+ content: "\e86c";
+}
+
+.icondiqiu:before {
+ content: "\e870";
+}
+
+.iconzhuanyongche:before {
+ content: "\e86a";
+}
+
+.iconremai:before {
+ content: "\e866";
+}
+
+.iconxiaoxi:before {
+ content: "\e867";
+}
+
+.iconxiaoxi1:before {
+ content: "\e868";
+}
+
+.icondianhua3:before {
+ content: "\e869";
+}
+
+.icondenglu:before {
+ content: "\e864";
+}
+
+.iconxiezi:before {
+ content: "\e865";
+}
+
+.iconguanzhu:before {
+ content: "\e862";
+}
+
+.iconguanzhu1:before {
+ content: "\e863";
+}
+
+.iconmingpian:before {
+ content: "\e861";
+}
+
+.iconlianjie3:before {
+ content: "\e85d";
+}
+
+.iconlianjie4:before {
+ content: "\e860";
+}
+
+.iconshouye-1:before {
+ content: "\e845";
+}
+
+.iconshouye6:before {
+ content: "\e848";
+}
+
+.iconsousuo:before {
+ content: "\e849";
+}
+
+.iconshouye7:before {
+ content: "\e84a";
+}
+
+.iconshouye8:before {
+ content: "\e84b";
+}
+
+.iconshouye9:before {
+ content: "\e84c";
+}
+
+.iconshouye10:before {
+ content: "\e84d";
+}
+
+.iconshouye11:before {
+ content: "\e84e";
+}
+
+.iconshouye12:before {
+ content: "\e84f";
+}
+
+.iconshouye13:before {
+ content: "\e850";
+}
+
+.iconshouyecopy:before {
+ content: "\e851";
+}
+
+.iconshouye14:before {
+ content: "\e852";
+}
+
+.iconicon_huabanfuben:before {
+ content: "\e853";
+}
+
+.iconshouye15:before {
+ content: "\e854";
+}
+
+.iconshouye16:before {
+ content: "\e855";
+}
+
+.iconshouyeweidianji:before {
+ content: "\e856";
+}
+
+.iconshouye17:before {
+ content: "\e857";
+}
+
+.iconshouye18:before {
+ content: "\e858";
+}
+
+.iconshouye19:before {
+ content: "\e859";
+}
+
+.iconshouye20:before {
+ content: "\e85a";
+}
+
+.iconshouye21:before {
+ content: "\e85b";
+}
+
+.iconshouye22:before {
+ content: "\e85c";
+}
+
+.iconhuanbao:before {
+ content: "\e83a";
+}
+
+.iconwujingongju:before {
+ content: "\e83b";
+}
+
+.iconb-ic-4:before {
+ content: "\e83c";
+}
+
+.iconjiqiren2:before {
+ content: "\e83d";
+}
+
+.iconmoju:before {
+ content: "\e896";
+}
+
+.iconhuanbao1:before {
+ content: "\e83e";
+}
+
+.iconyibiao:before {
+ content: "\e83f";
+}
+
+.iconwujingongju1:before {
+ content: "\e840";
+}
+
+.iconxinpin:before {
+ content: "\e85f";
+}
+
+.iconyiqi:before {
+ content: "\e841";
+}
+
+.iconjixie:before {
+ content: "\e842";
+}
+
+.iconanfangjiankong:before {
+ content: "\e843";
+}
+
+.icondiangongdianqi_:before {
+ content: "\e844";
+}
+
+.iconjiaotong:before {
+ content: "\e847";
+}
+
+.iconwushuichulizhanjiance:before {
+ content: "\e833";
+}
+
+.iconwushuibeng:before {
+ content: "\e834";
+}
+
+.iconwushuichulifei:before {
+ content: "\e835";
+}
+
+.iconwushui:before {
+ content: "\e836";
+}
+
+.iconwushuichuli:before {
+ content: "\e838";
+}
+
+.icondt-wushuichulichang:before {
+ content: "\e839";
+}
+
+.iconshouye-zixundianhua:before {
+ content: "\e832";
+}
+
+.iconchakan2:before {
+ content: "\e830";
+}
+
+.iconchakan3:before {
+ content: "\e831";
+}
+
+.iconhome-o:before {
+ content: "\e82c";
+}
+
+.iconsanguohome:before {
+ content: "\e82d";
+}
+
+.iconzhuye:before {
+ content: "\e82e";
+}
+
+.iconhome1:before {
+ content: "\e82f";
+}
+
+.icontuanduixianxing:before {
+ content: "\e829";
+}
+
+.icontuandui1:before {
+ content: "\e82a";
+}
+
+.icontuandui2:before {
+ content: "\e82b";
+}
+
+.icongou3:before {
+ content: "\e822";
+}
+
+.icongou-copy:before {
+ content: "\e823";
+}
+
+.icongou4:before {
+ content: "\e824";
+}
+
+.icongou5:before {
+ content: "\e825";
+}
+
+.icongou6:before {
+ content: "\e826";
+}
+
+.icongou7:before {
+ content: "\e827";
+}
+
+.icongou8:before {
+ content: "\e828";
+}
+
+.iconxunjiaguanli:before {
+ content: "\e821";
+}
+
+.iconcaigou1:before {
+ content: "\e81d";
+}
+
+.iconcaigouzhuguan:before {
+ content: "\e81e";
+}
+
+.iconcaigou2:before {
+ content: "\e81f";
+}
+
+.iconcaigougenzong:before {
+ content: "\e820";
+}
+
+.icondifangtechan:before {
+ content: "\e81c";
+}
+
+.iconjirou1:before {
+ content: "\e81b";
+}
+
+.iconmangguo:before {
+ content: "\e818";
+}
+
+.iconmangguo1:before {
+ content: "\e819";
+}
+
+.iconmangguo2:before {
+ content: "\e81a";
+}
+
+.icon-jirou:before {
+ content: "\e816";
+}
+
+.iconjirou:before {
+ content: "\e817";
+}
+
+.iconshuiguo:before {
+ content: "\e7fc";
+}
+
+.iconjiaqin:before {
+ content: "\e7fd";
+}
+
+.iconshuiguo1:before {
+ content: "\e7fe";
+}
+
+.iconyu:before {
+ content: "\e7ff";
+}
+
+.iconyu1:before {
+ content: "\e800";
+}
+
+.iconshuiguo2:before {
+ content: "\e801";
+}
+
+.iconshuiguo3:before {
+ content: "\e802";
+}
+
+.iconshuiguo4:before {
+ content: "\e846";
+}
+
+.iconzhongzizhuisu:before {
+ content: "\e803";
+}
+
+.iconjiaqin1:before {
+ content: "\e805";
+}
+
+.iconzhongzitouzi:before {
+ content: "\e806";
+}
+
+.iconxia:before {
+ content: "\e807";
+}
+
+.iconshuiguo5:before {
+ content: "\e808";
+}
+
+.iconjiaqin2:before {
+ content: "\e809";
+}
+
+.iconxiaolongxia:before {
+ content: "\e80a";
+}
+
+.iconzhusun:before {
+ content: "\e80b";
+}
+
+.iconguantou:before {
+ content: "\e80c";
+}
+
+.iconshucai-:before {
+ content: "\e80d";
+}
+
+.iconxia1:before {
+ content: "\e80e";
+}
+
+.iconzhongzi:before {
+ content: "\e810";
+}
+
+.iconyu2:before {
+ content: "\e811";
+}
+
+.iconxiaxielei-:before {
+ content: "\e9a3";
+}
+
+.icondiaoyu:before {
+ content: "\e812";
+}
+
+.iconshuiguocopy:before {
+ content: "\e813";
+}
+
+.iconxia2:before {
+ content: "\e814";
+}
+
+.iconji:before {
+ content: "\e837";
+}
+
+.iconyu3:before {
+ content: "\e815";
+}
+
+.iconshouji1:before {
+ content: "\e7f7";
+}
+
+.iconshouji2:before {
+ content: "\e7f9";
+}
+
+.iconshouji3:before {
+ content: "\e7fa";
+}
+
+.iconpingguoxxibiankuang:before {
+ content: "\e7fb";
+}
+
+.iconshouji:before {
+ content: "\e7f6";
+}
+
+.iconkefu1:before {
+ content: "\e7f3";
+}
+
+.iconkefu2:before {
+ content: "\e7f4";
+}
+
+.iconkefu3:before {
+ content: "\e7f5";
+}
+
+.icontuandui:before {
+ content: "\e7e9";
+}
+
+.iconsheji-jinhuang:before {
+ content: "\e7eb";
+}
+
+.iconsheji:before {
+ content: "\e7ec";
+}
+
+.iconguanyuwomen-kaifatuandui:before {
+ content: "\e7ed";
+}
+
+.iconwodetuandui-:before {
+ content: "\e7ee";
+}
+
+.iconzu2:before {
+ content: "\e7f0";
+}
+
+.iconshejiguanli:before {
+ content: "\e7f1";
+}
+
+.iconico1:before {
+ content: "\e7f2";
+}
+
+.icondaimayingyong:before {
+ content: "\e7e2";
+}
+
+.icondiannao2:before {
+ content: "\e7e3";
+}
+
+.iconsimiquan:before {
+ content: "\e7e4";
+}
+
+.icontuanduiguanli:before {
+ content: "\e7e5";
+}
+
+.icondiannao3:before {
+ content: "\e7e6";
+}
+
+.icondaima:before {
+ content: "\e7e7";
+}
+
+.icondaima1:before {
+ content: "\e7e8";
+}
+
+.iconshubiaobianji:before {
+ content: "\e7de";
+}
+
+.iconicon-test1:before {
+ content: "\e7df";
+}
+
+.iconbianma:before {
+ content: "\e7e0";
+}
+
+.iconbianma1:before {
+ content: "\e7e1";
+}
+
+.iconbaidu:before {
+ content: "\e7dc";
+}
+
+.iconyunfuwuqi:before {
+ content: "\e7dd";
+}
+
+.iconQQ1:before {
+ content: "\e7db";
+}
+
+.iconflour:before {
+ content: "\e7c3";
+}
+
+.iconjinkouguanliangyou:before {
+ content: "\e7c6";
+}
+
+.iconshucai:before {
+ content: "\e7c7";
+}
+
+.iconshucai1:before {
+ content: "\e7c8";
+}
+
+.iconchakan1:before {
+ content: "\e7c9";
+}
+
+.iconqiezi:before {
+ content: "\e7ca";
+}
+
+.iconnangua:before {
+ content: "\e7cb";
+}
+
+.iconshipinliangyou:before {
+ content: "\e7cc";
+}
+
+.iconnangua1:before {
+ content: "\e7cd";
+}
+
+.iconqingjiao:before {
+ content: "\e7ce";
+}
+
+.iconweixin:before {
+ content: "\e7d0";
+}
+
+.iconerweima4:before {
+ content: "\e7d1";
+}
+
+.iconcheck-line:before {
+ content: "\e7d2";
+}
+
+.iconweixin1:before {
+ content: "\e7d3";
+}
+
+.iconchakan:before {
+ content: "\e7d5";
+}
+
+.iconshucai2:before {
+ content: "\e7d7";
+}
+
+.iconshucai3:before {
+ content: "\e7d8";
+}
+
+.iconshucai4:before {
+ content: "\e7d9";
+}
+
+.iconchakanyanjingshishifenxi2:before {
+ content: "\e7da";
+}
+
+.iconweibiaoti-2:before {
+ content: "\e7c5";
+}
+
+.iconzhuanfa:before {
+ content: "\e7be";
+}
+
+.iconzhuanfa1:before {
+ content: "\e7bf";
+}
+
+.icondianzan:before {
+ content: "\e7c0";
+}
+
+.iconzhuanfa2:before {
+ content: "\e7c1";
+}
+
+.iconicon_zhuanfa:before {
+ content: "\e7c2";
+}
+
+.iconcaidan:before {
+ content: "\e7bd";
+}
+
+.iconfangdajing1:before {
+ content: "\e7bc";
+}
+
+.icon41:before {
+ content: "\e7ba";
+}
+
+.iconlianjieguanlian:before {
+ content: "\e7ac";
+}
+
+.iconbangongzidonghua:before {
+ content: "\e7ad";
+}
+
+.iconautomation:before {
+ content: "\e7ae";
+}
+
+.iconzidonghuayunwei:before {
+ content: "\e7af";
+}
+
+.iconqingsuanheduizhangzidonghua-:before {
+ content: "\e7b1";
+}
+
+.iconlianjie:before {
+ content: "\e7b2";
+}
+
+.iconlianjie1:before {
+ content: "\e7b3";
+}
+
+.iconlianjie2:before {
+ content: "\e7b4";
+}
+
+.iconzidonghua-wangluo:before {
+ content: "\e7b6";
+}
+
+.iconzidonghua-fuwuqi:before {
+ content: "\e7b8";
+}
+
+.iconziyuan4:before {
+ content: "\e7b9";
+}
+
+.iconshejiruanjian:before {
+ content: "\e7a4";
+}
+
+.iconzidonghua:before {
+ content: "\e7a5";
+}
+
+.iconruanjian:before {
+ content: "\e7a6";
+}
+
+.iconcangku:before {
+ content: "\e7a7";
+}
+
+.iconruanjiandingzhi:before {
+ content: "\e7a8";
+}
+
+.iconcangku1:before {
+ content: "\e7ab";
+}
+
+.iconwuliu:before {
+ content: "\e7a3";
+}
+
+.iconshengjiangjijiance:before {
+ content: "\e7a2";
+}
+
+.iconyunshujixie:before {
+ content: "\e7d6";
+}
+
+.icontuopan121:before {
+ content: "\e79a";
+}
+
+.icon23:before {
+ content: "\e79b";
+}
+
+.iconziyuan3:before {
+ content: "\e79c";
+}
+
+.iconHYwuliushebei:before {
+ content: "\e79d";
+}
+
+.icontuopan1211:before {
+ content: "\e79f";
+}
+
+.iconchache:before {
+ content: "\e7a1";
+}
+
+.iconHYhanjieshebei:before {
+ content: "\e799";
+}
+
+.iconhuangguan:before {
+ content: "\e797";
+}
+
+.iconhuangguan2:before {
+ content: "\e798";
+}
+
+.iconshizhuangyufuzhuang-:before {
+ content: "\eb52";
+}
+
+.iconshizhuangyufuzhuang-1:before {
+ content: "\eb68";
+}
+
+.iconshizhuangyufuzhuang-2:before {
+ content: "\eb77";
+}
+
+.iconshizhuangyufuzhuang-3:before {
+ content: "\eb7e";
+}
+
+.iconshizhuangyufuzhuang-4:before {
+ content: "\eba2";
+}
+
+.iconfuzhuang-1:before {
+ content: "\e7b7";
+}
+
+.iconnvxie:before {
+ content: "\e795";
+}
+
+.iconfushixiebao:before {
+ content: "\e796";
+}
+
+.iconweibiaoti9:before {
+ content: "\e791";
+}
+
+.iconhuabanfuben:before {
+ content: "\e792";
+}
+
+.iconfuzhuang:before {
+ content: "\e793";
+}
+
+.iconfuzhuang-:before {
+ content: "\e7bb";
+}
+
+.iconfuzhuang-dianyundou:before {
+ content: "\e794";
+}
+
+.iconbuy-:before {
+ content: "\e786";
+}
+
+.iconbuying:before {
+ content: "\e788";
+}
+
+.iconBUYU:before {
+ content: "\e78a";
+}
+
+.icondianpu2:before {
+ content: "\e78b";
+}
+
+.iconbuycar:before {
+ content: "\e919";
+}
+
+.iconbuyu:before {
+ content: "\e78c";
+}
+
+.iconbuy-1:before {
+ content: "\e78d";
+}
+
+.iconbuy-2:before {
+ content: "\e78e";
+}
+
+.iconbuy-3:before {
+ content: "\e78f";
+}
+
+.iconbuy:before {
+ content: "\e790";
+}
+
+.iconxianxiazhanhui:before {
+ content: "\e787";
+}
+
+.iconcaigouxunjiadan:before {
+ content: "\e77a";
+}
+
+.iconzhanhui1:before {
+ content: "\e77b";
+}
+
+.iconcaigouzhuanchang:before {
+ content: "\e77c";
+}
+
+.iconfabuzhaomu:before {
+ content: "\e77d";
+}
+
+.icongoutonggongju:before {
+ content: "\e77e";
+}
+
+.iconrenzhengqiye:before {
+ content: "\e77f";
+}
+
+.iconcaigouxunjia:before {
+ content: "\e780";
+}
+
+.iconyidongjianzhan:before {
+ content: "\e781";
+}
+
+.iconquanwangtuiguang:before {
+ content: "\e782";
+}
+
+.iconcaigouzhuanchang1:before {
+ content: "\e783";
+}
+
+.iconfabuzhaomu1:before {
+ content: "\e784";
+}
+
+.iconguanligongju:before {
+ content: "\e785";
+}
+
+.iconshouye5:before {
+ content: "\e778";
+}
+
+.iconmenu-index:before {
+ content: "\e779";
+}
+
+.iconia_4:before {
+ content: "\e776";
+}
+
+.iconia_5:before {
+ content: "\e777";
+}
+
+.iconia_3:before {
+ content: "\e775";
+}
+
+.iconia_2:before {
+ content: "\e774";
+}
+
+.iconia_1:before {
+ content: "\e773";
+}
+
+.iconia_:before {
+ content: "\e772";
+}
+
+.iconxuesheng1:before {
+ content: "\e7aa";
+}
+
+.iconhistory:before {
+ content: "\e76e";
+}
+
+.iconxuesheng2:before {
+ content: "\e770";
+}
+
+.iconxuesheng3:before {
+ content: "\e771";
+}
+
+.icondiannao-tianchong:before {
+ content: "\e76a";
+}
+
+.icondiannao:before {
+ content: "\e76c";
+}
+
+.icondiannao1:before {
+ content: "\e76d";
+}
+
+.iconbianchengtiku:before {
+ content: "\e768";
+}
+
+.iconduijiaoshi:before {
+ content: "\e767";
+}
+
+.iconxueshimao2:before {
+ content: "\e765";
+}
+
+.iconxueshi:before {
+ content: "\e766";
+}
+
+.iconzhiye:before {
+ content: "\e763";
+}
+
+.iconpeixun1:before {
+ content: "\e764";
+}
+
+.iconxueshimao1:before {
+ content: "\e75d";
+}
+
+.iconxuesheng:before {
+ content: "\e75e";
+}
+
+.iconpeixun:before {
+ content: "\e760";
+}
+
+.iconthrowing-screen:before {
+ content: "\e761";
+}
+
+.iconhuijiyinqing:before {
+ content: "\e762";
+}
+
+.iconkuaijicongye:before {
+ content: "\e758";
+}
+
+.iconxueshimao:before {
+ content: "\e759";
+}
+
+.iconbiancheng:before {
+ content: "\e75a";
+}
+
+.iconjiaoshilei:before {
+ content: "\e75c";
+}
+
+.iconjiangpai1:before {
+ content: "\e757";
+}
+
+.iconweibiaoti-:before {
+ content: "\e756";
+}
+
+.iconjiangpai:before {
+ content: "\e755";
+}
+
+.iconhuiyuanguanli:before {
+ content: "\e754";
+}
+
+.iconvipshengji2:before {
+ content: "\e74d";
+}
+
+.iconad:before {
+ content: "\e74e";
+}
+
+.iconjifen:before {
+ content: "\e750";
+}
+
+.iconjinpai:before {
+ content: "\e751";
+}
+
+.iconjinpai1:before {
+ content: "\e752";
+}
+
+.iconjinpai2:before {
+ content: "\e753";
+}
+
+.iconlipin:before {
+ content: "\e74c";
+}
+
+.iconhuagongxincailiao:before {
+ content: "\e749";
+}
+
+.iconxinnengyuan1:before {
+ content: "\e74a";
+}
+
+.iconanfang:before {
+ content: "\e74b";
+}
+
+.iconhuagongyuanliao:before {
+ content: "\e73e";
+}
+
+.iconzixun5:before {
+ content: "\e73f";
+}
+
+.iconanquanfanghu:before {
+ content: "\e740";
+}
+
+.iconzixunqu:before {
+ content: "\e741";
+}
+
+.iconkongqikaiguan:before {
+ content: "\e742";
+}
+
+.iconjiatinganfang-:before {
+ content: "\ea85";
+}
+
+.icongongyeanquan:before {
+ content: "\e743";
+}
+
+.iconxinnengyuan:before {
+ content: "\e745";
+}
+
+.iconwujin_:before {
+ content: "\e747";
+}
+
+.iconzixun6:before {
+ content: "\e748";
+}
+
+.icongouwuche01:before {
+ content: "\e72a";
+}
+
+.icongouwuche2:before {
+ content: "\e73d";
+}
+
+.iconuser-copy:before {
+ content: "\e72c";
+}
+
+.iconsaomiao:before {
+ content: "\e9ad";
+}
+
+.icongouwuche4:before {
+ content: "\e72d";
+}
+
+.iconxinxi:before {
+ content: "\e73c";
+}
+
+.iconxinxi1:before {
+ content: "\e72e";
+}
+
+.iconzhuce6:before {
+ content: "\e72f";
+}
+
+.iconxinxi2:before {
+ content: "\e730";
+}
+
+.iconICon-:before {
+ content: "\e731";
+}
+
+.iconxinxi3:before {
+ content: "\e732";
+}
+
+.iconyonghu7:before {
+ content: "\e7b0";
+}
+
+.iconxinxi4:before {
+ content: "\e733";
+}
+
+.iconxinxi5:before {
+ content: "\e737";
+}
+
+.icongouwuche5:before {
+ content: "\e738";
+}
+
+.iconzhuce7:before {
+ content: "\e739";
+}
+
+.iconyonghu8:before {
+ content: "\e73a";
+}
+
+.iconzhuce8:before {
+ content: "\e73b";
+}
+
+.iconleft:before {
+ content: "\e728";
+}
+
+.iconleft-copy-copy:before {
+ content: "\e729";
+}
+
+.iconcainixihuan:before {
+ content: "\e722";
+}
+
+.iconxihuan:before {
+ content: "\e723";
+}
+
+.iconcainixihuan1:before {
+ content: "\e724";
+}
+
+.iconcainixihuan2:before {
+ content: "\e725";
+}
+
+.iconcainixihuan3:before {
+ content: "\e726";
+}
+
+.iconcheliangxinxibeijing:before {
+ content: "\e71d";
+}
+
+.iconbeijingloufang:before {
+ content: "\e71e";
+}
+
+.iconqiyeshenfen-beijing:before {
+ content: "\e736";
+}
+
+.iconyouhuiquanbeijingx:before {
+ content: "\e80f";
+}
+
+.iconfeihangzhongdebeijing:before {
+ content: "\e71f";
+}
+
+.iconluxiangkapianbeijing:before {
+ content: "\e720";
+}
+
+.iconjiantoubeijing:before {
+ content: "\e721";
+}
+
+.iconfabu:before {
+ content: "\e71b";
+}
+
+.iconfabu1:before {
+ content: "\e86e";
+}
+
+.iconfabu-copy:before {
+ content: "\e71c";
+}
+
+.iconvip:before {
+ content: "\e744";
+}
+
+.iconvip1:before {
+ content: "\e712";
+}
+
+.iconvip2:before {
+ content: "\e713";
+}
+
+.iconvip3:before {
+ content: "\e735";
+}
+
+.iconVIP:before {
+ content: "\e714";
+}
+
+.iconVIP1:before {
+ content: "\e717";
+}
+
+.iconVIP2:before {
+ content: "\e718";
+}
+
+.iconVIP3:before {
+ content: "\e719";
+}
+
+.iconshandian:before {
+ content: "\e70f";
+}
+
+.iconshandian1:before {
+ content: "\e711";
+}
+
+.icongou:before {
+ content: "\e70b";
+}
+
+.icongou1:before {
+ content: "\e70c";
+}
+
+.icongou2:before {
+ content: "\e70e";
+}
+
+.icongouwu:before {
+ content: "\e6fe";
+}
+
+.icongouwu1:before {
+ content: "\e6ff";
+}
+
+.icondianpu:before {
+ content: "\e8d2";
+}
+
+.icongouwu2:before {
+ content: "\e700";
+}
+
+.icongouwu3:before {
+ content: "\e701";
+}
+
+.icongouwu4:before {
+ content: "\e702";
+}
+
+.iconziyuan2:before {
+ content: "\e703";
+}
+
+.icongouwu5:before {
+ content: "\e705";
+}
+
+.icongouwu6:before {
+ content: "\e706";
+}
+
+.icongouwu7:before {
+ content: "\e707";
+}
+
+.icondianpu1:before {
+ content: "\e708";
+}
+
+.icongouwu8:before {
+ content: "\e709";
+}
+
+.icongouwu9:before {
+ content: "\e70a";
+}
+
+.iconjiezhishijian:before {
+ content: "\e6f6";
+}
+
+.icondizhi1:before {
+ content: "\e6f9";
+}
+
+.iconshuliang:before {
+ content: "\e6fa";
+}
+
+.iconshijian:before {
+ content: "\e6fc";
+}
+
+.iconshuliang1:before {
+ content: "\e716";
+}
+
+.icondizhi2:before {
+ content: "\e6fd";
+}
+
+.iconinbox:before {
+ content: "\e6f2";
+}
+
+.iconapartment:before {
+ content: "\e6f3";
+}
+
+.iconuser:before {
+ content: "\e6f4";
+}
+
+.iconhome:before {
+ content: "\e6f5";
+}
+
+.icontriangle-copy-copy-copy:before {
+ content: "\e6f1";
+}
+
+.iconwenjian:before {
+ content: "\e6ee";
+}
+
+.iconwenjian1:before {
+ content: "\e6ef";
+}
+
+.iconwenjian2:before {
+ content: "\e6f0";
+}
+
+.iconiconset0118:before {
+ content: "\e6eb";
+}
+
+.iconwendang:before {
+ content: "\e6ec";
+}
+
+.icongongsirenzheng:before {
+ content: "\e7c4";
+}
+
+.icongongsi1:before {
+ content: "\e6e6";
+}
+
+.icongongsi2:before {
+ content: "\e6e7";
+}
+
+.icongongsi3:before {
+ content: "\e6e9";
+}
+
+.icongongsi_:before {
+ content: "\e6ea";
+}
+
+.icongongsi4:before {
+ content: "\e86d";
+}
+
+.icon26:before {
+ content: "\e6df";
+}
+
+.icondingzhijiagong:before {
+ content: "\e6e0";
+}
+
+.iconweiwaijiagong:before {
+ content: "\e6e1";
+}
+
+.iconHot:before {
+ content: "\e6e2";
+}
+
+.iconchilun:before {
+ content: "\e6e3";
+}
+
+.iconHOT-copy-copy-copy:before {
+ content: "\e6e4";
+}
+
+.iconliansuojiagong:before {
+ content: "\e6e5";
+}
+
+.iconjiankangrewu:before {
+ content: "\e79e";
+}
+
+.icon74133:before {
+ content: "\e6ce";
+}
+
+.iconjkznwenzi:before {
+ content: "\e6cf";
+}
+
+.iconjiankangfuwu:before {
+ content: "\e746";
+}
+
+.iconjiankangtoutiao:before {
+ content: "\e6d0";
+}
+
+.iconicon-test:before {
+ content: "\e6d2";
+}
+
+.iconjiankangshangcheng:before {
+ content: "\e6d3";
+}
+
+.iconjiankangshangpin:before {
+ content: "\e6d4";
+}
+
+.iconjiankang:before {
+ content: "\e6d5";
+}
+
+.icon2:before {
+ content: "\e6d6";
+}
+
+.iconjiankangdu:before {
+ content: "\e6d7";
+}
+
+.iconjiankangyunyemianmokuai:before {
+ content: "\e6d8";
+}
+
+.iconjiankangpinggu:before {
+ content: "\e6d9";
+}
+
+.iconjiankang1:before {
+ content: "\e6da";
+}
+
+.iconjiankangzixun:before {
+ content: "\e6db";
+}
+
+.iconjiankangqushi:before {
+ content: "\e6dc";
+}
+
+.iconjiankang2:before {
+ content: "\e6dd";
+}
+
+.iconjiankangjiangtang:before {
+ content: "\e6de";
+}
+
+.iconmuying:before {
+ content: "\e6c1";
+}
+
+.icondailipingtai:before {
+ content: "\e6c2";
+}
+
+.icondailipingtai1:before {
+ content: "\e96c";
+}
+
+.iconmuying1:before {
+ content: "\e71a";
+}
+
+.iconjiagongguanli:before {
+ content: "\e6c4";
+}
+
+.iconapp-:before {
+ content: "\e6c5";
+}
+
+.iconmuying2:before {
+ content: "\e6c6";
+}
+
+.icontubiao_huabanfuben:before {
+ content: "\e6c7";
+}
+
+.iconshouyetabhuizhan:before {
+ content: "\e6c8";
+}
+
+.icondaili:before {
+ content: "\e6c9";
+}
+
+.icondaili1:before {
+ content: "\e6cb";
+}
+
+.iconhuizhanfuwu:before {
+ content: "\e6cc";
+}
+
+.iconzhanhui:before {
+ content: "\e6cd";
+}
+
+.iconfangdajing:before {
+ content: "\e6bf";
+}
+
+.icondiangongdianliao:before {
+ content: "\e6c0";
+}
+
+.iconpaicha:before {
+ content: "\e6bd";
+}
+
+.iconxinpian:before {
+ content: "\e6be";
+}
+
+.icondengguan:before {
+ content: "\e7ef";
+}
+
+.icongouwuche3:before {
+ content: "\e6bc";
+}
+
+.iconhuangguan1:before {
+ content: "\e6bb";
+}
+
+.iconjxhy:before {
+ content: "\e6ba";
+}
+
+.iconlogo:before {
+ content: "\e6b9";
+}
+
+.icondengnuan:before {
+ content: "\e6b5";
+}
+
+.iconyoupinwangtubiao-:before {
+ content: "\e6b6";
+}
+
+.icondengju2:before {
+ content: "\e727";
+}
+
+.iconshedeng:before {
+ content: "\e7ea";
+}
+
+.icondengju3:before {
+ content: "\e6b7";
+}
+
+.icondengju:before {
+ content: "\e6b1";
+}
+
+.icontongdeng:before {
+ content: "\e6b2";
+}
+
+.icondengju1:before {
+ content: "\e6b3";
+}
+
+.icontongdeng1:before {
+ content: "\e6b4";
+}
+
+.iconlenovologo2015:before {
+ content: "\e6af";
+}
+
+.iconGoogle:before {
+ content: "\e6b0";
+}
+
+.iconxinwen:before {
+ content: "\e710";
+}
+
+.iconxinwen1:before {
+ content: "\e6ad";
+}
+
+.iconxinwen2:before {
+ content: "\e6ab";
+}
+
+.iconxinwen3:before {
+ content: "\e6ac";
+}
+
+.iconxinwen4:before {
+ content: "\e6ae";
+}
+
+.icongengduo1:before {
+ content: "\e6aa";
+}
+
+.iconmore-dot:before {
+ content: "\e6a9";
+}
+
+.iconshangpin-peizhiguanli:before {
+ content: "\e6a5";
+}
+
+.iconyingxiaohuodong:before {
+ content: "\e6a6";
+}
+
+.iconshangpinxiaoshouqingkuang:before {
+ content: "\e6a7";
+}
+
+.iconshangpinjiageguanli:before {
+ content: "\e6a8";
+}
+
+.icongonggao:before {
+ content: "\e69d";
+}
+
+.icongonggao1:before {
+ content: "\e6a0";
+}
+
+.icongonggao2:before {
+ content: "\e76b";
+}
+
+.icongonggao3:before {
+ content: "\e6d1";
+}
+
+.icongonggao4:before {
+ content: "\e6a1";
+}
+
+.iconweibiaoti-_:before {
+ content: "\e6a3";
+}
+
+.icongonggao5:before {
+ content: "\e6a4";
+}
+
+.iconfenlei4:before {
+ content: "\e6c3";
+}
+
+.iconshouye:before {
+ content: "\e68b";
+}
+
+.iconiconfontshouye:before {
+ content: "\e68c";
+}
+
+.iconqq1:before {
+ content: "\e68e";
+}
+
+.iconshouye1:before {
+ content: "\e6ca";
+}
+
+.iconqq2:before {
+ content: "\e68f";
+}
+
+.icon3fenlei:before {
+ content: "\e690";
+}
+
+.iconfenlei5:before {
+ content: "\e691";
+}
+
+.iconleimupinleifenleileibie:before {
+ content: "\e72b";
+}
+
+.iconrenrenyaotubiao:before {
+ content: "\e692";
+}
+
+.iconfenlei6:before {
+ content: "\e693";
+}
+
+.iconcategory:before {
+ content: "\e694";
+}
+
+.iconQQ:before {
+ content: "\e695";
+}
+
+.iconjifenfenlei:before {
+ content: "\e696";
+}
+
+.iconfenlei7:before {
+ content: "\e697";
+}
+
+.iconshouye2:before {
+ content: "\e698";
+}
+
+.iconziyuan1:before {
+ content: "\e699";
+}
+
+.iconshouye3:before {
+ content: "\e69a";
+}
+
+.iconhome-active:before {
+ content: "\e69b";
+}
+
+.iconshouye4:before {
+ content: "\e69c";
+}
+
+.iconbao:before {
+ content: "\e689";
+}
+
+.iconbao1:before {
+ content: "\e68a";
+}
+
+.iconzhi:before {
+ content: "\e6f7";
+}
+
+.iconmore:before {
+ content: "\e685";
+}
+
+.iconbf-more:before {
+ content: "\e687";
+}
+
+.icongengduo:before {
+ content: "\e688";
+}
+
+.iconyoujiantou:before {
+ content: "\e67e";
+}
+
+.iconyoujiantou1:before {
+ content: "\e6fb";
+}
+
+.iconxiaoqudaojialunbozuojiantou-copy:before {
+ content: "\e680";
+}
+
+.iconhuangdijiantou:before {
+ content: "\e682";
+}
+
+.iconyonghu1:before {
+ content: "\e673";
+}
+
+.iconmsnui-reg:before {
+ content: "\e674";
+}
+
+.iconzhuce:before {
+ content: "\e675";
+}
+
+.iconzhuce1:before {
+ content: "\e676";
+}
+
+.iconyonghu2:before {
+ content: "\e677";
+}
+
+.iconyonghu3:before {
+ content: "\e67f";
+}
+
+.iconyonghu4:before {
+ content: "\e704";
+}
+
+.iconzhuce2:before {
+ content: "\e678";
+}
+
+.iconyonghu5:before {
+ content: "\e679";
+}
+
+.iconyonghu6:before {
+ content: "\e67a";
+}
+
+.iconzhuce3:before {
+ content: "\e67b";
+}
+
+.iconzhuce4:before {
+ content: "\e67c";
+}
+
+.iconzhuce5:before {
+ content: "\e7a0";
+}
+
+.iconcaigou:before {
+ content: "\e672";
+}
+
+.icongouwuche1:before {
+ content: "\e7f8";
+}
+
+.iconzixun:before {
+ content: "\e636";
+}
+
+.icon6:before {
+ content: "\e648";
+}
+
+.iconzixun1:before {
+ content: "\e66e";
+}
+
+.iconbangzhu:before {
+ content: "\e644";
+}
+
+.iconbangzhu1:before {
+ content: "\e664";
+}
+
+.iconguanjiaowangtubiao59:before {
+ content: "\e64e";
+}
+
+.iconzixun-copy:before {
+ content: "\e638";
+}
+
+.iconshouhou:before {
+ content: "\e640";
+}
+
+.iconkaidian:before {
+ content: "\e69f";
+}
+
+.iconquanyuankaidian:before {
+ content: "\e652";
+}
+
+.iconzhengpin:before {
+ content: "\e641";
+}
+
+.iconzixun2:before {
+ content: "\e642";
+}
+
+.iconbangzhu2:before {
+ content: "\e645";
+}
+
+.iconkuaisukaidian:before {
+ content: "\e6ed";
+}
+
+.iconzixun3:before {
+ content: "\e647";
+}
+
+.icon-mianfeikaidian:before {
+ content: "\e653";
+}
+
+.iconshenqingkaidian:before {
+ content: "\e654";
+}
+
+.iconkaidianzhinan:before {
+ content: "\e65e";
+}
+
+.iconanquan:before {
+ content: "\e655";
+}
+
+.iconCombinedShapeCopy:before {
+ content: "\e657";
+}
+
+.iconwoyaokaidian-biankuang:before {
+ content: "\e659";
+}
+
+.iconshouhou1:before {
+ content: "\e65a";
+}
+
+.iconkuaisukaidian1:before {
+ content: "\e65f";
+}
+
+.iconkaidian1:before {
+ content: "\e661";
+}
+
+.iconanquan1:before {
+ content: "\e662";
+}
+
+.iconzhengpin1:before {
+ content: "\e663";
+}
+
+.iconzixun4:before {
+ content: "\e68d";
+}
+
+.iconbaogao-shishangpinpaikaidianshuliang:before {
+ content: "\e66b";
+}
+
+.iconkaidian2:before {
+ content: "\e75b";
+}
+
+.iconkaidian3:before {
+ content: "\e66c";
+}
+
+.iconshouhou2:before {
+ content: "\e681";
+}
+
+.iconmianfd:before {
+ content: "\e66d";
+}
+
+.iconyouzhixunpantuijian:before {
+ content: "\e789";
+}
+
+.iconyouzhixunpantuijian_cu:before {
+ content: "\e7a9";
+}
+
+.iconbangzhu3:before {
+ content: "\e66f";
+}
+
+.iconkaidian4:before {
+ content: "\e6e8";
+}
+
+.iconshitu_ad_consultation:before {
+ content: "\e715";
+}
+
+.iconzhengpin2:before {
+ content: "\e670";
+}
+
+.iconanquan2:before {
+ content: "\e671";
+}
+
+.iconfabu2:before {
+ content: "\e635";
+}
+
+.icongouwucheman:before {
+ content: "\e601";
+}
+
+.icongouwuchekong:before {
+ content: "\e602";
+}
+
+.icongouwucheman1:before {
+ content: "\e604";
+}
+
+.iconshipin1:before {
+ content: "\e605";
+}
+
+.iconyunshu1:before {
+ content: "\e63a";
+}
+
+.iconleimutubiaoriyongbaihuo:before {
+ content: "\e617";
+}
+
+.iconshipin2:before {
+ content: "\e613";
+}
+
+.iconweixiugongju:before {
+ content: "\e60b";
+}
+
+.icongouwuche:before {
+ content: "\e614";
+}
+
+.iconjichuhuagong:before {
+ content: "\e629";
+}
+
+.iconhuagong:before {
+ content: "\e60a";
+}
+
+.iconjiajubaihuo:before {
+ content: "\e63e";
+}
+
+.iconyifu:before {
+ content: "\e60f";
+}
+
+.iconfangwujiaju:before {
+ content: "\e62d";
+}
+
+.iconweibiaoti2fuzhi03:before {
+ content: "\e616";
+}
+
+.iconweibiaoti2fuzhi13:before {
+ content: "\e61b";
+}
+
+.iconshuma:before {
+ content: "\e630";
+}
+
+.iconriyongbaihuo:before {
+ content: "\e619";
+}
+
+.iconshipin3:before {
+ content: "\e610";
+}
+
+.iconyifu1:before {
+ content: "\e666";
+}
+
+.iconshangwuhezuo:before {
+ content: "\e656";
+}
+
+.iconjingwuicon_svg-:before {
+ content: "\e631";
+}
+
+.iconweixiu:before {
+ content: "\e66a";
+}
+
+.iconyunshuzhong:before {
+ content: "\e658";
+}
+
+.icontuijianqiche:before {
+ content: "\e8cd";
+}
+
+.iconxiaofangfu:before {
+ content: "\e61a";
+}
+
+.iconxiaofangshuibeng:before {
+ content: "\e61c";
+}
+
+.iconhuagong1:before {
+ content: "\e61d";
+}
+
+.iconshangwu:before {
+ content: "\e64b";
+}
+
+.iconweixiu1:before {
+ content: "\e684";
+}
+
+.iconfood:before {
+ content: "\e64d";
+}
+
+.iconmechanical:before {
+ content: "\e650";
+}
+
+.iconshangwu1:before {
+ content: "\e74f";
+}
+
+.iconyifahuodefuben:before {
+ content: "\e61e";
+}
+
+.iconblob:before {
+ content: "\e7cf";
+}
+
+.iconyunshu-:before {
+ content: "\ee71";
+}
+
+.iconyunshu-1:before {
+ content: "\ee72";
+}
+
+.iconyunshu-2:before {
+ content: "\ee73";
+}
+
+.iconyunshu-3:before {
+ content: "\ee74";
+}
+
+.iconyunshu-4:before {
+ content: "\ee75";
+}
+
+.iconyunshu-5:before {
+ content: "\ee7a";
+}
+
+.iconyunshu-6:before {
+ content: "\ee85";
+}
+
+.iconjiajushenghuo:before {
+ content: "\e624";
+}
+
+.iconqiche:before {
+ content: "\e620";
+}
+
+.icongonganxiaofang:before {
+ content: "\e621";
+}
+
+.iconzu:before {
+ content: "\e622";
+}
+
+.iconzu1:before {
+ content: "\e625";
+}
+
+.icongaoduanhuagong:before {
+ content: "\e62a";
+}
+
+.iconliutijixie:before {
+ content: "\e64a";
+}
+
+.iconhuagong2:before {
+ content: "\e62b";
+}
+
+.iconqiche1:before {
+ content: "\e62c";
+}
+
+.iconkcb_hangyeicon-:before {
+ content: "\e686";
+}
+
+.iconhuagong3:before {
+ content: "\e634";
+}
+
+.iconshipin-mianbao:before {
+ content: "\e633";
+}
+
+.iconyonghu:before {
+ content: "\e639";
+}
+
+.iconguanggao:before {
+ content: "\e643";
+}
+
+.iconkefu:before {
+ content: "\e7b5";
+}
+
+.icon4fanhuidingbubai:before {
+ content: "\e85e";
+}
+
+.iconfanhuidingbu:before {
+ content: "\e637";
+}
+
+.iconfanhuidingbu1:before {
+ content: "\e6a2";
+}
+
+.iconfenlei:before {
+ content: "\e611";
+}
+
+.iconfenlei1:before {
+ content: "\e69e";
+}
+
+.iconiconfl:before {
+ content: "\e60e";
+}
+
+.iconfenlei2:before {
+ content: "\e6b8";
+}
+
+.iconfenlei3:before {
+ content: "\e615";
+}
+
+.iconshixinzhengfangxing:before {
+ content: "\e608";
+}
+
+.iconjinrituijian:before {
+ content: "\e65b";
+}
+
+.iconzuixinhuoyuan:before {
+ content: "\e683";
+}
+
+.iconiconxj:before {
+ content: "\e62f";
+}
+
+.iconquanbuxinwen:before {
+ content: "\e603";
+}
+
+.iconzhaoshangdaili:before {
+ content: "\e6f8";
+}
+
+.iconshipin:before {
+ content: "\e649";
+}
+
+.iconshangpin:before {
+ content: "\e665";
+}
+
+.iconziyuan:before {
+ content: "\e626";
+}
+
+.iconshangpin1:before {
+ content: "\e65c";
+}
+
+.icongongsidizhi:before {
+ content: "\e70d";
+}
+
+.iconpinpai:before {
+ content: "\e62e";
+}
+
+.iconshiwu-:before {
+ content: "\ebed";
+}
+
+.iconshangpin2:before {
+ content: "\e75f";
+}
+
+.iconicon_tuijiannor:before {
+ content: "\e606";
+}
+
+.icongongsimingcheng:before {
+ content: "\e65d";
+}
+
+.iconlingshitangguo:before {
+ content: "\e63c";
+}
+
+.iconiconset0140:before {
+ content: "\e627";
+}
+
+.iconiconfontdianhua4:before {
+ content: "\e612";
+}
+
+.iconcontrol101:before {
+ content: "\e660";
+}
+
+.iconzaixianzixun:before {
+ content: "\e7d4";
+}
+
+.iconhuanyingye:before {
+ content: "\e60c";
+}
+
+.iconerweima2:before {
+ content: "\e651";
+}
+
+.icondianhua1:before {
+ content: "\e667";
+}
+
+.iconerweima3:before {
+ content: "\e64c";
+}
+
+.icondianhua2:before {
+ content: "\e669";
+}
+
+.icontongyong-huanyingnitubiao:before {
+ content: "\e63b";
+}
+
+.iconerweima:before {
+ content: "\e628";
+}
+
+.iconerweima1:before {
+ content: "\e609";
+}
+
+.iconico:before {
+ content: "\e646";
+}
+
+.iconweizhi:before {
+ content: "\e61f";
+}
+
+.iconweizhi1:before {
+ content: "\e76f";
+}
+
+.iconchanpin1:before {
+ content: "\e632";
+}
+
+.iconzizhizhengshu:before {
+ content: "\e67d";
+}
+
+.icongongsi:before {
+ content: "\e769";
+}
+
+.iconzhengshu1:before {
+ content: "\e668";
+}
+
+.iconweibiaoti35:before {
+ content: "\e63d";
+}
+
+.iconzhengshu:before {
+ content: "\e63f";
+}
+
+.icongongsixinxi:before {
+ content: "\e618";
+}
+
+.iconchanpin:before {
+ content: "\e64f";
+}
+
+.iconyoujian1:before {
+ content: "\e804";
+}
+
+.iconqq:before {
+ content: "\e600";
+}
+
+.icondizhi:before {
+ content: "\e734";
+}
+
+.icondianhua5:before {
+ content: "\e607";
+}
+
+.icondianhua:before {
+ content: "\e60d";
+}
+
+.iconyoujian:before {
+ content: "\e623";
+}
+
diff --git a/skin/m15dt8blue/ie6.css b/skin/m15dt8blue/ie6.css
new file mode 100644
index 0000000..af20266
--- /dev/null
+++ b/skin/m15dt8blue/ie6.css
@@ -0,0 +1,6 @@
+/*
+ [DESTOON B2B System] Copyright (c) 2008-2020 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+body {_background-image:url('image/spacer.gif');_background-attachment:fixed;}
+#head {_position:absolute;_top:expression(documentElement.scrollTop);}
\ No newline at end of file
diff --git a/skin/m15dt8blue/image/ab-hide.png b/skin/m15dt8blue/image/ab-hide.png
new file mode 100644
index 0000000..7193715
Binary files /dev/null and b/skin/m15dt8blue/image/ab-hide.png differ
diff --git a/skin/m15dt8blue/image/ab-next-0.png b/skin/m15dt8blue/image/ab-next-0.png
new file mode 100644
index 0000000..2e0cfd2
Binary files /dev/null and b/skin/m15dt8blue/image/ab-next-0.png differ
diff --git a/skin/m15dt8blue/image/ab-play-on.png b/skin/m15dt8blue/image/ab-play-on.png
new file mode 100644
index 0000000..fd609a7
Binary files /dev/null and b/skin/m15dt8blue/image/ab-play-on.png differ
diff --git a/skin/m15dt8blue/image/ab-prev-0.png b/skin/m15dt8blue/image/ab-prev-0.png
new file mode 100644
index 0000000..8ebd02e
Binary files /dev/null and b/skin/m15dt8blue/image/ab-prev-0.png differ
diff --git a/skin/m15dt8blue/image/ab-prev-1.png b/skin/m15dt8blue/image/ab-prev-1.png
new file mode 100644
index 0000000..17a261b
Binary files /dev/null and b/skin/m15dt8blue/image/ab-prev-1.png differ
diff --git a/skin/m15dt8blue/image/ab-zoom-bg.gif b/skin/m15dt8blue/image/ab-zoom-bg.gif
new file mode 100644
index 0000000..8f153c0
Binary files /dev/null and b/skin/m15dt8blue/image/ab-zoom-bg.gif differ
diff --git a/skin/m15dt8blue/image/ab-zoom.png b/skin/m15dt8blue/image/ab-zoom.png
new file mode 100644
index 0000000..d70dd60
Binary files /dev/null and b/skin/m15dt8blue/image/ab-zoom.png differ
diff --git a/skin/m15dt8blue/image/ad2.jpg b/skin/m15dt8blue/image/ad2.jpg
new file mode 100644
index 0000000..30ffe26
Binary files /dev/null and b/skin/m15dt8blue/image/ad2.jpg differ
diff --git a/skin/m15dt8blue/image/add_job.gif b/skin/m15dt8blue/image/add_job.gif
new file mode 100644
index 0000000..e65b6f0
Binary files /dev/null and b/skin/m15dt8blue/image/add_job.gif differ
diff --git a/skin/m15dt8blue/image/add_resume.gif b/skin/m15dt8blue/image/add_resume.gif
new file mode 100644
index 0000000..168da22
Binary files /dev/null and b/skin/m15dt8blue/image/add_resume.gif differ
diff --git a/skin/m15dt8blue/image/addcart.gif b/skin/m15dt8blue/image/addcart.gif
new file mode 100644
index 0000000..32c1514
Binary files /dev/null and b/skin/m15dt8blue/image/addcart.gif differ
diff --git a/skin/m15dt8blue/image/adword_bg.gif b/skin/m15dt8blue/image/adword_bg.gif
new file mode 100644
index 0000000..8d02329
Binary files /dev/null and b/skin/m15dt8blue/image/adword_bg.gif differ
diff --git a/skin/m15dt8blue/image/arrow.gif b/skin/m15dt8blue/image/arrow.gif
new file mode 100644
index 0000000..21faa0a
Binary files /dev/null and b/skin/m15dt8blue/image/arrow.gif differ
diff --git a/skin/m15dt8blue/image/arrow_down.gif b/skin/m15dt8blue/image/arrow_down.gif
new file mode 100644
index 0000000..7f5a342
Binary files /dev/null and b/skin/m15dt8blue/image/arrow_down.gif differ
diff --git a/skin/m15dt8blue/image/arrow_l.gif b/skin/m15dt8blue/image/arrow_l.gif
new file mode 100644
index 0000000..eb5ef9d
Binary files /dev/null and b/skin/m15dt8blue/image/arrow_l.gif differ
diff --git a/skin/m15dt8blue/image/arrow_up.gif b/skin/m15dt8blue/image/arrow_up.gif
new file mode 100644
index 0000000..3c9e01c
Binary files /dev/null and b/skin/m15dt8blue/image/arrow_up.gif differ
diff --git a/skin/m15dt8blue/image/b10.png b/skin/m15dt8blue/image/b10.png
new file mode 100644
index 0000000..c2da774
Binary files /dev/null and b/skin/m15dt8blue/image/b10.png differ
diff --git a/skin/m15dt8blue/image/back2top.png b/skin/m15dt8blue/image/back2top.png
new file mode 100644
index 0000000..1a6a452
Binary files /dev/null and b/skin/m15dt8blue/image/back2top.png differ
diff --git a/skin/m15dt8blue/image/best_answer.gif b/skin/m15dt8blue/image/best_answer.gif
new file mode 100644
index 0000000..b8dfbd4
Binary files /dev/null and b/skin/m15dt8blue/image/best_answer.gif differ
diff --git a/skin/m15dt8blue/image/best_expert.gif b/skin/m15dt8blue/image/best_expert.gif
new file mode 100644
index 0000000..17b20fc
Binary files /dev/null and b/skin/m15dt8blue/image/best_expert.gif differ
diff --git a/skin/m15dt8blue/image/bg.png b/skin/m15dt8blue/image/bg.png
new file mode 100644
index 0000000..9a83b1e
Binary files /dev/null and b/skin/m15dt8blue/image/bg.png differ
diff --git a/skin/m15dt8blue/image/box_head.gif b/skin/m15dt8blue/image/box_head.gif
new file mode 100644
index 0000000..b4307a6
Binary files /dev/null and b/skin/m15dt8blue/image/box_head.gif differ
diff --git a/skin/m15dt8blue/image/box_head_2.gif b/skin/m15dt8blue/image/box_head_2.gif
new file mode 100644
index 0000000..8bdfe03
Binary files /dev/null and b/skin/m15dt8blue/image/box_head_2.gif differ
diff --git a/skin/m15dt8blue/image/btn_1.gif b/skin/m15dt8blue/image/btn_1.gif
new file mode 100644
index 0000000..5a7509d
Binary files /dev/null and b/skin/m15dt8blue/image/btn_1.gif differ
diff --git a/skin/m15dt8blue/image/btn_2.gif b/skin/m15dt8blue/image/btn_2.gif
new file mode 100644
index 0000000..8b204ee
Binary files /dev/null and b/skin/m15dt8blue/image/btn_2.gif differ
diff --git a/skin/m15dt8blue/image/btn_3.gif b/skin/m15dt8blue/image/btn_3.gif
new file mode 100644
index 0000000..7658513
Binary files /dev/null and b/skin/m15dt8blue/image/btn_3.gif differ
diff --git a/skin/m15dt8blue/image/btn_add_on.gif b/skin/m15dt8blue/image/btn_add_on.gif
new file mode 100644
index 0000000..01e085c
Binary files /dev/null and b/skin/m15dt8blue/image/btn_add_on.gif differ
diff --git a/skin/m15dt8blue/image/btn_advance_search.gif b/skin/m15dt8blue/image/btn_advance_search.gif
new file mode 100644
index 0000000..aaeaca9
Binary files /dev/null and b/skin/m15dt8blue/image/btn_advance_search.gif differ
diff --git a/skin/m15dt8blue/image/btn_answer.gif b/skin/m15dt8blue/image/btn_answer.gif
new file mode 100644
index 0000000..42a754e
Binary files /dev/null and b/skin/m15dt8blue/image/btn_answer.gif differ
diff --git a/skin/m15dt8blue/image/btn_brand.gif b/skin/m15dt8blue/image/btn_brand.gif
new file mode 100644
index 0000000..90533bf
Binary files /dev/null and b/skin/m15dt8blue/image/btn_brand.gif differ
diff --git a/skin/m15dt8blue/image/btn_browse.gif b/skin/m15dt8blue/image/btn_browse.gif
new file mode 100644
index 0000000..d103a62
Binary files /dev/null and b/skin/m15dt8blue/image/btn_browse.gif differ
diff --git a/skin/m15dt8blue/image/btn_buy.gif b/skin/m15dt8blue/image/btn_buy.gif
new file mode 100644
index 0000000..506d2c4
Binary files /dev/null and b/skin/m15dt8blue/image/btn_buy.gif differ
diff --git a/skin/m15dt8blue/image/btn_buynext.gif b/skin/m15dt8blue/image/btn_buynext.gif
new file mode 100644
index 0000000..8039ca3
Binary files /dev/null and b/skin/m15dt8blue/image/btn_buynext.gif differ
diff --git a/skin/m15dt8blue/image/btn_buynow.gif b/skin/m15dt8blue/image/btn_buynow.gif
new file mode 100644
index 0000000..77e6633
Binary files /dev/null and b/skin/m15dt8blue/image/btn_buynow.gif differ
diff --git a/skin/m15dt8blue/image/btn_checkout.gif b/skin/m15dt8blue/image/btn_checkout.gif
new file mode 100644
index 0000000..e84d56b
Binary files /dev/null and b/skin/m15dt8blue/image/btn_checkout.gif differ
diff --git a/skin/m15dt8blue/image/btn_detail.gif b/skin/m15dt8blue/image/btn_detail.gif
new file mode 100644
index 0000000..1462e48
Binary files /dev/null and b/skin/m15dt8blue/image/btn_detail.gif differ
diff --git a/skin/m15dt8blue/image/btn_download.gif b/skin/m15dt8blue/image/btn_download.gif
new file mode 100644
index 0000000..c4630b8
Binary files /dev/null and b/skin/m15dt8blue/image/btn_download.gif differ
diff --git a/skin/m15dt8blue/image/btn_fav.gif b/skin/m15dt8blue/image/btn_fav.gif
new file mode 100644
index 0000000..b2eed1b
Binary files /dev/null and b/skin/m15dt8blue/image/btn_fav.gif differ
diff --git a/skin/m15dt8blue/image/btn_inquiry.gif b/skin/m15dt8blue/image/btn_inquiry.gif
new file mode 100644
index 0000000..63c7f76
Binary files /dev/null and b/skin/m15dt8blue/image/btn_inquiry.gif differ
diff --git a/skin/m15dt8blue/image/btn_message.gif b/skin/m15dt8blue/image/btn_message.gif
new file mode 100644
index 0000000..d2af73e
Binary files /dev/null and b/skin/m15dt8blue/image/btn_message.gif differ
diff --git a/skin/m15dt8blue/image/btn_poll_2.gif b/skin/m15dt8blue/image/btn_poll_2.gif
new file mode 100644
index 0000000..74a706f
Binary files /dev/null and b/skin/m15dt8blue/image/btn_poll_2.gif differ
diff --git a/skin/m15dt8blue/image/btn_price.gif b/skin/m15dt8blue/image/btn_price.gif
new file mode 100644
index 0000000..4dfea74
Binary files /dev/null and b/skin/m15dt8blue/image/btn_price.gif differ
diff --git a/skin/m15dt8blue/image/buy.gif b/skin/m15dt8blue/image/buy.gif
new file mode 100644
index 0000000..bbefdf8
Binary files /dev/null and b/skin/m15dt8blue/image/buy.gif differ
diff --git a/skin/m15dt8blue/image/catalog_close.gif b/skin/m15dt8blue/image/catalog_close.gif
new file mode 100644
index 0000000..326f046
Binary files /dev/null and b/skin/m15dt8blue/image/catalog_close.gif differ
diff --git a/skin/m15dt8blue/image/catalog_li.gif b/skin/m15dt8blue/image/catalog_li.gif
new file mode 100644
index 0000000..2679547
Binary files /dev/null and b/skin/m15dt8blue/image/catalog_li.gif differ
diff --git a/skin/m15dt8blue/image/cate-0.png b/skin/m15dt8blue/image/cate-0.png
new file mode 100644
index 0000000..19407b5
Binary files /dev/null and b/skin/m15dt8blue/image/cate-0.png differ
diff --git a/skin/m15dt8blue/image/cate-1-on.png b/skin/m15dt8blue/image/cate-1-on.png
new file mode 100644
index 0000000..bca37ad
Binary files /dev/null and b/skin/m15dt8blue/image/cate-1-on.png differ
diff --git a/skin/m15dt8blue/image/cate-10-on.png b/skin/m15dt8blue/image/cate-10-on.png
new file mode 100644
index 0000000..f5bd061
Binary files /dev/null and b/skin/m15dt8blue/image/cate-10-on.png differ
diff --git a/skin/m15dt8blue/image/cate-10.png b/skin/m15dt8blue/image/cate-10.png
new file mode 100644
index 0000000..e47250c
Binary files /dev/null and b/skin/m15dt8blue/image/cate-10.png differ
diff --git a/skin/m15dt8blue/image/cate-12-on.png b/skin/m15dt8blue/image/cate-12-on.png
new file mode 100644
index 0000000..3252a56
Binary files /dev/null and b/skin/m15dt8blue/image/cate-12-on.png differ
diff --git a/skin/m15dt8blue/image/cate-12.png b/skin/m15dt8blue/image/cate-12.png
new file mode 100644
index 0000000..0f7d866
Binary files /dev/null and b/skin/m15dt8blue/image/cate-12.png differ
diff --git a/skin/m15dt8blue/image/cate-13.png b/skin/m15dt8blue/image/cate-13.png
new file mode 100644
index 0000000..9f4ef04
Binary files /dev/null and b/skin/m15dt8blue/image/cate-13.png differ
diff --git a/skin/m15dt8blue/image/cate-14.png b/skin/m15dt8blue/image/cate-14.png
new file mode 100644
index 0000000..b767e5a
Binary files /dev/null and b/skin/m15dt8blue/image/cate-14.png differ
diff --git a/skin/m15dt8blue/image/cate-15.png b/skin/m15dt8blue/image/cate-15.png
new file mode 100644
index 0000000..3ce6d8f
Binary files /dev/null and b/skin/m15dt8blue/image/cate-15.png differ
diff --git a/skin/m15dt8blue/image/cate-2.png b/skin/m15dt8blue/image/cate-2.png
new file mode 100644
index 0000000..7e5730a
Binary files /dev/null and b/skin/m15dt8blue/image/cate-2.png differ
diff --git a/skin/m15dt8blue/image/cate-3-on.png b/skin/m15dt8blue/image/cate-3-on.png
new file mode 100644
index 0000000..9658184
Binary files /dev/null and b/skin/m15dt8blue/image/cate-3-on.png differ
diff --git a/skin/m15dt8blue/image/cate-3.png b/skin/m15dt8blue/image/cate-3.png
new file mode 100644
index 0000000..07bf44f
Binary files /dev/null and b/skin/m15dt8blue/image/cate-3.png differ
diff --git a/skin/m15dt8blue/image/cate-4-on.png b/skin/m15dt8blue/image/cate-4-on.png
new file mode 100644
index 0000000..e8f0724
Binary files /dev/null and b/skin/m15dt8blue/image/cate-4-on.png differ
diff --git a/skin/m15dt8blue/image/cate-5.png b/skin/m15dt8blue/image/cate-5.png
new file mode 100644
index 0000000..2884d32
Binary files /dev/null and b/skin/m15dt8blue/image/cate-5.png differ
diff --git a/skin/m15dt8blue/image/cate-6-on.png b/skin/m15dt8blue/image/cate-6-on.png
new file mode 100644
index 0000000..8352973
Binary files /dev/null and b/skin/m15dt8blue/image/cate-6-on.png differ
diff --git a/skin/m15dt8blue/image/cate-7-on.png b/skin/m15dt8blue/image/cate-7-on.png
new file mode 100644
index 0000000..ae7220f
Binary files /dev/null and b/skin/m15dt8blue/image/cate-7-on.png differ
diff --git a/skin/m15dt8blue/image/cate-8-on.png b/skin/m15dt8blue/image/cate-8-on.png
new file mode 100644
index 0000000..c655dc4
Binary files /dev/null and b/skin/m15dt8blue/image/cate-8-on.png differ
diff --git a/skin/m15dt8blue/image/cate-8.png b/skin/m15dt8blue/image/cate-8.png
new file mode 100644
index 0000000..d456fb4
Binary files /dev/null and b/skin/m15dt8blue/image/cate-8.png differ
diff --git a/skin/m15dt8blue/image/cate-9-on.png b/skin/m15dt8blue/image/cate-9-on.png
new file mode 100644
index 0000000..72f8dfc
Binary files /dev/null and b/skin/m15dt8blue/image/cate-9-on.png differ
diff --git a/skin/m15dt8blue/image/cate-9.png b/skin/m15dt8blue/image/cate-9.png
new file mode 100644
index 0000000..7b86bd9
Binary files /dev/null and b/skin/m15dt8blue/image/cate-9.png differ
diff --git a/skin/m15dt8blue/image/club_level_2.gif b/skin/m15dt8blue/image/club_level_2.gif
new file mode 100644
index 0000000..1653c79
Binary files /dev/null and b/skin/m15dt8blue/image/club_level_2.gif differ
diff --git a/skin/m15dt8blue/image/club_level_3.gif b/skin/m15dt8blue/image/club_level_3.gif
new file mode 100644
index 0000000..1263aaa
Binary files /dev/null and b/skin/m15dt8blue/image/club_level_3.gif differ
diff --git a/skin/m15dt8blue/image/club_ontop_2.gif b/skin/m15dt8blue/image/club_ontop_2.gif
new file mode 100644
index 0000000..c6eff1c
Binary files /dev/null and b/skin/m15dt8blue/image/club_ontop_2.gif differ
diff --git a/skin/m15dt8blue/image/club_quote_a.gif b/skin/m15dt8blue/image/club_quote_a.gif
new file mode 100644
index 0000000..0d1d8f1
Binary files /dev/null and b/skin/m15dt8blue/image/club_quote_a.gif differ
diff --git a/skin/m15dt8blue/image/club_quote_b.gif b/skin/m15dt8blue/image/club_quote_b.gif
new file mode 100644
index 0000000..8d7abf4
Binary files /dev/null and b/skin/m15dt8blue/image/club_quote_b.gif differ
diff --git a/skin/m15dt8blue/image/club_video.gif b/skin/m15dt8blue/image/club_video.gif
new file mode 100644
index 0000000..40d0927
Binary files /dev/null and b/skin/m15dt8blue/image/club_video.gif differ
diff --git a/skin/m15dt8blue/image/company.jpg b/skin/m15dt8blue/image/company.jpg
new file mode 100644
index 0000000..8165b96
Binary files /dev/null and b/skin/m15dt8blue/image/company.jpg differ
diff --git a/skin/m15dt8blue/image/dot.gif b/skin/m15dt8blue/image/dot.gif
new file mode 100644
index 0000000..e50078b
Binary files /dev/null and b/skin/m15dt8blue/image/dot.gif differ
diff --git a/skin/m15dt8blue/image/dz-icon.png b/skin/m15dt8blue/image/dz-icon.png
new file mode 100644
index 0000000..b5b319b
Binary files /dev/null and b/skin/m15dt8blue/image/dz-icon.png differ
diff --git a/skin/m15dt8blue/image/email.gif b/skin/m15dt8blue/image/email.gif
new file mode 100644
index 0000000..117c834
Binary files /dev/null and b/skin/m15dt8blue/image/email.gif differ
diff --git a/skin/m15dt8blue/image/fsearch_bg.gif b/skin/m15dt8blue/image/fsearch_bg.gif
new file mode 100644
index 0000000..5cc6f61
Binary files /dev/null and b/skin/m15dt8blue/image/fsearch_bg.gif differ
diff --git a/skin/m15dt8blue/image/grid-coupon.png b/skin/m15dt8blue/image/grid-coupon.png
new file mode 100644
index 0000000..8a489a2
Binary files /dev/null and b/skin/m15dt8blue/image/grid-coupon.png differ
diff --git a/skin/m15dt8blue/image/grid-favorite.png b/skin/m15dt8blue/image/grid-favorite.png
new file mode 100644
index 0000000..b5e2b7f
Binary files /dev/null and b/skin/m15dt8blue/image/grid-favorite.png differ
diff --git a/skin/m15dt8blue/image/grid-gift.png b/skin/m15dt8blue/image/grid-gift.png
new file mode 100644
index 0000000..b7212f8
Binary files /dev/null and b/skin/m15dt8blue/image/grid-gift.png differ
diff --git a/skin/m15dt8blue/image/grid-map.png b/skin/m15dt8blue/image/grid-map.png
new file mode 100644
index 0000000..6c08128
Binary files /dev/null and b/skin/m15dt8blue/image/grid-map.png differ
diff --git a/skin/m15dt8blue/image/grid-mobile.png b/skin/m15dt8blue/image/grid-mobile.png
new file mode 100644
index 0000000..675b06b
Binary files /dev/null and b/skin/m15dt8blue/image/grid-mobile.png differ
diff --git a/skin/m15dt8blue/image/grid-view.png b/skin/m15dt8blue/image/grid-view.png
new file mode 100644
index 0000000..633fa5f
Binary files /dev/null and b/skin/m15dt8blue/image/grid-view.png differ
diff --git a/skin/m15dt8blue/image/grid-vip.png b/skin/m15dt8blue/image/grid-vip.png
new file mode 100644
index 0000000..cd9b5e9
Binary files /dev/null and b/skin/m15dt8blue/image/grid-vip.png differ
diff --git a/skin/m15dt8blue/image/group_join.gif b/skin/m15dt8blue/image/group_join.gif
new file mode 100644
index 0000000..221133a
Binary files /dev/null and b/skin/m15dt8blue/image/group_join.gif differ
diff --git a/skin/m15dt8blue/image/group_timer.gif b/skin/m15dt8blue/image/group_timer.gif
new file mode 100644
index 0000000..34a106e
Binary files /dev/null and b/skin/m15dt8blue/image/group_timer.gif differ
diff --git a/skin/m15dt8blue/image/gs-icon.png b/skin/m15dt8blue/image/gs-icon.png
new file mode 100644
index 0000000..c382b48
Binary files /dev/null and b/skin/m15dt8blue/image/gs-icon.png differ
diff --git a/skin/m15dt8blue/image/header_icon.png b/skin/m15dt8blue/image/header_icon.png
new file mode 100644
index 0000000..2a3ebbf
Binary files /dev/null and b/skin/m15dt8blue/image/header_icon.png differ
diff --git a/skin/m15dt8blue/image/homepage.gif b/skin/m15dt8blue/image/homepage.gif
new file mode 100644
index 0000000..98b0e8f
Binary files /dev/null and b/skin/m15dt8blue/image/homepage.gif differ
diff --git a/skin/m15dt8blue/image/ibox_head.png b/skin/m15dt8blue/image/ibox_head.png
new file mode 100644
index 0000000..afe6da9
Binary files /dev/null and b/skin/m15dt8blue/image/ibox_head.png differ
diff --git a/skin/m15dt8blue/image/ico-cart.png b/skin/m15dt8blue/image/ico-cart.png
new file mode 100644
index 0000000..bf5b701
Binary files /dev/null and b/skin/m15dt8blue/image/ico-cart.png differ
diff --git a/skin/m15dt8blue/image/ico-club-chat.png b/skin/m15dt8blue/image/ico-club-chat.png
new file mode 100644
index 0000000..c4994ba
Binary files /dev/null and b/skin/m15dt8blue/image/ico-club-chat.png differ
diff --git a/skin/m15dt8blue/image/ico-club-post.png b/skin/m15dt8blue/image/ico-club-post.png
new file mode 100644
index 0000000..1e56725
Binary files /dev/null and b/skin/m15dt8blue/image/ico-club-post.png differ
diff --git a/skin/m15dt8blue/image/ico-club-reply.png b/skin/m15dt8blue/image/ico-club-reply.png
new file mode 100644
index 0000000..ff8074c
Binary files /dev/null and b/skin/m15dt8blue/image/ico-club-reply.png differ
diff --git a/skin/m15dt8blue/image/ico-comm.png b/skin/m15dt8blue/image/ico-comm.png
new file mode 100644
index 0000000..29151d5
Binary files /dev/null and b/skin/m15dt8blue/image/ico-comm.png differ
diff --git a/skin/m15dt8blue/image/ico-delete-on.png b/skin/m15dt8blue/image/ico-delete-on.png
new file mode 100644
index 0000000..c50ba3c
Binary files /dev/null and b/skin/m15dt8blue/image/ico-delete-on.png differ
diff --git a/skin/m15dt8blue/image/ico-delete.png b/skin/m15dt8blue/image/ico-delete.png
new file mode 100644
index 0000000..d1b00d6
Binary files /dev/null and b/skin/m15dt8blue/image/ico-delete.png differ
diff --git a/skin/m15dt8blue/image/ico-down.png b/skin/m15dt8blue/image/ico-down.png
new file mode 100644
index 0000000..9a71971
Binary files /dev/null and b/skin/m15dt8blue/image/ico-down.png differ
diff --git a/skin/m15dt8blue/image/ico-download.gif b/skin/m15dt8blue/image/ico-download.gif
new file mode 100644
index 0000000..6e6b9f3
Binary files /dev/null and b/skin/m15dt8blue/image/ico-download.gif differ
diff --git a/skin/m15dt8blue/image/ico-fav.png b/skin/m15dt8blue/image/ico-fav.png
new file mode 100644
index 0000000..5b0ed99
Binary files /dev/null and b/skin/m15dt8blue/image/ico-fav.png differ
diff --git a/skin/m15dt8blue/image/ico-know-post.png b/skin/m15dt8blue/image/ico-know-post.png
new file mode 100644
index 0000000..1e56725
Binary files /dev/null and b/skin/m15dt8blue/image/ico-know-post.png differ
diff --git a/skin/m15dt8blue/image/ico-like-on.png b/skin/m15dt8blue/image/ico-like-on.png
new file mode 100644
index 0000000..a43fee2
Binary files /dev/null and b/skin/m15dt8blue/image/ico-like-on.png differ
diff --git a/skin/m15dt8blue/image/ico-like.png b/skin/m15dt8blue/image/ico-like.png
new file mode 100644
index 0000000..c039cb9
Binary files /dev/null and b/skin/m15dt8blue/image/ico-like.png differ
diff --git a/skin/m15dt8blue/image/ico-location.png b/skin/m15dt8blue/image/ico-location.png
new file mode 100644
index 0000000..6463594
Binary files /dev/null and b/skin/m15dt8blue/image/ico-location.png differ
diff --git a/skin/m15dt8blue/image/ico-mobile.png b/skin/m15dt8blue/image/ico-mobile.png
new file mode 100644
index 0000000..ed29510
Binary files /dev/null and b/skin/m15dt8blue/image/ico-mobile.png differ
diff --git a/skin/m15dt8blue/image/ico-nav.png b/skin/m15dt8blue/image/ico-nav.png
new file mode 100644
index 0000000..677edfb
Binary files /dev/null and b/skin/m15dt8blue/image/ico-nav.png differ
diff --git a/skin/m15dt8blue/image/ico-pics.png b/skin/m15dt8blue/image/ico-pics.png
new file mode 100644
index 0000000..cf8d5ac
Binary files /dev/null and b/skin/m15dt8blue/image/ico-pics.png differ
diff --git a/skin/m15dt8blue/image/ico-qrcode.png b/skin/m15dt8blue/image/ico-qrcode.png
new file mode 100644
index 0000000..10c1d7c
Binary files /dev/null and b/skin/m15dt8blue/image/ico-qrcode.png differ
diff --git a/skin/m15dt8blue/image/ico-quote-on.png b/skin/m15dt8blue/image/ico-quote-on.png
new file mode 100644
index 0000000..f3a4942
Binary files /dev/null and b/skin/m15dt8blue/image/ico-quote-on.png differ
diff --git a/skin/m15dt8blue/image/ico-quote.png b/skin/m15dt8blue/image/ico-quote.png
new file mode 100644
index 0000000..e890b78
Binary files /dev/null and b/skin/m15dt8blue/image/ico-quote.png differ
diff --git a/skin/m15dt8blue/image/ico-report-on.png b/skin/m15dt8blue/image/ico-report-on.png
new file mode 100644
index 0000000..2644604
Binary files /dev/null and b/skin/m15dt8blue/image/ico-report-on.png differ
diff --git a/skin/m15dt8blue/image/ico-report.png b/skin/m15dt8blue/image/ico-report.png
new file mode 100644
index 0000000..6bc2c05
Binary files /dev/null and b/skin/m15dt8blue/image/ico-report.png differ
diff --git a/skin/m15dt8blue/image/ico-sort-on.png b/skin/m15dt8blue/image/ico-sort-on.png
new file mode 100644
index 0000000..b133d7c
Binary files /dev/null and b/skin/m15dt8blue/image/ico-sort-on.png differ
diff --git a/skin/m15dt8blue/image/ico-time.png b/skin/m15dt8blue/image/ico-time.png
new file mode 100644
index 0000000..1d0e8da
Binary files /dev/null and b/skin/m15dt8blue/image/ico-time.png differ
diff --git a/skin/m15dt8blue/image/ico-user.png b/skin/m15dt8blue/image/ico-user.png
new file mode 100644
index 0000000..17b7fbd
Binary files /dev/null and b/skin/m15dt8blue/image/ico-user.png differ
diff --git a/skin/m15dt8blue/image/ico-zoomout.png b/skin/m15dt8blue/image/ico-zoomout.png
new file mode 100644
index 0000000..ddb356b
Binary files /dev/null and b/skin/m15dt8blue/image/ico-zoomout.png differ
diff --git a/skin/m15dt8blue/image/ico_arrow_d.gif b/skin/m15dt8blue/image/ico_arrow_d.gif
new file mode 100644
index 0000000..3b39eb7
Binary files /dev/null and b/skin/m15dt8blue/image/ico_arrow_d.gif differ
diff --git a/skin/m15dt8blue/image/ico_arrow_up.gif b/skin/m15dt8blue/image/ico_arrow_up.gif
new file mode 100644
index 0000000..098ae3e
Binary files /dev/null and b/skin/m15dt8blue/image/ico_arrow_up.gif differ
diff --git a/skin/m15dt8blue/image/ico_lock.gif b/skin/m15dt8blue/image/ico_lock.gif
new file mode 100644
index 0000000..b657a12
Binary files /dev/null and b/skin/m15dt8blue/image/ico_lock.gif differ
diff --git a/skin/m15dt8blue/image/ico_quote.gif b/skin/m15dt8blue/image/ico_quote.gif
new file mode 100644
index 0000000..86d1684
Binary files /dev/null and b/skin/m15dt8blue/image/ico_quote.gif differ
diff --git a/skin/m15dt8blue/image/ico_search.gif b/skin/m15dt8blue/image/ico_search.gif
new file mode 100644
index 0000000..79f6720
Binary files /dev/null and b/skin/m15dt8blue/image/ico_search.gif differ
diff --git a/skin/m15dt8blue/image/ico_tips.gif b/skin/m15dt8blue/image/ico_tips.gif
new file mode 100644
index 0000000..e79bf78
Binary files /dev/null and b/skin/m15dt8blue/image/ico_tips.gif differ
diff --git a/skin/m15dt8blue/image/ico_zoom.gif b/skin/m15dt8blue/image/ico_zoom.gif
new file mode 100644
index 0000000..060cfbf
Binary files /dev/null and b/skin/m15dt8blue/image/ico_zoom.gif differ
diff --git a/skin/m15dt8blue/image/index.html b/skin/m15dt8blue/image/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/skin/m15dt8blue/image/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/skin/m15dt8blue/image/input-captcha.png b/skin/m15dt8blue/image/input-captcha.png
new file mode 100644
index 0000000..479c8fd
Binary files /dev/null and b/skin/m15dt8blue/image/input-captcha.png differ
diff --git a/skin/m15dt8blue/image/input-mail.png b/skin/m15dt8blue/image/input-mail.png
new file mode 100644
index 0000000..0ade442
Binary files /dev/null and b/skin/m15dt8blue/image/input-mail.png differ
diff --git a/skin/m15dt8blue/image/input-mobile.png b/skin/m15dt8blue/image/input-mobile.png
new file mode 100644
index 0000000..7172e67
Binary files /dev/null and b/skin/m15dt8blue/image/input-mobile.png differ
diff --git a/skin/m15dt8blue/image/input-password.png b/skin/m15dt8blue/image/input-password.png
new file mode 100644
index 0000000..b7302fe
Binary files /dev/null and b/skin/m15dt8blue/image/input-password.png differ
diff --git a/skin/m15dt8blue/image/input-question.png b/skin/m15dt8blue/image/input-question.png
new file mode 100644
index 0000000..39d56ce
Binary files /dev/null and b/skin/m15dt8blue/image/input-question.png differ
diff --git a/skin/m15dt8blue/image/input-username.png b/skin/m15dt8blue/image/input-username.png
new file mode 100644
index 0000000..4f4b5ee
Binary files /dev/null and b/skin/m15dt8blue/image/input-username.png differ
diff --git a/skin/m15dt8blue/image/ispecial_bg.png b/skin/m15dt8blue/image/ispecial_bg.png
new file mode 100644
index 0000000..7564e9d
Binary files /dev/null and b/skin/m15dt8blue/image/ispecial_bg.png differ
diff --git a/skin/m15dt8blue/image/iuser.png b/skin/m15dt8blue/image/iuser.png
new file mode 100644
index 0000000..8cd6c24
Binary files /dev/null and b/skin/m15dt8blue/image/iuser.png differ
diff --git a/skin/m15dt8blue/image/job_apply.gif b/skin/m15dt8blue/image/job_apply.gif
new file mode 100644
index 0000000..14b6b6a
Binary files /dev/null and b/skin/m15dt8blue/image/job_apply.gif differ
diff --git a/skin/m15dt8blue/image/job_fav.gif b/skin/m15dt8blue/image/job_fav.gif
new file mode 100644
index 0000000..2e76d1e
Binary files /dev/null and b/skin/m15dt8blue/image/job_fav.gif differ
diff --git a/skin/m15dt8blue/image/job_search.gif b/skin/m15dt8blue/image/job_search.gif
new file mode 100644
index 0000000..765ab4e
Binary files /dev/null and b/skin/m15dt8blue/image/job_search.gif differ
diff --git a/skin/m15dt8blue/image/jquery.slide.pload.gif b/skin/m15dt8blue/image/jquery.slide.pload.gif
new file mode 100644
index 0000000..db3a483
Binary files /dev/null and b/skin/m15dt8blue/image/jquery.slide.pload.gif differ
diff --git a/skin/m15dt8blue/image/know_0.gif b/skin/m15dt8blue/image/know_0.gif
new file mode 100644
index 0000000..7102dbe
Binary files /dev/null and b/skin/m15dt8blue/image/know_0.gif differ
diff --git a/skin/m15dt8blue/image/know_1.gif b/skin/m15dt8blue/image/know_1.gif
new file mode 100644
index 0000000..87e533a
Binary files /dev/null and b/skin/m15dt8blue/image/know_1.gif differ
diff --git a/skin/m15dt8blue/image/know_3.gif b/skin/m15dt8blue/image/know_3.gif
new file mode 100644
index 0000000..94cb242
Binary files /dev/null and b/skin/m15dt8blue/image/know_3.gif differ
diff --git a/skin/m15dt8blue/image/know_btn_1.gif b/skin/m15dt8blue/image/know_btn_1.gif
new file mode 100644
index 0000000..606433a
Binary files /dev/null and b/skin/m15dt8blue/image/know_btn_1.gif differ
diff --git a/skin/m15dt8blue/image/lazy.gif b/skin/m15dt8blue/image/lazy.gif
new file mode 100644
index 0000000..c95709f
Binary files /dev/null and b/skin/m15dt8blue/image/lazy.gif differ
diff --git a/skin/m15dt8blue/image/left_head.gif b/skin/m15dt8blue/image/left_head.gif
new file mode 100644
index 0000000..3991638
Binary files /dev/null and b/skin/m15dt8blue/image/left_head.gif differ
diff --git a/skin/m15dt8blue/image/leri.png b/skin/m15dt8blue/image/leri.png
new file mode 100644
index 0000000..475c733
Binary files /dev/null and b/skin/m15dt8blue/image/leri.png differ
diff --git a/skin/m15dt8blue/image/line.gif b/skin/m15dt8blue/image/line.gif
new file mode 100644
index 0000000..672f684
Binary files /dev/null and b/skin/m15dt8blue/image/line.gif differ
diff --git a/skin/m15dt8blue/image/list3.gif b/skin/m15dt8blue/image/list3.gif
new file mode 100644
index 0000000..691f42b
Binary files /dev/null and b/skin/m15dt8blue/image/list3.gif differ
diff --git a/skin/m15dt8blue/image/list_img.gif b/skin/m15dt8blue/image/list_img.gif
new file mode 100644
index 0000000..d0eafea
Binary files /dev/null and b/skin/m15dt8blue/image/list_img.gif differ
diff --git a/skin/m15dt8blue/image/list_img_on.gif b/skin/m15dt8blue/image/list_img_on.gif
new file mode 100644
index 0000000..4898192
Binary files /dev/null and b/skin/m15dt8blue/image/list_img_on.gif differ
diff --git a/skin/m15dt8blue/image/list_mix_on.gif b/skin/m15dt8blue/image/list_mix_on.gif
new file mode 100644
index 0000000..3c50dde
Binary files /dev/null and b/skin/m15dt8blue/image/list_mix_on.gif differ
diff --git a/skin/m15dt8blue/image/list_txt.gif b/skin/m15dt8blue/image/list_txt.gif
new file mode 100644
index 0000000..a229f3a
Binary files /dev/null and b/skin/m15dt8blue/image/list_txt.gif differ
diff --git a/skin/m15dt8blue/image/list_txt_on.gif b/skin/m15dt8blue/image/list_txt_on.gif
new file mode 100644
index 0000000..ea50d91
Binary files /dev/null and b/skin/m15dt8blue/image/list_txt_on.gif differ
diff --git a/skin/m15dt8blue/image/load.gif b/skin/m15dt8blue/image/load.gif
new file mode 100644
index 0000000..6a56815
Binary files /dev/null and b/skin/m15dt8blue/image/load.gif differ
diff --git a/skin/m15dt8blue/image/loading...gif b/skin/m15dt8blue/image/loading...gif
new file mode 100644
index 0000000..7bb834d
Binary files /dev/null and b/skin/m15dt8blue/image/loading...gif differ
diff --git a/skin/m15dt8blue/image/mall_tab.png b/skin/m15dt8blue/image/mall_tab.png
new file mode 100644
index 0000000..2d6933f
Binary files /dev/null and b/skin/m15dt8blue/image/mall_tab.png differ
diff --git a/skin/m15dt8blue/image/message-arrow.png b/skin/m15dt8blue/image/message-arrow.png
new file mode 100644
index 0000000..a44e7d2
Binary files /dev/null and b/skin/m15dt8blue/image/message-arrow.png differ
diff --git a/skin/m15dt8blue/image/news-hot.png b/skin/m15dt8blue/image/news-hot.png
new file mode 100644
index 0000000..e631a2a
Binary files /dev/null and b/skin/m15dt8blue/image/news-hot.png differ
diff --git a/skin/m15dt8blue/image/no.gif b/skin/m15dt8blue/image/no.gif
new file mode 100644
index 0000000..d17179c
Binary files /dev/null and b/skin/m15dt8blue/image/no.gif differ
diff --git a/skin/m15dt8blue/image/nopic.gif b/skin/m15dt8blue/image/nopic.gif
new file mode 100644
index 0000000..add389a
Binary files /dev/null and b/skin/m15dt8blue/image/nopic.gif differ
diff --git a/skin/m15dt8blue/image/nopic.middle.png b/skin/m15dt8blue/image/nopic.middle.png
new file mode 100644
index 0000000..5d131d3
Binary files /dev/null and b/skin/m15dt8blue/image/nopic.middle.png differ
diff --git a/skin/m15dt8blue/image/nopic.png b/skin/m15dt8blue/image/nopic.png
new file mode 100644
index 0000000..5d131d3
Binary files /dev/null and b/skin/m15dt8blue/image/nopic.png differ
diff --git a/skin/m15dt8blue/image/nopic.thumb.png b/skin/m15dt8blue/image/nopic.thumb.png
new file mode 100644
index 0000000..e0b1c44
Binary files /dev/null and b/skin/m15dt8blue/image/nopic.thumb.png differ
diff --git a/skin/m15dt8blue/image/nopic150.gif b/skin/m15dt8blue/image/nopic150.gif
new file mode 100644
index 0000000..4a133d4
Binary files /dev/null and b/skin/m15dt8blue/image/nopic150.gif differ
diff --git a/skin/m15dt8blue/image/nopic160.gif b/skin/m15dt8blue/image/nopic160.gif
new file mode 100644
index 0000000..b239f11
Binary files /dev/null and b/skin/m15dt8blue/image/nopic160.gif differ
diff --git a/skin/m15dt8blue/image/nopic160.png b/skin/m15dt8blue/image/nopic160.png
new file mode 100644
index 0000000..6c8c0b2
Binary files /dev/null and b/skin/m15dt8blue/image/nopic160.png differ
diff --git a/skin/m15dt8blue/image/nopic240.gif b/skin/m15dt8blue/image/nopic240.gif
new file mode 100644
index 0000000..87ea4ca
Binary files /dev/null and b/skin/m15dt8blue/image/nopic240.gif differ
diff --git a/skin/m15dt8blue/image/nopic320.gif b/skin/m15dt8blue/image/nopic320.gif
new file mode 100644
index 0000000..ba53d7f
Binary files /dev/null and b/skin/m15dt8blue/image/nopic320.gif differ
diff --git a/skin/m15dt8blue/image/nopic50.gif b/skin/m15dt8blue/image/nopic50.gif
new file mode 100644
index 0000000..c43a26f
Binary files /dev/null and b/skin/m15dt8blue/image/nopic50.gif differ
diff --git a/skin/m15dt8blue/image/photo_next.gif b/skin/m15dt8blue/image/photo_next.gif
new file mode 100644
index 0000000..237477d
Binary files /dev/null and b/skin/m15dt8blue/image/photo_next.gif differ
diff --git a/skin/m15dt8blue/image/pos.gif b/skin/m15dt8blue/image/pos.gif
new file mode 100644
index 0000000..1bf16ad
Binary files /dev/null and b/skin/m15dt8blue/image/pos.gif differ
diff --git a/skin/m15dt8blue/image/post-icon-black.png b/skin/m15dt8blue/image/post-icon-black.png
new file mode 100644
index 0000000..3948857
Binary files /dev/null and b/skin/m15dt8blue/image/post-icon-black.png differ
diff --git a/skin/m15dt8blue/image/post-icon.png b/skin/m15dt8blue/image/post-icon.png
new file mode 100644
index 0000000..a3953fd
Binary files /dev/null and b/skin/m15dt8blue/image/post-icon.png differ
diff --git a/skin/m15dt8blue/image/prev.cur b/skin/m15dt8blue/image/prev.cur
new file mode 100644
index 0000000..f508e9e
Binary files /dev/null and b/skin/m15dt8blue/image/prev.cur differ
diff --git a/skin/m15dt8blue/image/rank_list.gif b/skin/m15dt8blue/image/rank_list.gif
new file mode 100644
index 0000000..a6462e2
Binary files /dev/null and b/skin/m15dt8blue/image/rank_list.gif differ
diff --git a/skin/m15dt8blue/image/reddot.gif b/skin/m15dt8blue/image/reddot.gif
new file mode 100644
index 0000000..e9090db
Binary files /dev/null and b/skin/m15dt8blue/image/reddot.gif differ
diff --git a/skin/m15dt8blue/image/reg-step.png b/skin/m15dt8blue/image/reg-step.png
new file mode 100644
index 0000000..34b2fe1
Binary files /dev/null and b/skin/m15dt8blue/image/reg-step.png differ
diff --git a/skin/m15dt8blue/image/resume_search.gif b/skin/m15dt8blue/image/resume_search.gif
new file mode 100644
index 0000000..ec04538
Binary files /dev/null and b/skin/m15dt8blue/image/resume_search.gif differ
diff --git a/skin/m15dt8blue/image/sell_tip.gif b/skin/m15dt8blue/image/sell_tip.gif
new file mode 100644
index 0000000..4065cd4
Binary files /dev/null and b/skin/m15dt8blue/image/sell_tip.gif differ
diff --git a/skin/m15dt8blue/image/sendsms.gif b/skin/m15dt8blue/image/sendsms.gif
new file mode 100644
index 0000000..00c853c
Binary files /dev/null and b/skin/m15dt8blue/image/sendsms.gif differ
diff --git a/skin/m15dt8blue/image/spacer.gif b/skin/m15dt8blue/image/spacer.gif
new file mode 100644
index 0000000..c95709f
Binary files /dev/null and b/skin/m15dt8blue/image/spacer.gif differ
diff --git a/skin/m15dt8blue/image/spread-banner.png b/skin/m15dt8blue/image/spread-banner.png
new file mode 100644
index 0000000..a358108
Binary files /dev/null and b/skin/m15dt8blue/image/spread-banner.png differ
diff --git a/skin/m15dt8blue/image/spread_bg.gif b/skin/m15dt8blue/image/spread_bg.gif
new file mode 100644
index 0000000..045f661
Binary files /dev/null and b/skin/m15dt8blue/image/spread_bg.gif differ
diff --git a/skin/m15dt8blue/image/star0.png b/skin/m15dt8blue/image/star0.png
new file mode 100644
index 0000000..545abc6
Binary files /dev/null and b/skin/m15dt8blue/image/star0.png differ
diff --git a/skin/m15dt8blue/image/star1.gif b/skin/m15dt8blue/image/star1.gif
new file mode 100644
index 0000000..2da91c9
Binary files /dev/null and b/skin/m15dt8blue/image/star1.gif differ
diff --git a/skin/m15dt8blue/image/star2.gif b/skin/m15dt8blue/image/star2.gif
new file mode 100644
index 0000000..1b1339a
Binary files /dev/null and b/skin/m15dt8blue/image/star2.gif differ
diff --git a/skin/m15dt8blue/image/star2.png b/skin/m15dt8blue/image/star2.png
new file mode 100644
index 0000000..c0b3661
Binary files /dev/null and b/skin/m15dt8blue/image/star2.png differ
diff --git a/skin/m15dt8blue/image/star4.png b/skin/m15dt8blue/image/star4.png
new file mode 100644
index 0000000..b5c5d06
Binary files /dev/null and b/skin/m15dt8blue/image/star4.png differ
diff --git a/skin/m15dt8blue/image/star5.png b/skin/m15dt8blue/image/star5.png
new file mode 100644
index 0000000..a044329
Binary files /dev/null and b/skin/m15dt8blue/image/star5.png differ
diff --git a/skin/m15dt8blue/image/tab_2_1.gif b/skin/m15dt8blue/image/tab_2_1.gif
new file mode 100644
index 0000000..1909b69
Binary files /dev/null and b/skin/m15dt8blue/image/tab_2_1.gif differ
diff --git a/skin/m15dt8blue/image/tel.png b/skin/m15dt8blue/image/tel.png
new file mode 100644
index 0000000..02060f1
Binary files /dev/null and b/skin/m15dt8blue/image/tel.png differ
diff --git a/skin/m15dt8blue/image/tips_top.gif b/skin/m15dt8blue/image/tips_top.gif
new file mode 100644
index 0000000..c518e22
Binary files /dev/null and b/skin/m15dt8blue/image/tips_top.gif differ
diff --git a/skin/m15dt8blue/image/tool-comment-on.png b/skin/m15dt8blue/image/tool-comment-on.png
new file mode 100644
index 0000000..eb872f5
Binary files /dev/null and b/skin/m15dt8blue/image/tool-comment-on.png differ
diff --git a/skin/m15dt8blue/image/tool-comment.png b/skin/m15dt8blue/image/tool-comment.png
new file mode 100644
index 0000000..f0c4512
Binary files /dev/null and b/skin/m15dt8blue/image/tool-comment.png differ
diff --git a/skin/m15dt8blue/image/tool-favorite-on.png b/skin/m15dt8blue/image/tool-favorite-on.png
new file mode 100644
index 0000000..f5ec773
Binary files /dev/null and b/skin/m15dt8blue/image/tool-favorite-on.png differ
diff --git a/skin/m15dt8blue/image/tool-favorite.png b/skin/m15dt8blue/image/tool-favorite.png
new file mode 100644
index 0000000..0a88bb3
Binary files /dev/null and b/skin/m15dt8blue/image/tool-favorite.png differ
diff --git a/skin/m15dt8blue/image/tool-hate.png b/skin/m15dt8blue/image/tool-hate.png
new file mode 100644
index 0000000..dfc5d7f
Binary files /dev/null and b/skin/m15dt8blue/image/tool-hate.png differ
diff --git a/skin/m15dt8blue/image/tool-like.png b/skin/m15dt8blue/image/tool-like.png
new file mode 100644
index 0000000..632f9e9
Binary files /dev/null and b/skin/m15dt8blue/image/tool-like.png differ
diff --git a/skin/m15dt8blue/image/tool-report-on.png b/skin/m15dt8blue/image/tool-report-on.png
new file mode 100644
index 0000000..1ccd170
Binary files /dev/null and b/skin/m15dt8blue/image/tool-report-on.png differ
diff --git a/skin/m15dt8blue/image/tool-report.png b/skin/m15dt8blue/image/tool-report.png
new file mode 100644
index 0000000..3c0c2f9
Binary files /dev/null and b/skin/m15dt8blue/image/tool-report.png differ
diff --git a/skin/m15dt8blue/image/tool-share.png b/skin/m15dt8blue/image/tool-share.png
new file mode 100644
index 0000000..66de5f2
Binary files /dev/null and b/skin/m15dt8blue/image/tool-share.png differ
diff --git a/skin/m15dt8blue/image/type_bg.gif b/skin/m15dt8blue/image/type_bg.gif
new file mode 100644
index 0000000..4788111
Binary files /dev/null and b/skin/m15dt8blue/image/type_bg.gif differ
diff --git a/skin/m15dt8blue/image/user.png b/skin/m15dt8blue/image/user.png
new file mode 100644
index 0000000..17b7fbd
Binary files /dev/null and b/skin/m15dt8blue/image/user.png differ
diff --git a/skin/m15dt8blue/image/user_offline.png b/skin/m15dt8blue/image/user_offline.png
new file mode 100644
index 0000000..2f1d089
Binary files /dev/null and b/skin/m15dt8blue/image/user_offline.png differ
diff --git a/skin/m15dt8blue/image/user_online.png b/skin/m15dt8blue/image/user_online.png
new file mode 100644
index 0000000..94f8b1e
Binary files /dev/null and b/skin/m15dt8blue/image/user_online.png differ
diff --git a/skin/m15dt8blue/image/vip_0.gif b/skin/m15dt8blue/image/vip_0.gif
new file mode 100644
index 0000000..80f143f
Binary files /dev/null and b/skin/m15dt8blue/image/vip_0.gif differ
diff --git a/skin/m15dt8blue/image/vip_10.gif b/skin/m15dt8blue/image/vip_10.gif
new file mode 100644
index 0000000..9e23975
Binary files /dev/null and b/skin/m15dt8blue/image/vip_10.gif differ
diff --git a/skin/m15dt8blue/image/vip_2.gif b/skin/m15dt8blue/image/vip_2.gif
new file mode 100644
index 0000000..e6ec0cb
Binary files /dev/null and b/skin/m15dt8blue/image/vip_2.gif differ
diff --git a/skin/m15dt8blue/image/vip_4.gif b/skin/m15dt8blue/image/vip_4.gif
new file mode 100644
index 0000000..f67471f
Binary files /dev/null and b/skin/m15dt8blue/image/vip_4.gif differ
diff --git a/skin/m15dt8blue/image/vip_5.gif b/skin/m15dt8blue/image/vip_5.gif
new file mode 100644
index 0000000..177fa79
Binary files /dev/null and b/skin/m15dt8blue/image/vip_5.gif differ
diff --git a/skin/m15dt8blue/image/vip_6.gif b/skin/m15dt8blue/image/vip_6.gif
new file mode 100644
index 0000000..7152d62
Binary files /dev/null and b/skin/m15dt8blue/image/vip_6.gif differ
diff --git a/skin/m15dt8blue/image/vip_7.gif b/skin/m15dt8blue/image/vip_7.gif
new file mode 100644
index 0000000..03914f8
Binary files /dev/null and b/skin/m15dt8blue/image/vip_7.gif differ
diff --git a/skin/m15dt8blue/image/vip_8.gif b/skin/m15dt8blue/image/vip_8.gif
new file mode 100644
index 0000000..efbef6d
Binary files /dev/null and b/skin/m15dt8blue/image/vip_8.gif differ
diff --git a/skin/m15dt8blue/image/vote_bg.gif b/skin/m15dt8blue/image/vote_bg.gif
new file mode 100644
index 0000000..76a15e1
Binary files /dev/null and b/skin/m15dt8blue/image/vote_bg.gif differ
diff --git a/skin/m15dt8blue/image/waitpic.gif b/skin/m15dt8blue/image/waitpic.gif
new file mode 100644
index 0000000..5462599
Binary files /dev/null and b/skin/m15dt8blue/image/waitpic.gif differ
diff --git a/skin/m15dt8blue/image/warn.gif b/skin/m15dt8blue/image/warn.gif
new file mode 100644
index 0000000..6047737
Binary files /dev/null and b/skin/m15dt8blue/image/warn.gif differ
diff --git a/skin/m15dt8blue/image/yes.gif b/skin/m15dt8blue/image/yes.gif
new file mode 100644
index 0000000..a158532
Binary files /dev/null and b/skin/m15dt8blue/image/yes.gif differ
diff --git a/skin/m15dt8blue/image/zoom_bg.gif b/skin/m15dt8blue/image/zoom_bg.gif
new file mode 100644
index 0000000..8f153c0
Binary files /dev/null and b/skin/m15dt8blue/image/zoom_bg.gif differ
diff --git a/skin/m15dt8blue/image/zoomin.gif b/skin/m15dt8blue/image/zoomin.gif
new file mode 100644
index 0000000..2f9fd02
Binary files /dev/null and b/skin/m15dt8blue/image/zoomin.gif differ
diff --git a/skin/m15dt8blue/images/gengduo.png b/skin/m15dt8blue/images/gengduo.png
new file mode 100644
index 0000000..9c8345d
Binary files /dev/null and b/skin/m15dt8blue/images/gengduo.png differ
diff --git a/skin/m15dt8blue/images/photo/tk2.jpg b/skin/m15dt8blue/images/photo/tk2.jpg
new file mode 100644
index 0000000..55b2fd9
Binary files /dev/null and b/skin/m15dt8blue/images/photo/tk2.jpg differ
diff --git a/skin/m15dt8blue/images/photo/tk3.jpg b/skin/m15dt8blue/images/photo/tk3.jpg
new file mode 100644
index 0000000..adb852a
Binary files /dev/null and b/skin/m15dt8blue/images/photo/tk3.jpg differ
diff --git a/skin/m15dt8blue/images/photo/tk5.jpg b/skin/m15dt8blue/images/photo/tk5.jpg
new file mode 100644
index 0000000..606e453
Binary files /dev/null and b/skin/m15dt8blue/images/photo/tk5.jpg differ
diff --git a/skin/m15dt8blue/images/photo/tk8.jpg b/skin/m15dt8blue/images/photo/tk8.jpg
new file mode 100644
index 0000000..3ab24eb
Binary files /dev/null and b/skin/m15dt8blue/images/photo/tk8.jpg differ
diff --git a/skin/m15dt8blue/images/sell_ad_1f.png b/skin/m15dt8blue/images/sell_ad_1f.png
new file mode 100644
index 0000000..3e45034
Binary files /dev/null and b/skin/m15dt8blue/images/sell_ad_1f.png differ
diff --git a/skin/m15dt8blue/images/sell_ad_2f.png b/skin/m15dt8blue/images/sell_ad_2f.png
new file mode 100644
index 0000000..0362c98
Binary files /dev/null and b/skin/m15dt8blue/images/sell_ad_2f.png differ
diff --git a/skin/m15dt8blue/images/sell_ad_3f.png b/skin/m15dt8blue/images/sell_ad_3f.png
new file mode 100644
index 0000000..91b7ea5
Binary files /dev/null and b/skin/m15dt8blue/images/sell_ad_3f.png differ
diff --git a/skin/m15dt8blue/images/sell_ad_7f.png b/skin/m15dt8blue/images/sell_ad_7f.png
new file mode 100644
index 0000000..1db67cc
Binary files /dev/null and b/skin/m15dt8blue/images/sell_ad_7f.png differ
diff --git a/skin/m15dt8blue/images/sell_ad_8f.png b/skin/m15dt8blue/images/sell_ad_8f.png
new file mode 100644
index 0000000..e02a680
Binary files /dev/null and b/skin/m15dt8blue/images/sell_ad_8f.png differ
diff --git a/skin/m15dt8blue/images/tk1-1.jpg b/skin/m15dt8blue/images/tk1-1.jpg
new file mode 100644
index 0000000..a086654
Binary files /dev/null and b/skin/m15dt8blue/images/tk1-1.jpg differ
diff --git a/skin/m15dt8blue/images/tk3-3.jpg b/skin/m15dt8blue/images/tk3-3.jpg
new file mode 100644
index 0000000..84d449d
Binary files /dev/null and b/skin/m15dt8blue/images/tk3-3.jpg differ
diff --git a/skin/m15dt8blue/images/tk5-5.jpg b/skin/m15dt8blue/images/tk5-5.jpg
new file mode 100644
index 0000000..aefcb1c
Binary files /dev/null and b/skin/m15dt8blue/images/tk5-5.jpg differ
diff --git a/skin/m15dt8blue/images/tk8-8.jpg b/skin/m15dt8blue/images/tk8-8.jpg
new file mode 100644
index 0000000..b3a7e11
Binary files /dev/null and b/skin/m15dt8blue/images/tk8-8.jpg differ
diff --git a/skin/m15dt8blue/img/02f.jpg b/skin/m15dt8blue/img/02f.jpg
new file mode 100644
index 0000000..7261d40
Binary files /dev/null and b/skin/m15dt8blue/img/02f.jpg differ
diff --git a/skin/m15dt8blue/img/02index-banner-8.gif b/skin/m15dt8blue/img/02index-banner-8.gif
new file mode 100644
index 0000000..465973f
Binary files /dev/null and b/skin/m15dt8blue/img/02index-banner-8.gif differ
diff --git a/skin/m15dt8blue/img/03f.jpg b/skin/m15dt8blue/img/03f.jpg
new file mode 100644
index 0000000..02bf360
Binary files /dev/null and b/skin/m15dt8blue/img/03f.jpg differ
diff --git a/skin/m15dt8blue/img/04f.jpg b/skin/m15dt8blue/img/04f.jpg
new file mode 100644
index 0000000..0edece6
Binary files /dev/null and b/skin/m15dt8blue/img/04f.jpg differ
diff --git a/skin/m15dt8blue/img/05f.jpg b/skin/m15dt8blue/img/05f.jpg
new file mode 100644
index 0000000..03e6820
Binary files /dev/null and b/skin/m15dt8blue/img/05f.jpg differ
diff --git a/skin/m15dt8blue/img/06018086130947978.jpg b/skin/m15dt8blue/img/06018086130947978.jpg
new file mode 100644
index 0000000..53fe13d
Binary files /dev/null and b/skin/m15dt8blue/img/06018086130947978.jpg differ
diff --git a/skin/m15dt8blue/img/085723237.jpg b/skin/m15dt8blue/img/085723237.jpg
new file mode 100644
index 0000000..52efcd5
Binary files /dev/null and b/skin/m15dt8blue/img/085723237.jpg differ
diff --git a/skin/m15dt8blue/img/0f000AjMbg_BDxo7oX7DK6.jpg b/skin/m15dt8blue/img/0f000AjMbg_BDxo7oX7DK6.jpg
new file mode 100644
index 0000000..3ae8c29
Binary files /dev/null and b/skin/m15dt8blue/img/0f000AjMbg_BDxo7oX7DK6.jpg differ
diff --git a/skin/m15dt8blue/img/1000x100djs.jpg b/skin/m15dt8blue/img/1000x100djs.jpg
new file mode 100644
index 0000000..fcc3fa2
Binary files /dev/null and b/skin/m15dt8blue/img/1000x100djs.jpg differ
diff --git a/skin/m15dt8blue/img/130d46e.png b/skin/m15dt8blue/img/130d46e.png
new file mode 100644
index 0000000..c34e2fc
Binary files /dev/null and b/skin/m15dt8blue/img/130d46e.png differ
diff --git a/skin/m15dt8blue/img/1451897328715_75.jpg b/skin/m15dt8blue/img/1451897328715_75.jpg
new file mode 100644
index 0000000..8d3d89d
Binary files /dev/null and b/skin/m15dt8blue/img/1451897328715_75.jpg differ
diff --git a/skin/m15dt8blue/img/160233901.jpg b/skin/m15dt8blue/img/160233901.jpg
new file mode 100644
index 0000000..d96474a
Binary files /dev/null and b/skin/m15dt8blue/img/160233901.jpg differ
diff --git a/skin/m15dt8blue/img/16Fad01.jpg b/skin/m15dt8blue/img/16Fad01.jpg
new file mode 100644
index 0000000..8508f8e
Binary files /dev/null and b/skin/m15dt8blue/img/16Fad01.jpg differ
diff --git a/skin/m15dt8blue/img/1Fad02.jpg b/skin/m15dt8blue/img/1Fad02.jpg
new file mode 100644
index 0000000..30e0029
Binary files /dev/null and b/skin/m15dt8blue/img/1Fad02.jpg differ
diff --git a/skin/m15dt8blue/img/1Fad03.jpg b/skin/m15dt8blue/img/1Fad03.jpg
new file mode 100644
index 0000000..5814cb2
Binary files /dev/null and b/skin/m15dt8blue/img/1Fad03.jpg differ
diff --git a/skin/m15dt8blue/img/1Fad03.png b/skin/m15dt8blue/img/1Fad03.png
new file mode 100644
index 0000000..66fbb5b
Binary files /dev/null and b/skin/m15dt8blue/img/1Fad03.png differ
diff --git a/skin/m15dt8blue/img/20161017132527-5bd47acb.jpg b/skin/m15dt8blue/img/20161017132527-5bd47acb.jpg
new file mode 100644
index 0000000..661177b
Binary files /dev/null and b/skin/m15dt8blue/img/20161017132527-5bd47acb.jpg differ
diff --git a/skin/m15dt8blue/img/20170912100917.jpg b/skin/m15dt8blue/img/20170912100917.jpg
new file mode 100644
index 0000000..f401077
Binary files /dev/null and b/skin/m15dt8blue/img/20170912100917.jpg differ
diff --git a/skin/m15dt8blue/img/20170920141907-173fed28.jpg b/skin/m15dt8blue/img/20170920141907-173fed28.jpg
new file mode 100644
index 0000000..2a0343c
Binary files /dev/null and b/skin/m15dt8blue/img/20170920141907-173fed28.jpg differ
diff --git a/skin/m15dt8blue/img/20170925104238496.gif b/skin/m15dt8blue/img/20170925104238496.gif
new file mode 100644
index 0000000..b849295
Binary files /dev/null and b/skin/m15dt8blue/img/20170925104238496.gif differ
diff --git a/skin/m15dt8blue/img/20180704143555-912ff528.jpg b/skin/m15dt8blue/img/20180704143555-912ff528.jpg
new file mode 100644
index 0000000..c4b41be
Binary files /dev/null and b/skin/m15dt8blue/img/20180704143555-912ff528.jpg differ
diff --git a/skin/m15dt8blue/img/20180928025320949.jpg b/skin/m15dt8blue/img/20180928025320949.jpg
new file mode 100644
index 0000000..7da0a5b
Binary files /dev/null and b/skin/m15dt8blue/img/20180928025320949.jpg differ
diff --git a/skin/m15dt8blue/img/2018120709443516000001.gif b/skin/m15dt8blue/img/2018120709443516000001.gif
new file mode 100644
index 0000000..98529ba
Binary files /dev/null and b/skin/m15dt8blue/img/2018120709443516000001.gif differ
diff --git a/skin/m15dt8blue/img/20190313155223605.jpg b/skin/m15dt8blue/img/20190313155223605.jpg
new file mode 100644
index 0000000..1db7da0
Binary files /dev/null and b/skin/m15dt8blue/img/20190313155223605.jpg differ
diff --git a/skin/m15dt8blue/img/20190517095953983.jpg b/skin/m15dt8blue/img/20190517095953983.jpg
new file mode 100644
index 0000000..fee01b4
Binary files /dev/null and b/skin/m15dt8blue/img/20190517095953983.jpg differ
diff --git a/skin/m15dt8blue/img/202006241432.jpg b/skin/m15dt8blue/img/202006241432.jpg
new file mode 100644
index 0000000..565b881
Binary files /dev/null and b/skin/m15dt8blue/img/202006241432.jpg differ
diff --git a/skin/m15dt8blue/img/202008081644.jpg b/skin/m15dt8blue/img/202008081644.jpg
new file mode 100644
index 0000000..811eedc
Binary files /dev/null and b/skin/m15dt8blue/img/202008081644.jpg differ
diff --git a/skin/m15dt8blue/img/2020621635.jpg b/skin/m15dt8blue/img/2020621635.jpg
new file mode 100644
index 0000000..65e08ae
Binary files /dev/null and b/skin/m15dt8blue/img/2020621635.jpg differ
diff --git a/skin/m15dt8blue/img/2020621637.jpg b/skin/m15dt8blue/img/2020621637.jpg
new file mode 100644
index 0000000..ed58d56
Binary files /dev/null and b/skin/m15dt8blue/img/2020621637.jpg differ
diff --git a/skin/m15dt8blue/img/20206236.jpg b/skin/m15dt8blue/img/20206236.jpg
new file mode 100644
index 0000000..66afb8b
Binary files /dev/null and b/skin/m15dt8blue/img/20206236.jpg differ
diff --git a/skin/m15dt8blue/img/202087.jpg b/skin/m15dt8blue/img/202087.jpg
new file mode 100644
index 0000000..d642b07
Binary files /dev/null and b/skin/m15dt8blue/img/202087.jpg differ
diff --git a/skin/m15dt8blue/img/20209181057.jpg b/skin/m15dt8blue/img/20209181057.jpg
new file mode 100644
index 0000000..eb801be
Binary files /dev/null and b/skin/m15dt8blue/img/20209181057.jpg differ
diff --git a/skin/m15dt8blue/img/2114082.jpg b/skin/m15dt8blue/img/2114082.jpg
new file mode 100644
index 0000000..420fd92
Binary files /dev/null and b/skin/m15dt8blue/img/2114082.jpg differ
diff --git a/skin/m15dt8blue/img/2117978.jpg b/skin/m15dt8blue/img/2117978.jpg
new file mode 100644
index 0000000..ee67fa2
Binary files /dev/null and b/skin/m15dt8blue/img/2117978.jpg differ
diff --git a/skin/m15dt8blue/img/2119216.jpg b/skin/m15dt8blue/img/2119216.jpg
new file mode 100644
index 0000000..3615a18
Binary files /dev/null and b/skin/m15dt8blue/img/2119216.jpg differ
diff --git a/skin/m15dt8blue/img/2121978.jpg b/skin/m15dt8blue/img/2121978.jpg
new file mode 100644
index 0000000..708210c
Binary files /dev/null and b/skin/m15dt8blue/img/2121978.jpg differ
diff --git a/skin/m15dt8blue/img/2122577.jpg b/skin/m15dt8blue/img/2122577.jpg
new file mode 100644
index 0000000..180adab
Binary files /dev/null and b/skin/m15dt8blue/img/2122577.jpg differ
diff --git a/skin/m15dt8blue/img/2123729 (1).jpg b/skin/m15dt8blue/img/2123729 (1).jpg
new file mode 100644
index 0000000..747f988
Binary files /dev/null and b/skin/m15dt8blue/img/2123729 (1).jpg differ
diff --git a/skin/m15dt8blue/img/2123729.jpg b/skin/m15dt8blue/img/2123729.jpg
new file mode 100644
index 0000000..747f988
Binary files /dev/null and b/skin/m15dt8blue/img/2123729.jpg differ
diff --git a/skin/m15dt8blue/img/2F.png b/skin/m15dt8blue/img/2F.png
new file mode 100644
index 0000000..a772c53
Binary files /dev/null and b/skin/m15dt8blue/img/2F.png differ
diff --git a/skin/m15dt8blue/img/2Fad01.jpg b/skin/m15dt8blue/img/2Fad01.jpg
new file mode 100644
index 0000000..16fb87f
Binary files /dev/null and b/skin/m15dt8blue/img/2Fad01.jpg differ
diff --git a/skin/m15dt8blue/img/2Fad03.jpg b/skin/m15dt8blue/img/2Fad03.jpg
new file mode 100644
index 0000000..dfc87cd
Binary files /dev/null and b/skin/m15dt8blue/img/2Fad03.jpg differ
diff --git a/skin/m15dt8blue/img/2cfbde5600711b8e9defedeb458c7e94.png b/skin/m15dt8blue/img/2cfbde5600711b8e9defedeb458c7e94.png
new file mode 100644
index 0000000..affb2e8
Binary files /dev/null and b/skin/m15dt8blue/img/2cfbde5600711b8e9defedeb458c7e94.png differ
diff --git a/skin/m15dt8blue/img/39731512099677.jpg b/skin/m15dt8blue/img/39731512099677.jpg
new file mode 100644
index 0000000..e7cbcce
Binary files /dev/null and b/skin/m15dt8blue/img/39731512099677.jpg differ
diff --git a/skin/m15dt8blue/img/3F.png b/skin/m15dt8blue/img/3F.png
new file mode 100644
index 0000000..98b1a56
Binary files /dev/null and b/skin/m15dt8blue/img/3F.png differ
diff --git a/skin/m15dt8blue/img/3Fad02.jpg b/skin/m15dt8blue/img/3Fad02.jpg
new file mode 100644
index 0000000..798da2f
Binary files /dev/null and b/skin/m15dt8blue/img/3Fad02.jpg differ
diff --git a/skin/m15dt8blue/img/3Fad03.jpg b/skin/m15dt8blue/img/3Fad03.jpg
new file mode 100644
index 0000000..62ce440
Binary files /dev/null and b/skin/m15dt8blue/img/3Fad03.jpg differ
diff --git a/skin/m15dt8blue/img/4132114_299033285.png b/skin/m15dt8blue/img/4132114_299033285.png
new file mode 100644
index 0000000..460fb73
Binary files /dev/null and b/skin/m15dt8blue/img/4132114_299033285.png differ
diff --git a/skin/m15dt8blue/img/4F.png b/skin/m15dt8blue/img/4F.png
new file mode 100644
index 0000000..591f395
Binary files /dev/null and b/skin/m15dt8blue/img/4F.png differ
diff --git a/skin/m15dt8blue/img/4Fad01.jpg b/skin/m15dt8blue/img/4Fad01.jpg
new file mode 100644
index 0000000..863c4fd
Binary files /dev/null and b/skin/m15dt8blue/img/4Fad01.jpg differ
diff --git a/skin/m15dt8blue/img/4Fad02.jpg b/skin/m15dt8blue/img/4Fad02.jpg
new file mode 100644
index 0000000..ac129f3
Binary files /dev/null and b/skin/m15dt8blue/img/4Fad02.jpg differ
diff --git a/skin/m15dt8blue/img/4Fad03.jpg b/skin/m15dt8blue/img/4Fad03.jpg
new file mode 100644
index 0000000..d613d2d
Binary files /dev/null and b/skin/m15dt8blue/img/4Fad03.jpg differ
diff --git a/skin/m15dt8blue/img/5494604510844234074_pic1.jpg b/skin/m15dt8blue/img/5494604510844234074_pic1.jpg
new file mode 100644
index 0000000..cfd8c90
Binary files /dev/null and b/skin/m15dt8blue/img/5494604510844234074_pic1.jpg differ
diff --git a/skin/m15dt8blue/img/561999.jpg b/skin/m15dt8blue/img/561999.jpg
new file mode 100644
index 0000000..16d3ff2
Binary files /dev/null and b/skin/m15dt8blue/img/561999.jpg differ
diff --git a/skin/m15dt8blue/img/5653392934629268198_pic1.jpg b/skin/m15dt8blue/img/5653392934629268198_pic1.jpg
new file mode 100644
index 0000000..a2ead44
Binary files /dev/null and b/skin/m15dt8blue/img/5653392934629268198_pic1.jpg differ
diff --git a/skin/m15dt8blue/img/5926267_1350441278.png b/skin/m15dt8blue/img/5926267_1350441278.png
new file mode 100644
index 0000000..9a9d934
Binary files /dev/null and b/skin/m15dt8blue/img/5926267_1350441278.png differ
diff --git a/skin/m15dt8blue/img/5F.png b/skin/m15dt8blue/img/5F.png
new file mode 100644
index 0000000..11c962f
Binary files /dev/null and b/skin/m15dt8blue/img/5F.png differ
diff --git a/skin/m15dt8blue/img/5Fad02.jpg b/skin/m15dt8blue/img/5Fad02.jpg
new file mode 100644
index 0000000..1211af9
Binary files /dev/null and b/skin/m15dt8blue/img/5Fad02.jpg differ
diff --git a/skin/m15dt8blue/img/5Fad03.jpg b/skin/m15dt8blue/img/5Fad03.jpg
new file mode 100644
index 0000000..c90b91d
Binary files /dev/null and b/skin/m15dt8blue/img/5Fad03.jpg differ
diff --git a/skin/m15dt8blue/img/63571530176033.jpg b/skin/m15dt8blue/img/63571530176033.jpg
new file mode 100644
index 0000000..412dbd5
Binary files /dev/null and b/skin/m15dt8blue/img/63571530176033.jpg differ
diff --git a/skin/m15dt8blue/img/674906.jpg b/skin/m15dt8blue/img/674906.jpg
new file mode 100644
index 0000000..aaa9829
Binary files /dev/null and b/skin/m15dt8blue/img/674906.jpg differ
diff --git a/skin/m15dt8blue/img/693479.jpg b/skin/m15dt8blue/img/693479.jpg
new file mode 100644
index 0000000..4912a14
Binary files /dev/null and b/skin/m15dt8blue/img/693479.jpg differ
diff --git a/skin/m15dt8blue/img/6F.png b/skin/m15dt8blue/img/6F.png
new file mode 100644
index 0000000..50b2bd1
Binary files /dev/null and b/skin/m15dt8blue/img/6F.png differ
diff --git a/skin/m15dt8blue/img/6Fad01.jpg b/skin/m15dt8blue/img/6Fad01.jpg
new file mode 100644
index 0000000..ff33469
Binary files /dev/null and b/skin/m15dt8blue/img/6Fad01.jpg differ
diff --git a/skin/m15dt8blue/img/6Fad02.jpg b/skin/m15dt8blue/img/6Fad02.jpg
new file mode 100644
index 0000000..b822b21
Binary files /dev/null and b/skin/m15dt8blue/img/6Fad02.jpg differ
diff --git a/skin/m15dt8blue/img/6f9c2f7f1711770536131e9115dc9a4f9beeac33.png b/skin/m15dt8blue/img/6f9c2f7f1711770536131e9115dc9a4f9beeac33.png
new file mode 100644
index 0000000..4866c61
Binary files /dev/null and b/skin/m15dt8blue/img/6f9c2f7f1711770536131e9115dc9a4f9beeac33.png differ
diff --git a/skin/m15dt8blue/img/711679.jpg b/skin/m15dt8blue/img/711679.jpg
new file mode 100644
index 0000000..dfb2c29
Binary files /dev/null and b/skin/m15dt8blue/img/711679.jpg differ
diff --git a/skin/m15dt8blue/img/79511450146211.jpg b/skin/m15dt8blue/img/79511450146211.jpg
new file mode 100644
index 0000000..13b0f09
Binary files /dev/null and b/skin/m15dt8blue/img/79511450146211.jpg differ
diff --git a/skin/m15dt8blue/img/8533809926_839916059.jpg b/skin/m15dt8blue/img/8533809926_839916059.jpg
new file mode 100644
index 0000000..f45f039
Binary files /dev/null and b/skin/m15dt8blue/img/8533809926_839916059.jpg differ
diff --git a/skin/m15dt8blue/img/89021467881044.jpg b/skin/m15dt8blue/img/89021467881044.jpg
new file mode 100644
index 0000000..8e2cd44
Binary files /dev/null and b/skin/m15dt8blue/img/89021467881044.jpg differ
diff --git a/skin/m15dt8blue/img/AcWXr6a4R5kRKWZbNDMcx8zkHrmfXCe7 (1).jpg b/skin/m15dt8blue/img/AcWXr6a4R5kRKWZbNDMcx8zkHrmfXCe7 (1).jpg
new file mode 100644
index 0000000..9d6c3d6
Binary files /dev/null and b/skin/m15dt8blue/img/AcWXr6a4R5kRKWZbNDMcx8zkHrmfXCe7 (1).jpg differ
diff --git a/skin/m15dt8blue/img/ChsEnl16Dv2AMWe7AABUSz-5q30714.jpg b/skin/m15dt8blue/img/ChsEnl16Dv2AMWe7AABUSz-5q30714.jpg
new file mode 100644
index 0000000..f2c16c5
Binary files /dev/null and b/skin/m15dt8blue/img/ChsEnl16Dv2AMWe7AABUSz-5q30714.jpg differ
diff --git a/skin/m15dt8blue/img/O1CN011RILQvlxClQ7jk7_!!3121922088.jpg b/skin/m15dt8blue/img/O1CN011RILQvlxClQ7jk7_!!3121922088.jpg
new file mode 100644
index 0000000..75c200e
Binary files /dev/null and b/skin/m15dt8blue/img/O1CN011RILQvlxClQ7jk7_!!3121922088.jpg differ
diff --git a/skin/m15dt8blue/img/TB1CkR5nVzqK1RjSZSgXXcpAVXa-20-25.jpg b/skin/m15dt8blue/img/TB1CkR5nVzqK1RjSZSgXXcpAVXa-20-25.jpg
new file mode 100644
index 0000000..5faf695
Binary files /dev/null and b/skin/m15dt8blue/img/TB1CkR5nVzqK1RjSZSgXXcpAVXa-20-25.jpg differ
diff --git a/skin/m15dt8blue/img/TB1EEibnHPpK1RjSZFFXXa5PpXa-18-21.png b/skin/m15dt8blue/img/TB1EEibnHPpK1RjSZFFXXa5PpXa-18-21.png
new file mode 100644
index 0000000..f09cd56
Binary files /dev/null and b/skin/m15dt8blue/img/TB1EEibnHPpK1RjSZFFXXa5PpXa-18-21.png differ
diff --git a/skin/m15dt8blue/img/TB1H7BuCa6qK1RjSZFmXXX0PFXa-370-200.png b/skin/m15dt8blue/img/TB1H7BuCa6qK1RjSZFmXXX0PFXa-370-200.png
new file mode 100644
index 0000000..897d610
Binary files /dev/null and b/skin/m15dt8blue/img/TB1H7BuCa6qK1RjSZFmXXX0PFXa-370-200.png differ
diff --git a/skin/m15dt8blue/img/TB1SXX6n9zqK1RjSZFjXXblCFXa-49-49.jpg b/skin/m15dt8blue/img/TB1SXX6n9zqK1RjSZFjXXblCFXa-49-49.jpg
new file mode 100644
index 0000000..dfdb390
Binary files /dev/null and b/skin/m15dt8blue/img/TB1SXX6n9zqK1RjSZFjXXblCFXa-49-49.jpg differ
diff --git a/skin/m15dt8blue/img/TB1Zz6FUhYaK1RjSZFnXXa80pXa-460-800.png b/skin/m15dt8blue/img/TB1Zz6FUhYaK1RjSZFnXXa80pXa-460-800.png
new file mode 100644
index 0000000..2dcd7e5
Binary files /dev/null and b/skin/m15dt8blue/img/TB1Zz6FUhYaK1RjSZFnXXa80pXa-460-800.png differ
diff --git a/skin/m15dt8blue/img/TB1gmR6hKH2gK0jSZFEXXcqMpXa-600-300.jpg b/skin/m15dt8blue/img/TB1gmR6hKH2gK0jSZFEXXcqMpXa-600-300.jpg
new file mode 100644
index 0000000..ea986bb
Binary files /dev/null and b/skin/m15dt8blue/img/TB1gmR6hKH2gK0jSZFEXXcqMpXa-600-300.jpg differ
diff --git a/skin/m15dt8blue/img/TB1uSrQB1uSBuNjy1XcXXcYjFXa-1500-70.png b/skin/m15dt8blue/img/TB1uSrQB1uSBuNjy1XcXXcYjFXa-1500-70.png
new file mode 100644
index 0000000..cd64389
Binary files /dev/null and b/skin/m15dt8blue/img/TB1uSrQB1uSBuNjy1XcXXcYjFXa-1500-70.png differ
diff --git a/skin/m15dt8blue/img/ab-hide-on.png b/skin/m15dt8blue/img/ab-hide-on.png
new file mode 100644
index 0000000..c305335
Binary files /dev/null and b/skin/m15dt8blue/img/ab-hide-on.png differ
diff --git a/skin/m15dt8blue/img/ab-play-on.png b/skin/m15dt8blue/img/ab-play-on.png
new file mode 100644
index 0000000..fd609a7
Binary files /dev/null and b/skin/m15dt8blue/img/ab-play-on.png differ
diff --git a/skin/m15dt8blue/img/ab-play.png b/skin/m15dt8blue/img/ab-play.png
new file mode 100644
index 0000000..ffecf9a
Binary files /dev/null and b/skin/m15dt8blue/img/ab-play.png differ
diff --git a/skin/m15dt8blue/img/ad2.jpg b/skin/m15dt8blue/img/ad2.jpg
new file mode 100644
index 0000000..383478d
Binary files /dev/null and b/skin/m15dt8blue/img/ad2.jpg differ
diff --git a/skin/m15dt8blue/img/ad3.jpg b/skin/m15dt8blue/img/ad3.jpg
new file mode 100644
index 0000000..bddc5f3
Binary files /dev/null and b/skin/m15dt8blue/img/ad3.jpg differ
diff --git a/skin/m15dt8blue/img/add16.png b/skin/m15dt8blue/img/add16.png
new file mode 100644
index 0000000..dae575b
Binary files /dev/null and b/skin/m15dt8blue/img/add16.png differ
diff --git a/skin/m15dt8blue/img/adword_bg.gif b/skin/m15dt8blue/img/adword_bg.gif
new file mode 100644
index 0000000..8d02329
Binary files /dev/null and b/skin/m15dt8blue/img/adword_bg.gif differ
diff --git a/skin/m15dt8blue/img/ar.gif b/skin/m15dt8blue/img/ar.gif
new file mode 100644
index 0000000..4422002
Binary files /dev/null and b/skin/m15dt8blue/img/ar.gif differ
diff --git a/skin/m15dt8blue/img/arrow.gif b/skin/m15dt8blue/img/arrow.gif
new file mode 100644
index 0000000..21faa0a
Binary files /dev/null and b/skin/m15dt8blue/img/arrow.gif differ
diff --git a/skin/m15dt8blue/img/arrow.png b/skin/m15dt8blue/img/arrow.png
new file mode 100644
index 0000000..a735f67
Binary files /dev/null and b/skin/m15dt8blue/img/arrow.png differ
diff --git a/skin/m15dt8blue/img/arrow_l.png b/skin/m15dt8blue/img/arrow_l.png
new file mode 100644
index 0000000..b648fb9
Binary files /dev/null and b/skin/m15dt8blue/img/arrow_l.png differ
diff --git a/skin/m15dt8blue/img/arrow_r.png b/skin/m15dt8blue/img/arrow_r.png
new file mode 100644
index 0000000..d13e5bd
Binary files /dev/null and b/skin/m15dt8blue/img/arrow_r.png differ
diff --git a/skin/m15dt8blue/img/arrow_up.gif b/skin/m15dt8blue/img/arrow_up.gif
new file mode 100644
index 0000000..3c9e01c
Binary files /dev/null and b/skin/m15dt8blue/img/arrow_up.gif differ
diff --git a/skin/m15dt8blue/img/b-bg.png b/skin/m15dt8blue/img/b-bg.png
new file mode 100644
index 0000000..f2f2a15
Binary files /dev/null and b/skin/m15dt8blue/img/b-bg.png differ
diff --git a/skin/m15dt8blue/img/bac363.jpg b/skin/m15dt8blue/img/bac363.jpg
new file mode 100644
index 0000000..0cd0a0a
Binary files /dev/null and b/skin/m15dt8blue/img/bac363.jpg differ
diff --git a/skin/m15dt8blue/img/backtop.png b/skin/m15dt8blue/img/backtop.png
new file mode 100644
index 0000000..19b6b8a
Binary files /dev/null and b/skin/m15dt8blue/img/backtop.png differ
diff --git a/skin/m15dt8blue/img/banner_b.jpg b/skin/m15dt8blue/img/banner_b.jpg
new file mode 100644
index 0000000..65fd6d4
Binary files /dev/null and b/skin/m15dt8blue/img/banner_b.jpg differ
diff --git a/skin/m15dt8blue/img/bar_gray.png b/skin/m15dt8blue/img/bar_gray.png
new file mode 100644
index 0000000..102843e
Binary files /dev/null and b/skin/m15dt8blue/img/bar_gray.png differ
diff --git a/skin/m15dt8blue/img/bg-slide.png b/skin/m15dt8blue/img/bg-slide.png
new file mode 100644
index 0000000..73d0771
Binary files /dev/null and b/skin/m15dt8blue/img/bg-slide.png differ
diff --git a/skin/m15dt8blue/img/bg060p.png b/skin/m15dt8blue/img/bg060p.png
new file mode 100644
index 0000000..61fcab9
Binary files /dev/null and b/skin/m15dt8blue/img/bg060p.png differ
diff --git a/skin/m15dt8blue/img/bj.png b/skin/m15dt8blue/img/bj.png
new file mode 100644
index 0000000..0f15478
Binary files /dev/null and b/skin/m15dt8blue/img/bj.png differ
diff --git a/skin/m15dt8blue/img/black.4.png b/skin/m15dt8blue/img/black.4.png
new file mode 100644
index 0000000..e8d591f
Binary files /dev/null and b/skin/m15dt8blue/img/black.4.png differ
diff --git a/skin/m15dt8blue/img/brandAd.jpg b/skin/m15dt8blue/img/brandAd.jpg
new file mode 100644
index 0000000..6eaa0b3
Binary files /dev/null and b/skin/m15dt8blue/img/brandAd.jpg differ
diff --git a/skin/m15dt8blue/img/button_111.gif b/skin/m15dt8blue/img/button_111.gif
new file mode 100644
index 0000000..f69a28f
Binary files /dev/null and b/skin/m15dt8blue/img/button_111.gif differ
diff --git a/skin/m15dt8blue/img/buyF.png b/skin/m15dt8blue/img/buyF.png
new file mode 100644
index 0000000..a58e971
Binary files /dev/null and b/skin/m15dt8blue/img/buyF.png differ
diff --git a/skin/m15dt8blue/img/c2.png b/skin/m15dt8blue/img/c2.png
new file mode 100644
index 0000000..9384f93
Binary files /dev/null and b/skin/m15dt8blue/img/c2.png differ
diff --git a/skin/m15dt8blue/img/c99b95e.png b/skin/m15dt8blue/img/c99b95e.png
new file mode 100644
index 0000000..aa7bae2
Binary files /dev/null and b/skin/m15dt8blue/img/c99b95e.png differ
diff --git a/skin/m15dt8blue/img/car-details.png b/skin/m15dt8blue/img/car-details.png
new file mode 100644
index 0000000..f2cb272
Binary files /dev/null and b/skin/m15dt8blue/img/car-details.png differ
diff --git a/skin/m15dt8blue/img/cart.jpg b/skin/m15dt8blue/img/cart.jpg
new file mode 100644
index 0000000..44a4915
Binary files /dev/null and b/skin/m15dt8blue/img/cart.jpg differ
diff --git a/skin/m15dt8blue/img/ccwpa.png b/skin/m15dt8blue/img/ccwpa.png
new file mode 100644
index 0000000..2b55c88
Binary files /dev/null and b/skin/m15dt8blue/img/ccwpa.png differ
diff --git a/skin/m15dt8blue/img/cdx-vip-003.jpg b/skin/m15dt8blue/img/cdx-vip-003.jpg
new file mode 100644
index 0000000..3d68588
Binary files /dev/null and b/skin/m15dt8blue/img/cdx-vip-003.jpg differ
diff --git a/skin/m15dt8blue/img/cdx-vip-icon-0002.png b/skin/m15dt8blue/img/cdx-vip-icon-0002.png
new file mode 100644
index 0000000..ec33711
Binary files /dev/null and b/skin/m15dt8blue/img/cdx-vip-icon-0002.png differ
diff --git a/skin/m15dt8blue/img/cdx-vip-icon.png b/skin/m15dt8blue/img/cdx-vip-icon.png
new file mode 100644
index 0000000..193e3e7
Binary files /dev/null and b/skin/m15dt8blue/img/cdx-vip-icon.png differ
diff --git a/skin/m15dt8blue/img/cdx-vip.jpg b/skin/m15dt8blue/img/cdx-vip.jpg
new file mode 100644
index 0000000..19d0ee7
Binary files /dev/null and b/skin/m15dt8blue/img/cdx-vip.jpg differ
diff --git a/skin/m15dt8blue/img/cdxhf0003.jpg b/skin/m15dt8blue/img/cdxhf0003.jpg
new file mode 100644
index 0000000..a31503f
Binary files /dev/null and b/skin/m15dt8blue/img/cdxhf0003.jpg differ
diff --git a/skin/m15dt8blue/img/cdxhyzx01.png b/skin/m15dt8blue/img/cdxhyzx01.png
new file mode 100644
index 0000000..8e8ccbf
Binary files /dev/null and b/skin/m15dt8blue/img/cdxhyzx01.png differ
diff --git a/skin/m15dt8blue/img/centerbg.png b/skin/m15dt8blue/img/centerbg.png
new file mode 100644
index 0000000..9b43439
Binary files /dev/null and b/skin/m15dt8blue/img/centerbg.png differ
diff --git a/skin/m15dt8blue/img/cert.png b/skin/m15dt8blue/img/cert.png
new file mode 100644
index 0000000..03a44f8
Binary files /dev/null and b/skin/m15dt8blue/img/cert.png differ
diff --git a/skin/m15dt8blue/img/chandibao.png b/skin/m15dt8blue/img/chandibao.png
new file mode 100644
index 0000000..8884e2f
Binary files /dev/null and b/skin/m15dt8blue/img/chandibao.png differ
diff --git a/skin/m15dt8blue/img/close.gif b/skin/m15dt8blue/img/close.gif
new file mode 100644
index 0000000..c5a205d
Binary files /dev/null and b/skin/m15dt8blue/img/close.gif differ
diff --git a/skin/m15dt8blue/img/cpxq_33.jpg b/skin/m15dt8blue/img/cpxq_33.jpg
new file mode 100644
index 0000000..3787f95
Binary files /dev/null and b/skin/m15dt8blue/img/cpxq_33.jpg differ
diff --git a/skin/m15dt8blue/img/cpxq_37.jpg b/skin/m15dt8blue/img/cpxq_37.jpg
new file mode 100644
index 0000000..ecb0b5f
Binary files /dev/null and b/skin/m15dt8blue/img/cpxq_37.jpg differ
diff --git a/skin/m15dt8blue/img/datail.png b/skin/m15dt8blue/img/datail.png
new file mode 100644
index 0000000..ed070db
Binary files /dev/null and b/skin/m15dt8blue/img/datail.png differ
diff --git a/skin/m15dt8blue/img/deb95aba65bd15d461f09e7ceca03c49.png b/skin/m15dt8blue/img/deb95aba65bd15d461f09e7ceca03c49.png
new file mode 100644
index 0000000..cf717b4
Binary files /dev/null and b/skin/m15dt8blue/img/deb95aba65bd15d461f09e7ceca03c49.png differ
diff --git a/skin/m15dt8blue/img/default_exhibit.png b/skin/m15dt8blue/img/default_exhibit.png
new file mode 100644
index 0000000..3c19c80
Binary files /dev/null and b/skin/m15dt8blue/img/default_exhibit.png differ
diff --git a/skin/m15dt8blue/img/dp-icon.png b/skin/m15dt8blue/img/dp-icon.png
new file mode 100644
index 0000000..91d3a9c
Binary files /dev/null and b/skin/m15dt8blue/img/dp-icon.png differ
diff --git a/skin/m15dt8blue/img/dsj.jpg b/skin/m15dt8blue/img/dsj.jpg
new file mode 100644
index 0000000..5516f55
Binary files /dev/null and b/skin/m15dt8blue/img/dsj.jpg differ
diff --git a/skin/m15dt8blue/img/f2.jpg b/skin/m15dt8blue/img/f2.jpg
new file mode 100644
index 0000000..ab5f033
Binary files /dev/null and b/skin/m15dt8blue/img/f2.jpg differ
diff --git a/skin/m15dt8blue/img/f_001.png b/skin/m15dt8blue/img/f_001.png
new file mode 100644
index 0000000..32dd077
Binary files /dev/null and b/skin/m15dt8blue/img/f_001.png differ
diff --git a/skin/m15dt8blue/img/f_003.png b/skin/m15dt8blue/img/f_003.png
new file mode 100644
index 0000000..10c21df
Binary files /dev/null and b/skin/m15dt8blue/img/f_003.png differ
diff --git a/skin/m15dt8blue/img/f_004.png b/skin/m15dt8blue/img/f_004.png
new file mode 100644
index 0000000..609c526
Binary files /dev/null and b/skin/m15dt8blue/img/f_004.png differ
diff --git a/skin/m15dt8blue/img/f_006.png b/skin/m15dt8blue/img/f_006.png
new file mode 100644
index 0000000..af238fe
Binary files /dev/null and b/skin/m15dt8blue/img/f_006.png differ
diff --git a/skin/m15dt8blue/img/fl-icon.png b/skin/m15dt8blue/img/fl-icon.png
new file mode 100644
index 0000000..b6174ef
Binary files /dev/null and b/skin/m15dt8blue/img/fl-icon.png differ
diff --git a/skin/m15dt8blue/img/frm-box-bg-bottom.png b/skin/m15dt8blue/img/frm-box-bg-bottom.png
new file mode 100644
index 0000000..bdc3c7d
Binary files /dev/null and b/skin/m15dt8blue/img/frm-box-bg-bottom.png differ
diff --git a/skin/m15dt8blue/img/frm-box-bg-mid.png b/skin/m15dt8blue/img/frm-box-bg-mid.png
new file mode 100644
index 0000000..35deb7d
Binary files /dev/null and b/skin/m15dt8blue/img/frm-box-bg-mid.png differ
diff --git a/skin/m15dt8blue/img/frm-box-bg-top.png b/skin/m15dt8blue/img/frm-box-bg-top.png
new file mode 100644
index 0000000..8c2e1bc
Binary files /dev/null and b/skin/m15dt8blue/img/frm-box-bg-top.png differ
diff --git a/skin/m15dt8blue/img/frm-box-bg.png b/skin/m15dt8blue/img/frm-box-bg.png
new file mode 100644
index 0000000..80f6c9a
Binary files /dev/null and b/skin/m15dt8blue/img/frm-box-bg.png differ
diff --git a/skin/m15dt8blue/img/fsearch_bg.gif b/skin/m15dt8blue/img/fsearch_bg.gif
new file mode 100644
index 0000000..5cc6f61
Binary files /dev/null and b/skin/m15dt8blue/img/fsearch_bg.gif differ
diff --git a/skin/m15dt8blue/img/ft-carousel.js閸ュ墽澧栭弮鐘电闯鏉烆喗鎸遍崚鍥ㄥ床娴狅絿鐖_zip b/skin/m15dt8blue/img/ft-carousel.js閸ュ墽澧栭弮鐘电闯鏉烆喗鎸遍崚鍥ㄥ床娴狅絿鐖_zip
new file mode 100644
index 0000000..1ae0812
Binary files /dev/null and b/skin/m15dt8blue/img/ft-carousel.js閸ュ墽澧栭弮鐘电闯鏉烆喗鎸遍崚鍥ㄥ床娴狅絿鐖_zip differ
diff --git a/skin/m15dt8blue/img/full-banner3_077c6cd.jpg b/skin/m15dt8blue/img/full-banner3_077c6cd.jpg
new file mode 100644
index 0000000..a457943
Binary files /dev/null and b/skin/m15dt8blue/img/full-banner3_077c6cd.jpg differ
diff --git a/skin/m15dt8blue/img/fz.jpg b/skin/m15dt8blue/img/fz.jpg
new file mode 100644
index 0000000..6da9078
Binary files /dev/null and b/skin/m15dt8blue/img/fz.jpg differ
diff --git a/skin/m15dt8blue/img/g.png b/skin/m15dt8blue/img/g.png
new file mode 100644
index 0000000..12c0b5e
Binary files /dev/null and b/skin/m15dt8blue/img/g.png differ
diff --git a/skin/m15dt8blue/img/g1.png b/skin/m15dt8blue/img/g1.png
new file mode 100644
index 0000000..c6291d9
Binary files /dev/null and b/skin/m15dt8blue/img/g1.png differ
diff --git a/skin/m15dt8blue/img/global.png b/skin/m15dt8blue/img/global.png
new file mode 100644
index 0000000..07ce740
Binary files /dev/null and b/skin/m15dt8blue/img/global.png differ
diff --git a/skin/m15dt8blue/img/gs-icon.png b/skin/m15dt8blue/img/gs-icon.png
new file mode 100644
index 0000000..c382b48
Binary files /dev/null and b/skin/m15dt8blue/img/gs-icon.png differ
diff --git a/skin/m15dt8blue/img/gsrz.png b/skin/m15dt8blue/img/gsrz.png
new file mode 100644
index 0000000..935d385
Binary files /dev/null and b/skin/m15dt8blue/img/gsrz.png differ
diff --git a/skin/m15dt8blue/img/guanyu.jpg b/skin/m15dt8blue/img/guanyu.jpg
new file mode 100644
index 0000000..2b30390
Binary files /dev/null and b/skin/m15dt8blue/img/guanyu.jpg differ
diff --git a/skin/m15dt8blue/img/gwc.png b/skin/m15dt8blue/img/gwc.png
new file mode 100644
index 0000000..029d768
Binary files /dev/null and b/skin/m15dt8blue/img/gwc.png differ
diff --git a/skin/m15dt8blue/img/gzh.png b/skin/m15dt8blue/img/gzh.png
new file mode 100644
index 0000000..be0d33f
Binary files /dev/null and b/skin/m15dt8blue/img/gzh.png differ
diff --git a/skin/m15dt8blue/img/hb.png b/skin/m15dt8blue/img/hb.png
new file mode 100644
index 0000000..e86cdde
Binary files /dev/null and b/skin/m15dt8blue/img/hb.png differ
diff --git a/skin/m15dt8blue/img/header_icon.png b/skin/m15dt8blue/img/header_icon.png
new file mode 100644
index 0000000..2a3ebbf
Binary files /dev/null and b/skin/m15dt8blue/img/header_icon.png differ
diff --git a/skin/m15dt8blue/img/home.png b/skin/m15dt8blue/img/home.png
new file mode 100644
index 0000000..b8cb98e
Binary files /dev/null and b/skin/m15dt8blue/img/home.png differ
diff --git a/skin/m15dt8blue/img/home_nav_7@1x.png b/skin/m15dt8blue/img/home_nav_7@1x.png
new file mode 100644
index 0000000..b1ddf96
Binary files /dev/null and b/skin/m15dt8blue/img/home_nav_7@1x.png differ
diff --git a/skin/m15dt8blue/img/hot-b.png b/skin/m15dt8blue/img/hot-b.png
new file mode 100644
index 0000000..a337d0a
Binary files /dev/null and b/skin/m15dt8blue/img/hot-b.png differ
diff --git a/skin/m15dt8blue/img/hot-sale.jpg b/skin/m15dt8blue/img/hot-sale.jpg
new file mode 100644
index 0000000..6c75a28
Binary files /dev/null and b/skin/m15dt8blue/img/hot-sale.jpg differ
diff --git a/skin/m15dt8blue/img/hot0.png b/skin/m15dt8blue/img/hot0.png
new file mode 100644
index 0000000..39e270c
Binary files /dev/null and b/skin/m15dt8blue/img/hot0.png differ
diff --git a/skin/m15dt8blue/img/hot1.png b/skin/m15dt8blue/img/hot1.png
new file mode 100644
index 0000000..28bbea8
Binary files /dev/null and b/skin/m15dt8blue/img/hot1.png differ
diff --git a/skin/m15dt8blue/img/hyjm.png b/skin/m15dt8blue/img/hyjm.png
new file mode 100644
index 0000000..e8a97e2
Binary files /dev/null and b/skin/m15dt8blue/img/hyjm.png differ
diff --git a/skin/m15dt8blue/img/i2.png b/skin/m15dt8blue/img/i2.png
new file mode 100644
index 0000000..6df6ade
Binary files /dev/null and b/skin/m15dt8blue/img/i2.png differ
diff --git a/skin/m15dt8blue/img/i3.png b/skin/m15dt8blue/img/i3.png
new file mode 100644
index 0000000..943ec55
Binary files /dev/null and b/skin/m15dt8blue/img/i3.png differ
diff --git a/skin/m15dt8blue/img/i5.jpg b/skin/m15dt8blue/img/i5.jpg
new file mode 100644
index 0000000..d5de5f8
Binary files /dev/null and b/skin/m15dt8blue/img/i5.jpg differ
diff --git a/skin/m15dt8blue/img/ico-cart.png b/skin/m15dt8blue/img/ico-cart.png
new file mode 100644
index 0000000..bf5b701
Binary files /dev/null and b/skin/m15dt8blue/img/ico-cart.png differ
diff --git a/skin/m15dt8blue/img/ico-mobile.png b/skin/m15dt8blue/img/ico-mobile.png
new file mode 100644
index 0000000..ed29510
Binary files /dev/null and b/skin/m15dt8blue/img/ico-mobile.png differ
diff --git a/skin/m15dt8blue/img/ico-nav.png b/skin/m15dt8blue/img/ico-nav.png
new file mode 100644
index 0000000..677edfb
Binary files /dev/null and b/skin/m15dt8blue/img/ico-nav.png differ
diff --git a/skin/m15dt8blue/img/ico-user.png b/skin/m15dt8blue/img/ico-user.png
new file mode 100644
index 0000000..17b7fbd
Binary files /dev/null and b/skin/m15dt8blue/img/ico-user.png differ
diff --git a/skin/m15dt8blue/img/ico21.png b/skin/m15dt8blue/img/ico21.png
new file mode 100644
index 0000000..52c2233
Binary files /dev/null and b/skin/m15dt8blue/img/ico21.png differ
diff --git a/skin/m15dt8blue/img/ico22.png b/skin/m15dt8blue/img/ico22.png
new file mode 100644
index 0000000..6fc65a1
Binary files /dev/null and b/skin/m15dt8blue/img/ico22.png differ
diff --git a/skin/m15dt8blue/img/ico_search.gif b/skin/m15dt8blue/img/ico_search.gif
new file mode 100644
index 0000000..79f6720
Binary files /dev/null and b/skin/m15dt8blue/img/ico_search.gif differ
diff --git a/skin/m15dt8blue/img/icon-aflow-1.png b/skin/m15dt8blue/img/icon-aflow-1.png
new file mode 100644
index 0000000..14921db
Binary files /dev/null and b/skin/m15dt8blue/img/icon-aflow-1.png differ
diff --git a/skin/m15dt8blue/img/icon-c.png b/skin/m15dt8blue/img/icon-c.png
new file mode 100644
index 0000000..83dc0aa
Binary files /dev/null and b/skin/m15dt8blue/img/icon-c.png differ
diff --git a/skin/m15dt8blue/img/icon-recommend.png b/skin/m15dt8blue/img/icon-recommend.png
new file mode 100644
index 0000000..e9ffcbf
Binary files /dev/null and b/skin/m15dt8blue/img/icon-recommend.png differ
diff --git a/skin/m15dt8blue/img/icon-search16.png b/skin/m15dt8blue/img/icon-search16.png
new file mode 100644
index 0000000..7e68b82
Binary files /dev/null and b/skin/m15dt8blue/img/icon-search16.png differ
diff --git a/skin/m15dt8blue/img/icon2.png b/skin/m15dt8blue/img/icon2.png
new file mode 100644
index 0000000..669ec68
Binary files /dev/null and b/skin/m15dt8blue/img/icon2.png differ
diff --git a/skin/m15dt8blue/img/icon_ebs.png b/skin/m15dt8blue/img/icon_ebs.png
new file mode 100644
index 0000000..6068069
Binary files /dev/null and b/skin/m15dt8blue/img/icon_ebs.png differ
diff --git a/skin/m15dt8blue/img/icons-s.png b/skin/m15dt8blue/img/icons-s.png
new file mode 100644
index 0000000..a8cfde0
Binary files /dev/null and b/skin/m15dt8blue/img/icons-s.png differ
diff --git a/skin/m15dt8blue/img/icsB2ZsSKMMYZDy7rwdcP65bb3K84edX (1).jpg b/skin/m15dt8blue/img/icsB2ZsSKMMYZDy7rwdcP65bb3K84edX (1).jpg
new file mode 100644
index 0000000..6c175cd
Binary files /dev/null and b/skin/m15dt8blue/img/icsB2ZsSKMMYZDy7rwdcP65bb3K84edX (1).jpg differ
diff --git a/skin/m15dt8blue/img/icsB2ZsSKMMYZDy7rwdcP65bb3K84edX.jpg b/skin/m15dt8blue/img/icsB2ZsSKMMYZDy7rwdcP65bb3K84edX.jpg
new file mode 100644
index 0000000..6c175cd
Binary files /dev/null and b/skin/m15dt8blue/img/icsB2ZsSKMMYZDy7rwdcP65bb3K84edX.jpg differ
diff --git a/skin/m15dt8blue/img/index-icon.png b/skin/m15dt8blue/img/index-icon.png
new file mode 100644
index 0000000..c3b7ad7
Binary files /dev/null and b/skin/m15dt8blue/img/index-icon.png differ
diff --git a/skin/m15dt8blue/img/index.css b/skin/m15dt8blue/img/index.css
new file mode 100644
index 0000000..7139478
--- /dev/null
+++ b/skin/m15dt8blue/img/index.css
@@ -0,0 +1,404 @@
+.f-screen .left {width:168px;height:545px;border-top:0px;float:left;vertical-align:top; background:white;border:#e3e3e3 1px solid;border-top:none}
+.f-screen .left li {display:block;width:168px;height:38px;clear:both;font-size:14px;position:relative;z-index:3;vertical-align:top;}
+.f-screen .left li i {width:8px;height:38px;display:block;background:url(img/mcatarrow.gif) no-repeat;overflow:hidden;position:absolute;z-index:3;top:0px;right:-1px;}
+.f-screen .left li p {display:block;position:absolute;z-index:2;padding:22px 18px 20px 18px;line-height:28px;font-size:12px;top:0px;left:168px;border:1px solid #fe500b;width:245px;background:#FFF;}
+.f-screen .left li p a {padding:0 10px 0 10px;display:inline-block;}
+.f-screen .left li i,.f-screen .left li p {display:none;}
+.f-screen .left li:hover i,.f-screen .left li:hover p {display:block;}
+.f-screen .left li a.mcat1 {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat 33px 11px white;}
+.f-screen .left li a.mcat2 {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat 33px -27px white;}
+.f-screen .left li a.mcat3 {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat 33px -65px white;}
+.f-screen .left li a.mcat4 {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat 33px -103px white;}
+.f-screen .left li a.mcat5 {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat 33px -141px white;}
+.f-screen .left li a.mcat6 {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat 33px -179px white;}
+.f-screen .left li a.mcat7 {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat 33px -217px white;}
+.f-screen .left li a.mcat8 {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat 33px -255px white;}
+.f-screen .left li a.mcat9 {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat 33px -293px white;}
+.f-screen .left li a.mcat10 {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat 33px -331px white;}
+.f-screen .left li a.mcat11 {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat 33px -369px white;}
+.f-screen .left li a.mcat12 {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat 33px -407px white;}
+.f-screen .left li a.mcat13 {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat 33px -445px white;}
+.f-screen .left li a.mcat14 {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat 33px -483px white;}
+.f-screen .left li:hover a.mcat1,.f-screen .left li a.mcat1:hover {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat -167px 11px #FF500B;color:#FFF;}
+.f-screen .left li:hover a.mcat2,.f-screen .left li a.mcat2:hover {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat -167px -27px #FF500B;color:#FFF;}
+.f-screen .left li:hover a.mcat3,.f-screen .left li a.mcat3:hover {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat -167px -65px #FF500B;color:#FFF;}
+.f-screen .left li:hover a.mcat4,.f-screen .left li a.mcat4:hover {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat -167px -103px #FF500B;color:#FFF;}
+.f-screen .left li:hover a.mcat5,.f-screen .left li a.mcat5:hover {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat -167px -141px #FF500B;color:#FFF;}
+.f-screen .left li:hover a.mcat6,.f-screen .left li a.mcat6:hover {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat -167px -179px #FF500B;color:#FFF;}
+.f-screen .left li:hover a.mcat7,.f-screen .left li a.mcat7:hover {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat -167px -217px #FF500B;color:#FFF;}
+.f-screen .left li:hover a.mcat8,.f-screen .left li a.mcat8:hover {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat -167px -255px #FF500B;color:#FFF;}
+.f-screen .left li:hover a.mcat9,.f-screen .left li a.mcat9:hover {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat -167px -293px #FF500B;color:#FFF;}
+.f-screen .left li:hover a.mcat10,.f-screen .left li a.mcat10:hover {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat -167px -331px #FF500B;color:#FFF;}
+.f-screen .left li:hover a.mcat11,.f-screen .left li a.mcat11:hover {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat -167px -369px #FF500B;color:#FFF;}
+.f-screen .left li:hover a.mcat12,.f-screen .left li a.mcat12:hover {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat -167px -407px #FF500B;color:#FFF;}
+.f-screen .left li:hover a.mcat13,.f-screen .left li a.mcat13:hover {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat -167px -445px #FF500B;color:#FFF;}
+.f-screen .left li:hover a.mcat14,.f-screen .left li a.mcat14:hover {display:block;height:38px;font-size:14px;color:#333;line-height:38px;padding-left:58px;background:url(img/mcatbg.png) no-repeat -167px -483px #FF500B;color:#FFF;}
+
+.f-screen .middle {width:806px;float:left;margin-left:10px;margin-top:10px;overflow:hidden}
+
+.f-screen .right{width:202px;float:right;overflow:hidden;background:white;border:#e3e3e3 1px solid;border-top:none;height:545px}
+
+.mcml2 {clear:both;overflow:hidden;margin-top:8px;margin-left:-2px;}
+.mcml2 li {display:block;width:200px;height:90px;overflow:hidden;float:left;margin-left:2px;margin-top:2px;}
+.mcml2 li img{width:200px;height:90px;}
+.mcml2 li em {display:block;width:200px;height:90px;overflow:hidden;}
+.mcml2 li i {display:block;width:200px;height:90px;overflow:hidden;position:absolute;left:0px;top:0px;}
+.mcml2 li a {cursor:pointer;position:relative;z-index:2;width:200px;height:90px;overflow:hidden;display:block;}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.b15{display:none}
+
+.mcr1 {padding-top:15px;height:69px;text-align:center;}
+
+.mcr3 {clear:both;height:48px;vertical-align:top;margin-top:10px;}
+.mcr3 a.userlogin {width:66px;display:block;float:left;line-height:48px;padding-left:35px;height:48px;background:#eee url(img/loginbtn.gif) no-repeat 12px 0;color:#FF500B;}
+.mcr3 a.userlogin:hover { background:#E2E2E2 url(img/loginbtn.gif) no-repeat 12px -48px;color:#fd2a05;}
+.mcr3 a.userreg {width:66px;display:block;float:left;line-height:48px;padding-left:35px;height:48px;background:#eee url(img/loginbtn.gif) no-repeat -89px top;color:#FF500B;}
+.mcr3 a.userreg:hover { background:#E2E2E2 url(img/loginbtn.gif) no-repeat -89px -48px;color:#fd2a05;}
+
+.mcr4 {clear:both;overflow:hidden;padding-top:15px;vertical-align:top;}
+.mcr4 li {display:block;clear:both;height:44px;}
+.mcr4 li a{border-radius:4px}
+.mcr4 li.mcr41 a {display:block;width:150px;height:34px;line-height:34px;text-align:center;color:#FFF;font-size:14px;background:#FB0D1D;margin:0 auto;}
+.mcr4 li.mcr41 a:hover { background:#FE500B;color:#FFF;}
+.mcr4 li.mcr42 a {display:block;width:150px;height:34px;line-height:34px;text-align:center;color:#FFF;font-size:14px;background:#FB740D;margin:0 auto;}
+.mcr4 li.mcr42 a:hover { background:#FE980B;color:#FFF;}
+
+
+
+
+.member .btn-area{margin-top:15px;padding:0px 28px;}
+.member .btn-area>a{display: block;width: 60px;height:30px;line-height:30px;text-align: center;border:1px solid #1db3c9;color: #1db3c9;border-radius:3px;float:left
+}
+.member .btn-area>a:hover{
+ background-color:#1db3c9;borer:#1db3c9 1px solid
+}
+.wel{font-size:14px; text-align:center;padding:0px 0;}
+.wel p{line-height:25px}
+
+.hd ul li{height:23px;line-height:23px;padding:0px 20px;overflow:hidden}
+
+
+
+
+.hd .qc-head{clear:both;font-size:14px;line-height:30px;text-align:center;overflow:hidden}
+.hd .qc-head li{float:left;list-style-type:none;width:50%;font-weight:normal; cursor:pointer;border-bottom:#e2e2e2 1px solid}
+.hd .qc-head li.current{color:#ff5400;border-bottom:#ff5400 1px solid}
+.hd .qc-body dl{overflow:hidden;background:white;padding:8px 0px 0px;}
+
+.tz .qc-head{clear:both;font-size:14px;line-height:30px;text-align:center;overflow:hidden;background:#eee;margin-top:10px;}
+.tz .qc-head li{float:left;list-style-type:none;width:33%;font-weight:normal; cursor:pointer;border-bottom:#e2e2e2 1px solid}
+.tz .qc-head li.current{color:#ff5400;border-bottom:#ff5400 1px solid}
+.tz .qc-body dl{overflow:hidden;background:white;padding:15px 10px;}
+.tz .qc-body dl i {display:inline-block;height:18px;width:15px;font-weight:bold;font-size:14px;text-align:center;font-style:normal;border:1px solid #dcdcdc;margin:0 1px 0 1px;vertical-align:top;}
+
+.new-product .qc-head{clear:both;font-size:14px;height:35px;text-align:center;overflow:hidden; position:relative}
+.new-product .qc-head b{float:left;font-size:18px;margin-right:50px;font-weight:normal;color:#000}
+.new-product .qc-head span{float:right;margin-top:5px;}
+.new-product .qc-head li{float:left;list-style-type:none;padding:2px 8px;margin-right:10px;font-weight:normal; cursor:pointer;border:#f5f5f5 1px solid}
+.new-product .qc-head li.current{color:#ff5400;border:#ff5400 1px solid}
+.new-product .qc-body dl{overflow:hidden;background:white;padding:10px 18px;border:#e3e3e3 1px solid;}
+.new-product .qc-body dl:hover{border:#ff5400 1px solid}
+.new-product .qc-body dl ul{width:880px;}
+.new-product .qc-body dl ul li{float:left;width:185px;margin-right:20px;;line-height:30px;height:30px;overflow:hidden;font-size:12px; background:url(img/reddot.gif) no-repeat left 11px;;padding-left:12px;}
+
+.new-agent .qc-head{clear:both;font-size:14px;height:35px;text-align:center;overflow:hidden; position:relative}
+.new-agent .qc-head b{float:left;font-size:18px;margin-right:50px;font-weight:normal;color:#000}
+.new-agent .qc-head span{float:right;margin-top:5px;}
+.new-agent .qc-head li{float:left;list-style-type:none;padding:2px 8px;margin-right:10px;font-weight:normal; cursor:pointer;border:#f5f5f5 1px solid}
+.new-agent .qc-head li.current{color:#ff5400;border:#ff5400 1px solid}
+.new-agent .qc-body dl{overflow:hidden;background:white;padding:10px 18px;border:#e3e3e3 1px solid;}
+.new-agent .qc-body dl:hover{border:#ff5400 1px solid}
+.new-agent .qc-body dl{overflow:hidden;background:white;padding:10px 18px;border:#e3e3e3 1px solid;}
+.new-agent .qc-body dl:hover{border:#ff5400 1px solid}
+.new-agent .qc-body dl ul{width:880px;}
+
+.new-agent .qc-body dl ul li {display:block;width:260px;height:88px;padding-right:10px;float:left;position:relative;z-index:2;}
+.new-agent .qc-body dl ul li strong {display:block;overflow:hidden;height:26px;line-height:26px;font-size:14px;}
+.new-agent .qc-body dl ul li span,.new-agent .qc-body dl ul li i {display:block;clear:both;overflow:hidden;height:24px;line-height:24px;color:#888;font-style:normal;}
+.new-agent .qc-body dl ul li em {display:block;width:62px;height:20px;font-style:normal;position:absolute;left:149px;top:51px;}
+.new-agent .qc-body dl ul li em a {display:block;width:60px;height:18px;line-height:18px;text-align:center;border:1px solid #fe4f0c;color:#fe4f0c;}
+.new-agent .qc-body dl ul li em a:hover {background:#fe4f0c;color:#FFF;}
+
+
+.box{overflow:hidden; position:relative}
+.box dt{font-size:18px;font-weight:normal;color:#000;overflow:hidden;height:35px;}
+.box dt span{float:right;font-size:14px}
+.box dl{overflow:hidden;background:white;padding:11px 10px 5px 18px;border:#e3e3e3 1px solid;}
+.box dl:hover{border:#ff5400 1px solid}
+.box dl a{border:#dcdcdc 1px dotted;padding:3px 7px;float:left;margin-right:10px;margin-bottom:6px}
+.s-screen .left {width:880px;float:left;overflow:hidden}
+.s-screen .right{width:300px;float:right;overflow:hidden}
+.nwrightlist { border:1px solid #e3e3e3;padding-top:10px;height:218px;padding-right:10px;overflow:hidden;vertical-align:top; background:white}
+.nwrightlist:hover { border:1px solid #ff5400;overflow:hidden;vertical-align:top;}
+.nwrightlist li {height:28px;overflow:hidden;vertical-align:top;cursor:default;position:relative;z-index:2;}
+.nwrightlist li.current {height:70px;}
+.nwrightlist li strong {display:block;height:24px;line-height:24px;padding-left:40px;position:relative;z-index:2;overflow:hidden;font-weight:normal;}
+.nwrightlist li strong b {display:block;width:14px;height:14px;overflow:hidden;background:url(img/numberbg.gif) no-repeat;text-align:center;line-height:14px;color:#FFF;font-weight:normal;position:absolute;left:15px;top:5px;}
+.nwrightlist li strong i {display:block;width:14px;height:14px;overflow:hidden;background:url(img/numberbg.gif) no-repeat left -14px;font-style:normal;text-align:center;line-height:14px;color:#FFF;font-weight:normal;position:absolute;left:22px;top:5px;}
+.nwrightlist li p {display:block;padding:0px;margin:0px;clear:both;position:relative;z-index:2;padding:1px 0 0 94px;color:#888;vertical-align:top;}
+.nwrightlist li p img {position:absolute;left:44px;top:2px;}
+.nwrightlist li p span {display:block;height:22px;line-height:22px;overflow:hidden;}
+.nwrightlist li p em {display:block;height:22px;line-height:22px;overflow:hidden;clear:both;font-style:normal;}
+.nwrightlist li a{font-size:14px;}
+
+
+
+.tjpro {clear:both;width:1200px;padding-top:6px;height:456px;}
+.tjproleft {width:220px;height:456px;overflow:hidden;position:relative;z-index:2;vertical-align:top;float:left;}
+.tjproleft li {display:block;width:220px;height:228px;position:relative;z-index:2;float:left;}
+.tjproleft li a {cursor:pointer;width:220px;height:228px;display:block;overflow:hidden;position:relative;z-index:2;}
+.tjproleft li a:hover {text-decoration:none;}
+.tjproleft li em {display:block;height:206px;overflow:hidden;}
+.tjproleft li a i {display:block;height:206px;overflow:hidden;position:absolute;left:0px;top:0px;}
+.tjproleft li a span {height:22px;width:220px;display:block;clear:both;line-height:21px;text-align:center;overflow:hidden;}
+.tjproright {width:980px;height:456px;overflow:hidden;position:relative;z-index:2;vertical-align:top;float:left;}
+.tjproright li {display:block;width:194px;height:114px;position:relative;z-index:2;float:left;padding-left:2px;}
+.tjproright li a {cursor:pointer;width:194px;height:114px;display:block;overflow:hidden;position:relative;z-index:2;}
+.tjproright li a:hover {text-decoration:none;}
+.tjproright li em {display:block;height:92px;overflow:hidden;}
+.tjproright li a i {display:block;height:92px;overflow:hidden;position:absolute;left:0px;top:0px;}
+.tjproright li a span {height:22px;width:194px;display:block;clear:both;line-height:21px;text-align:center;overflow:hidden;}
+
+
+
+.s-screen .left {width:850px;float:left;overflow:hidden}
+.s-screen .right{width:330px;float:right;overflow:hidden}
+
+
+.pptjlist {clear:both;border:1px solid #dcdcdc;padding-top:30px;height:192px;vertical-align:top;}
+.pptjlist:hover {clear:both;border:1px solid #fe500b;padding-top:30px;height:192px;vertical-align:top;}
+.pptjlist div.bd {display:block;width:1130px;height:172px;margin:0 auto;overflow:hidden;position:relative;z-index:2;}
+.pptjlist div.bd ul {display:block;width:1300px;}
+.pptjlist div.bd li {display:block;width:217px;padding-left:9px;height:209px;background:#FFF;float:left;}
+.pptjlist div.bd li i {display:block;width:208px;height:140px;position:relative;z-index:2;overflow:hidden;}
+.pptjlist div.bd li img {position:absolute;left:0px;top:0px;}
+.pptjlist div.bd li strong {display:block;width:208px;clear:both;text-align:center;font-size:13px;font-weight:normal;margin:0 auto;height:32px;line-height:32px;overflow:hidden;}
+.pptjlist div.hd {position:relative;z-index:3;width:1186px;margin:0 auto;clear:both;}
+.pptjlist div.hd a.next {display:block;width:30px;height:40px;background:url(img/leftright.png) no-repeat;position:absolute;left:0px;top:-125px;cursor:pointer;}
+.pptjlist div.hd a.next:hover {background:url(img/leftright.png) no-repeat left -40px;}
+.pptjlist div.hd a.prev {display:block;width:30px;height:40px;background:url(img/leftright.png) no-repeat -30px top;position:absolute;right:0px;top:-125px;cursor:pointer;}
+.pptjlist div.hd a.prev:hover {background:url(img/leftright.png) no-repeat -30px -40px;}
+
+
+
+
+
+.f2cllist {clear:both;border:1px solid #dcdcdc;height:200px;}
+.f2cllist:hover {clear:both;border:1px solid #fe500b;height:200px;}
+.f2cll {float:left;width:408px;padding:14px 0 0 20px;vertical-align:top;}
+.f2cll li {display:block;width:333px;padding-left:75px;height:88px;overflow:hidden;position:relative;z-index:2;}
+.f2cll li i {position:absolute;left:0px;top:6px;width:72px;height:72px;display:block;overflow:hidden;}
+.f2cll li strong {display:block;height:28px;line-height:28px;overflow:hidden;font-size:14px;padding-left:5px;}
+.f2cll li em {display:block;clear:both;height:36px;line-height:18px;overflow:hidden;color:#888;font-style:normal;padding-left:5px;}
+.f2cll li span {display:block;clear:both;height:18px;line-height:18px;}
+.f2clr {float:left;padding:14px 0 0 9px;width:390px;}
+.f2clr1 {height:75px;overflow:hidden;}
+.f2clr1 strong {display:block;font-size:14px;height:28px;line-height:28px;overflow:hidden;}
+.f2clr1 span {display:block;clear:both;height:36px;line-height:18px;overflow:hidden;color:#888;}
+.f2clr2 {clear:both;vertical-align:top;}
+.f2clr2 li {display:block;height:48px;clear:both;}
+.f2clr2 li strong {display:block;height:26px;line-height:26px;overflow:hidden;font-size:14px;padding-left:15px;background:url(../images/reddot.gif) no-repeat left 9px;}
+.f2clr2 li i {font-style:normal;color:#FF500B;}
+.f2clr2 li span {display:block;color:#888;padding-left:15px;clear:both;height:20px;line-height:20px;overflow:hidden;}
+.f2clr3 {clear:both;vertical-align:top;}
+.f2clr3 li {display:block; float:left; height:24px; width:195px;}
+.f2clr3 li strong {padding:0 10px 0 15px; overflow:hidden; height:24px; display:block; line-height:24px; font-weight:normal; background:url(../images/reddot.gif) no-repeat 1px 8px;}
+.f2cr {width:340px;float:right;text-align:left;}
+.f2crlist {clear:both;height:178px;vertical-align:top;padding:22px 0 0 22px;border:1px solid #dcdcdc;}
+.f2crlist:hover {clear:both;height:178px;vertical-align:top;padding:22px 0 0 22px;border:1px solid #fe500b;}
+.f2crlist li {display:block;clear:both;height:54px;overflow:hidden;}
+.f2crlist li i {display:block;width:294px;height:48px;overflow:hidden;}
+
+
+.kefu0 {clear:both;margin-top:18px;border:1px solid #dcdcdc;width:1200px;margin:0px auto}
+.kefu0:hover {border:1px solid #fe500b;}
+.kefutop {height:82px;border-bottom:1px solid #f7f7f7;text-align:center;}
+.kefutop strong {display:block;width:1198px;height:36px;line-height:36px;padding-top:11px;color:#000;font-size:20px;font-weight:normal;}
+.kefutop i {color:#FF500B;font-style:normal;padding-left:21px;}
+.kefutop span {display:block;width:1198px;height:20px;line-height:20px;color:#888;font-size:14px;font-weight:normal;}
+.kefulist {clear:both;width:1198px;height:192px;padding-top:20px;border-bottom:1px solid #f7f7f7;}
+.kefulist li {display:block;width:286px;height:46px;float:left;position:relative;z-index:3;}
+.kefulist li strong {width:160px;height:34px;line-height:34px;float:left;display:block;text-align:right;font-size:14px;font-weight:normal;}
+.kefulist li i {display:block;width:126px;height:34px;overflow:hidden;float:left;cursor:pointer;}
+.kefulist li span {display:block;position:absolute;left:88px;top:0px;border:1px solid #dcdcdc;display:none;filter:alpha(opacity=0);-moz-opacity:0.0;-khtml-opacity: 0.0;opacity: 0.0;}
+.kefuwx {clear:both;height:185px;padding-top:19px;}
+.kefuwx li {display:block;width:399px;float:left;}
+.kefuwx li p {display:block;padding:0px;margin:0px;height:142px;width:228px;padding-left:170px;position:relative;z-index:2;}
+.kefuwx li p i {width:140px;height:140px;position:absolute;left:20px;top:0px;border:1px solid #f7f7f7;}
+.kefuwx li p strong {display:block;padding-top:9px;height:34px;line-height:34px;font-size:20px;color:#FF500B;font-weight:normal;}
+.kefuwx li p span {display:block;height:40px;line-height:20px;clear:both;font-size:14px;color:#FF500B;}
+.kefuwx li p em {display:block;font-style:normal;padding-top:13px;height:36px;clear:both;line-height:18px;color:#888;}
+.kefuwx li b {display:block;clear:both;height:32px;width:140px;padding-left:21px;text-align:center;font-weight:normal;line-height:32px;font-size:14px;}
+
+
+
+.tbtjr ul li{
+width: 193px; height:92px;
+ margin-right: 2px;margin-top:2px;position:relative;
+ overflow: hidden;
+ display: block;
+ text-align: center; float:left}
+.tbtjr ul li a { width: 193px;
+ overflow: hidden;
+ display: block;
+ text-align: center}
+
+.tbtjr ul li img{ width:386px; height:92px;transition: all 0.4s;-webkit-transition: all 0.4s;-ms-transition: all 0.4s;-moz-transition: all 0.4s;-o-transition: all 0.4s;position:absolute;left:-193px}
+.tbtjr ul li:hover img{position:absolute;left:0px}
+
+/**/
+.linkwrap{ width:100%;padding:30px 0;overflow:hidden;line-height:23px;font-size:14px;}
+.linkwrap dt{float:left;font-weight:bold;padding-right:5px}
+.linkwrap a{white-space:nowrap; color:#666; margin:0 8px 0px 0px; display:inline-block; line-height:23px}
+
+
+
+.floor-box{overflow:hidden}
+.floor-box dt{color:#000}
+.floor-title {height: 40px;border-bottom:#eee 1px solid;overflow:hidden}
+.floor-title .f-ad{float:left;padding-top:7px;padding-left:10px}
+.floor-title h2 {font-size: 20px;font-weight: bold; float:left; position:relative;line-height:28px;overflow:hidden;height:40px;z-index:10}
+.floor-title h2:before{content: "";width: 3px;height: 20px;float: left;margin:4px 10px 0px 0px;}
+.floor-title .floor-menu {height: 20px; margin: 4px 0;float:right; text-align:right}
+.floor-title .floor-menu a {display: inline-block; letter-spacing: normal; height: 20px; line-height: 20px; margin-left: 18px; font-size: 14px;}
+.floor-title .floor-menu a i {font-style:normal;color:#777;padding:0 0px 0px 5px; font-size:16px;font-weight:bold;font-family:simsun;}
+.floor-title h2.f1{color:#ff9900}
+.floor-title h2.f1:before{background: #ff9900}
+.floor-title h2.f2{color:#fa7e19}
+.floor-title h2.f2:before{background: #fa7e19}
+.floor-title h2.f3{color:#1873d9}
+.floor-title h2.f3:before{background: #1873d9}
+.floor-title h2.f4{color:#36ad95}
+.floor-title h2.f4:before{background: #36ad95}
+.floor-title h2.f5{color:#8e4baa}
+.floor-title h2.f5:before{background: #8e4baa}
+.floor-title h2.f6{color:#ff7200}
+.floor-title h2.f6:before{background: #ff7200}
+.floor-title h2.f7{color:#1db3c9}
+.floor-title h2.f7:before{background: #1db3c9}
+.floor-title h2.f8{color:#008800}
+.floor-title h2.f8:before{background: #080}
+.floor-title h2.f9{color:#1db3c9}
+.floor-title h2.f9:before{background: #1db3c9}
+.floor-title h2.f10{color:#006699}
+.floor-title h2.f10:before{background: #069}
+.floor-title h2.f11{color:#ff7200}
+.floor-title h2.f12:before{background: #ff5400}
+.floor-title h2.f12{color:#ff5400}
+
+.floor-menu>.more{
+ font-size: 16px;color: #666;float:right
+
+}
+.floor-menu>.more>i{
+ top:4px;width:15px;height:20px;margin-left:5px;background-position: 0 0;
+}
+.floor-menu>.more:hover{
+ color: #e56639;
+}
+.floor-menu>.more:hover>i{
+ background-position: -20px 0;
+}
+
+.tc-gs-i{
+ position: relative;display: inline-block;background-image: url(img/tc-gongsi-icons.png);background-repeat: no-repeat;
+}
+
+.floor-menu>.more,.floor-menu>.more>i{
+ -webkit-transition: all 0.4s ease;-moz-transition: all 0.4s ease;transition: all 0.4s ease;
+}
+
+
+
+
+.f2ad img:nth-child(odd){float:left;}
+
+.f2ad img:nth-child(even){float:right;}
+
+.linkwrap{ width:100%; background:#f7f7f7; min-height:100px; padding:10px 0;margin-top: 20px;margin-bottom: -20px;}
+.linkwrap .linkTop{ width:1200px; height:40px; line-height:40px; border-bottom:1px solid #eaeaea; font-size:16px; color:#333; font-weight:bold}
+.linkwrap .linkTop em{ padding-left:0px; color:#ff7200}
+.linkwrap .linkBot{ padding:15px 0px; width:1170px; height:auto; clear:both}
+.linkwrap .linkBot a{white-space:nowrap; color:#666; margin:0 8px 0px 0px; display:inline-block; line-height:25px}
+
+
+.news{ width:1198px; height:517px; margin:20px auto; background:#fff; overflow:hidden;border:1px solid #eee;}
+.news_title{ width:1148px; height:68px; padding:0 25px; border-bottom:#eee 1px solid}
+.news_title h2{ float:left; line-height:68px; background:url(img/news_title_bg.png) left no-repeat; text-indent:30px; font-size:20px; color:#ff7200; }
+.news_title p{ float:right; height:14px; line-height:14px; font-size:14px; text-align:right; margin-top:27px;}
+.news_title p a{ margin-left:10px;}
+.news_title p a:hover{color:#1db3c9}
+.news_content{ width:1200px; height:450px; position:relative;}
+.news_content_left{ float:left; width:359px;padding:15px; height:450px;}
+.news_content_center{ float:left; width:500px;border-left:#eee 1px solid; height:450px;overflow:hidden}
+.news_content_center p{ height:60px; padding:19px 20px 10px; line-height:30px; font-size:12px; color:#999; overflow:hidden;}
+.news_content_center p a{ font-size:18px; padding-left:25px; background:url(img/news_content_center_p_a_bg.png) left no-repeat;font-weight:bold}
+.news_content_center ul{ padding:15px 20px 14px; border-bottom:1px solid #eee;}
+.news_content_center ul li{ height:30px; line-height:30px; font-size:12px;list-style:inside;float:none;}
+.news_content_center ul li a{ font-size:14px; padding-right:10px;}
+.news_content_center ul li span{ color:#999; float:right;}
+
+.news_content_right{ float:left; width:308px; height:449px; overflow:hidden; border-right:1px solid #eee; border-left:1px solid #eee; }
+.news_content_right_top{ width:100%; height:89px; border-bottom:1px solid #eee; background:url(img/news_content_right_top_bg.png) no-repeat top right;}
+.news_content_right p{ width:270px; height:80px; margin:0 19px; padding:15px 0 19px; border-top:1px dashed #eee; line-height:20px; color:#999; font-size:12px;}
+.news_content_right p:nth-child(2){border-top:none}
+.news_content_right p a{ font-size:14px;color:#000}
+.news_content_right p a:hover{color:#1db3c9}
+.news_content_right p span a{ font-size:12px; color:#2277e6; padding-right:4px;}
+
+.boxh{border:#e1e1e1 0px solid;border-top:#009237 0px solid;}
+
+.boxh ul{padding:0px 0px}
+.boxh ul li{line-height:33px;font-size:14px;height:33px;overflow:hidden}
+.boxh ul li:nth-child(1) em ,.boxh ul li:nth-child(2) em ,.boxh ul li:nth-child(3) em{background:#ff7200}
+.boxh ul li em{background:#999; display:block;width:20px; height:20px;float:left;margin-right:8px; text-align:center;line-height:18px;color:white;margin-top:8px;font-size:14px;border-radius:50%; font-style:normal}
+.industry-bar {
+ position:fixed;top:220px;left:50%;margin-left:-660px;width:46px;display:none;
+ z-index:1000;
+ background:white;
+}
+.industry-bar.hover {
+ display:block
+}
+.industry-bar h5 {
+ height:26px;line-height:26px;padding:5px 0;background:#d10000;text-align:center;color:#fff
+}
+.industry-bar ul {
+ background:#fff
+}
+.industry-bar li {
+ padding:5px 8px;height:32px;line-height:16px;margin:0 auto;text-align:center;
+ border-bottom:#eee 1px solid
+}
+.industry-bar li a {
+ display:block;line-height:16px;font-size:12px;
+}
+.industry-bar li.current {
+ color:#fff;
+}
+.industry-bar li.current a{color:white}
+
+.industry-bar li.current:nth-child(1){background:#ff9900}
+.industry-bar li.current:nth-child(2){background:#fa7e19}
+.industry-bar li.current:nth-child(3){background:#1873d9}
+.industry-bar li.current:nth-child(4){background:#36ad95}
+.industry-bar li.current:nth-child(5){background:#8e4baa}
+.industry-bar li.current:nth-child(6){background:#ff7200}
+.industry-bar li.current:nth-child(7){background:#1db3c9}
+.industry-bar li.current:nth-child(8){background:#008800}
+.industry-bar li.current:nth-child(9){background:#1db3c9}
+.industry-bar li.current:nth-child(10){background:#006699}
+.industry-bar li.current:nth-child(11){background:#ff7200}
\ No newline at end of file
diff --git a/skin/m15dt8blue/img/index_bg.png b/skin/m15dt8blue/img/index_bg.png
new file mode 100644
index 0000000..035d569
Binary files /dev/null and b/skin/m15dt8blue/img/index_bg.png differ
diff --git a/skin/m15dt8blue/img/inews_jt.png b/skin/m15dt8blue/img/inews_jt.png
new file mode 100644
index 0000000..cc1e2ae
Binary files /dev/null and b/skin/m15dt8blue/img/inews_jt.png differ
diff --git a/skin/m15dt8blue/img/j.png b/skin/m15dt8blue/img/j.png
new file mode 100644
index 0000000..39f6c70
Binary files /dev/null and b/skin/m15dt8blue/img/j.png differ
diff --git a/skin/m15dt8blue/img/jx.png b/skin/m15dt8blue/img/jx.png
new file mode 100644
index 0000000..2c19ac2
Binary files /dev/null and b/skin/m15dt8blue/img/jx.png differ
diff --git a/skin/m15dt8blue/img/kSirmSRKfpAYTsdgghdfhGdamYZ.png b/skin/m15dt8blue/img/kSirmSRKfpAYTsdgghdfhGdamYZ.png
new file mode 100644
index 0000000..aa5098e
Binary files /dev/null and b/skin/m15dt8blue/img/kSirmSRKfpAYTsdgghdfhGdamYZ.png differ
diff --git a/skin/m15dt8blue/img/layout-img.png b/skin/m15dt8blue/img/layout-img.png
new file mode 100644
index 0000000..c05c5cc
Binary files /dev/null and b/skin/m15dt8blue/img/layout-img.png differ
diff --git a/skin/m15dt8blue/img/leri.png b/skin/m15dt8blue/img/leri.png
new file mode 100644
index 0000000..475c733
Binary files /dev/null and b/skin/m15dt8blue/img/leri.png differ
diff --git a/skin/m15dt8blue/img/li_dot.gif b/skin/m15dt8blue/img/li_dot.gif
new file mode 100644
index 0000000..a2c22d0
Binary files /dev/null and b/skin/m15dt8blue/img/li_dot.gif differ
diff --git a/skin/m15dt8blue/img/login.png b/skin/m15dt8blue/img/login.png
new file mode 100644
index 0000000..3d24bbb
Binary files /dev/null and b/skin/m15dt8blue/img/login.png differ
diff --git a/skin/m15dt8blue/img/logo-t.png b/skin/m15dt8blue/img/logo-t.png
new file mode 100644
index 0000000..51202b9
Binary files /dev/null and b/skin/m15dt8blue/img/logo-t.png differ
diff --git a/skin/m15dt8blue/img/logo.png b/skin/m15dt8blue/img/logo.png
new file mode 100644
index 0000000..1978cad
Binary files /dev/null and b/skin/m15dt8blue/img/logo.png differ
diff --git a/skin/m15dt8blue/img/lvy_01.jpg b/skin/m15dt8blue/img/lvy_01.jpg
new file mode 100644
index 0000000..46b3300
Binary files /dev/null and b/skin/m15dt8blue/img/lvy_01.jpg differ
diff --git a/skin/m15dt8blue/img/ly.png b/skin/m15dt8blue/img/ly.png
new file mode 100644
index 0000000..b66cbfd
Binary files /dev/null and b/skin/m15dt8blue/img/ly.png differ
diff --git a/skin/m15dt8blue/img/ma.png b/skin/m15dt8blue/img/ma.png
new file mode 100644
index 0000000..2255c69
Binary files /dev/null and b/skin/m15dt8blue/img/ma.png differ
diff --git a/skin/m15dt8blue/img/mail.jpg b/skin/m15dt8blue/img/mail.jpg
new file mode 100644
index 0000000..b08995a
Binary files /dev/null and b/skin/m15dt8blue/img/mail.jpg differ
diff --git a/skin/m15dt8blue/img/map.gif b/skin/m15dt8blue/img/map.gif
new file mode 100644
index 0000000..90751cc
Binary files /dev/null and b/skin/m15dt8blue/img/map.gif differ
diff --git a/skin/m15dt8blue/img/matrix_gray.png b/skin/m15dt8blue/img/matrix_gray.png
new file mode 100644
index 0000000..346c00f
Binary files /dev/null and b/skin/m15dt8blue/img/matrix_gray.png differ
diff --git a/skin/m15dt8blue/img/matrix_green.png b/skin/m15dt8blue/img/matrix_green.png
new file mode 100644
index 0000000..e77f2c8
Binary files /dev/null and b/skin/m15dt8blue/img/matrix_green.png differ
diff --git a/skin/m15dt8blue/img/mcatbg.png b/skin/m15dt8blue/img/mcatbg.png
new file mode 100644
index 0000000..54e9799
Binary files /dev/null and b/skin/m15dt8blue/img/mcatbg.png differ
diff --git a/skin/m15dt8blue/img/mm.png b/skin/m15dt8blue/img/mm.png
new file mode 100644
index 0000000..f943dbe
Binary files /dev/null and b/skin/m15dt8blue/img/mm.png differ
diff --git a/skin/m15dt8blue/img/mm3.png b/skin/m15dt8blue/img/mm3.png
new file mode 100644
index 0000000..9cb4508
Binary files /dev/null and b/skin/m15dt8blue/img/mm3.png differ
diff --git a/skin/m15dt8blue/img/mz.png b/skin/m15dt8blue/img/mz.png
new file mode 100644
index 0000000..2d9a47b
Binary files /dev/null and b/skin/m15dt8blue/img/mz.png differ
diff --git a/skin/m15dt8blue/img/nav-arrow.gif b/skin/m15dt8blue/img/nav-arrow.gif
new file mode 100644
index 0000000..1631a04
Binary files /dev/null and b/skin/m15dt8blue/img/nav-arrow.gif differ
diff --git a/skin/m15dt8blue/img/news-star.png b/skin/m15dt8blue/img/news-star.png
new file mode 100644
index 0000000..35f483f
Binary files /dev/null and b/skin/m15dt8blue/img/news-star.png differ
diff --git a/skin/m15dt8blue/img/news_content_center_p_a_bg.png b/skin/m15dt8blue/img/news_content_center_p_a_bg.png
new file mode 100644
index 0000000..7b356ab
Binary files /dev/null and b/skin/m15dt8blue/img/news_content_center_p_a_bg.png differ
diff --git a/skin/m15dt8blue/img/news_content_right_top_bg.png b/skin/m15dt8blue/img/news_content_right_top_bg.png
new file mode 100644
index 0000000..083f2a7
Binary files /dev/null and b/skin/m15dt8blue/img/news_content_right_top_bg.png differ
diff --git a/skin/m15dt8blue/img/news_title_bg.png b/skin/m15dt8blue/img/news_title_bg.png
new file mode 100644
index 0000000..5327ab8
Binary files /dev/null and b/skin/m15dt8blue/img/news_title_bg.png differ
diff --git a/skin/m15dt8blue/img/norm_small_icon_m.png b/skin/m15dt8blue/img/norm_small_icon_m.png
new file mode 100644
index 0000000..5f03e86
Binary files /dev/null and b/skin/m15dt8blue/img/norm_small_icon_m.png differ
diff --git a/skin/m15dt8blue/img/numberbg.gif b/skin/m15dt8blue/img/numberbg.gif
new file mode 100644
index 0000000..db67d5d
Binary files /dev/null and b/skin/m15dt8blue/img/numberbg.gif differ
diff --git a/skin/m15dt8blue/img/oneArrow.png b/skin/m15dt8blue/img/oneArrow.png
new file mode 100644
index 0000000..f028efa
Binary files /dev/null and b/skin/m15dt8blue/img/oneArrow.png differ
diff --git a/skin/m15dt8blue/img/onlinewpa.png b/skin/m15dt8blue/img/onlinewpa.png
new file mode 100644
index 0000000..448fede
Binary files /dev/null and b/skin/m15dt8blue/img/onlinewpa.png differ
diff --git a/skin/m15dt8blue/img/open-shop.png b/skin/m15dt8blue/img/open-shop.png
new file mode 100644
index 0000000..e325a46
Binary files /dev/null and b/skin/m15dt8blue/img/open-shop.png differ
diff --git a/skin/m15dt8blue/img/para.jpg b/skin/m15dt8blue/img/para.jpg
new file mode 100644
index 0000000..99c82e5
Binary files /dev/null and b/skin/m15dt8blue/img/para.jpg differ
diff --git a/skin/m15dt8blue/img/pic1.jpg b/skin/m15dt8blue/img/pic1.jpg
new file mode 100644
index 0000000..dde597a
Binary files /dev/null and b/skin/m15dt8blue/img/pic1.jpg differ
diff --git a/skin/m15dt8blue/img/pic2.jpg b/skin/m15dt8blue/img/pic2.jpg
new file mode 100644
index 0000000..6cf9f3d
Binary files /dev/null and b/skin/m15dt8blue/img/pic2.jpg differ
diff --git a/skin/m15dt8blue/img/pic2.png b/skin/m15dt8blue/img/pic2.png
new file mode 100644
index 0000000..728a944
Binary files /dev/null and b/skin/m15dt8blue/img/pic2.png differ
diff --git a/skin/m15dt8blue/img/pic4.jpg b/skin/m15dt8blue/img/pic4.jpg
new file mode 100644
index 0000000..8e944f0
Binary files /dev/null and b/skin/m15dt8blue/img/pic4.jpg differ
diff --git a/skin/m15dt8blue/img/post-icon-black.png b/skin/m15dt8blue/img/post-icon-black.png
new file mode 100644
index 0000000..3948857
Binary files /dev/null and b/skin/m15dt8blue/img/post-icon-black.png differ
diff --git a/skin/m15dt8blue/img/pp.gif b/skin/m15dt8blue/img/pp.gif
new file mode 100644
index 0000000..745a257
Binary files /dev/null and b/skin/m15dt8blue/img/pp.gif differ
diff --git a/skin/m15dt8blue/img/pro-1.png b/skin/m15dt8blue/img/pro-1.png
new file mode 100644
index 0000000..08daf5d
Binary files /dev/null and b/skin/m15dt8blue/img/pro-1.png differ
diff --git a/skin/m15dt8blue/img/proLeftBg2.png b/skin/m15dt8blue/img/proLeftBg2.png
new file mode 100644
index 0000000..6a648d5
Binary files /dev/null and b/skin/m15dt8blue/img/proLeftBg2.png differ
diff --git a/skin/m15dt8blue/img/q1.gif b/skin/m15dt8blue/img/q1.gif
new file mode 100644
index 0000000..9899dd8
Binary files /dev/null and b/skin/m15dt8blue/img/q1.gif differ
diff --git a/skin/m15dt8blue/img/qgbtn.gif b/skin/m15dt8blue/img/qgbtn.gif
new file mode 100644
index 0000000..cf263a6
Binary files /dev/null and b/skin/m15dt8blue/img/qgbtn.gif differ
diff --git a/skin/m15dt8blue/img/qq.png b/skin/m15dt8blue/img/qq.png
new file mode 100644
index 0000000..71f47e4
Binary files /dev/null and b/skin/m15dt8blue/img/qq.png differ
diff --git a/skin/m15dt8blue/img/r1.jpg b/skin/m15dt8blue/img/r1.jpg
new file mode 100644
index 0000000..a418329
Binary files /dev/null and b/skin/m15dt8blue/img/r1.jpg differ
diff --git a/skin/m15dt8blue/img/rBADvF0v1EWANQciAAQcmA0VJDA143.jpg b/skin/m15dt8blue/img/rBADvF0v1EWANQciAAQcmA0VJDA143.jpg
new file mode 100644
index 0000000..ed38a6a
Binary files /dev/null and b/skin/m15dt8blue/img/rBADvF0v1EWANQciAAQcmA0VJDA143.jpg differ
diff --git a/skin/m15dt8blue/img/rad.png b/skin/m15dt8blue/img/rad.png
new file mode 100644
index 0000000..19be41d
Binary files /dev/null and b/skin/m15dt8blue/img/rad.png differ
diff --git a/skin/m15dt8blue/img/rank_list.gif b/skin/m15dt8blue/img/rank_list.gif
new file mode 100644
index 0000000..a6462e2
Binary files /dev/null and b/skin/m15dt8blue/img/rank_list.gif differ
diff --git a/skin/m15dt8blue/img/reg.png b/skin/m15dt8blue/img/reg.png
new file mode 100644
index 0000000..f2865fb
Binary files /dev/null and b/skin/m15dt8blue/img/reg.png differ
diff --git a/skin/m15dt8blue/img/rmbico.png b/skin/m15dt8blue/img/rmbico.png
new file mode 100644
index 0000000..e7390e6
Binary files /dev/null and b/skin/m15dt8blue/img/rmbico.png differ
diff --git a/skin/m15dt8blue/img/ruzhu.jpg b/skin/m15dt8blue/img/ruzhu.jpg
new file mode 100644
index 0000000..baf0efe
Binary files /dev/null and b/skin/m15dt8blue/img/ruzhu.jpg differ
diff --git a/skin/m15dt8blue/img/rvvj69qr4icm1v0f030926.jpg b/skin/m15dt8blue/img/rvvj69qr4icm1v0f030926.jpg
new file mode 100644
index 0000000..0aed6b3
Binary files /dev/null and b/skin/m15dt8blue/img/rvvj69qr4icm1v0f030926.jpg differ
diff --git a/skin/m15dt8blue/img/say.jpg b/skin/m15dt8blue/img/say.jpg
new file mode 100644
index 0000000..cd0fe82
Binary files /dev/null and b/skin/m15dt8blue/img/say.jpg differ
diff --git a/skin/m15dt8blue/img/seller_tip@1x.png b/skin/m15dt8blue/img/seller_tip@1x.png
new file mode 100644
index 0000000..5671c2a
Binary files /dev/null and b/skin/m15dt8blue/img/seller_tip@1x.png differ
diff --git a/skin/m15dt8blue/img/ser_online.png b/skin/m15dt8blue/img/ser_online.png
new file mode 100644
index 0000000..986bd97
Binary files /dev/null and b/skin/m15dt8blue/img/ser_online.png differ
diff --git a/skin/m15dt8blue/img/service.jpg b/skin/m15dt8blue/img/service.jpg
new file mode 100644
index 0000000..f96e269
Binary files /dev/null and b/skin/m15dt8blue/img/service.jpg differ
diff --git a/skin/m15dt8blue/img/shop.png b/skin/m15dt8blue/img/shop.png
new file mode 100644
index 0000000..fb29755
Binary files /dev/null and b/skin/m15dt8blue/img/shop.png differ
diff --git a/skin/m15dt8blue/img/shopico.png b/skin/m15dt8blue/img/shopico.png
new file mode 100644
index 0000000..3ee3906
Binary files /dev/null and b/skin/m15dt8blue/img/shopico.png differ
diff --git a/skin/m15dt8blue/img/site-service.png b/skin/m15dt8blue/img/site-service.png
new file mode 100644
index 0000000..58a4314
Binary files /dev/null and b/skin/m15dt8blue/img/site-service.png differ
diff --git a/skin/m15dt8blue/img/smrz.png b/skin/m15dt8blue/img/smrz.png
new file mode 100644
index 0000000..e4d3fd1
Binary files /dev/null and b/skin/m15dt8blue/img/smrz.png differ
diff --git a/skin/m15dt8blue/img/so-ico.png b/skin/m15dt8blue/img/so-ico.png
new file mode 100644
index 0000000..829a136
Binary files /dev/null and b/skin/m15dt8blue/img/so-ico.png differ
diff --git a/skin/m15dt8blue/img/so-r.png b/skin/m15dt8blue/img/so-r.png
new file mode 100644
index 0000000..1802843
Binary files /dev/null and b/skin/m15dt8blue/img/so-r.png differ
diff --git a/skin/m15dt8blue/img/special1.png b/skin/m15dt8blue/img/special1.png
new file mode 100644
index 0000000..600e390
Binary files /dev/null and b/skin/m15dt8blue/img/special1.png differ
diff --git a/skin/m15dt8blue/img/special2.png b/skin/m15dt8blue/img/special2.png
new file mode 100644
index 0000000..8da21f2
Binary files /dev/null and b/skin/m15dt8blue/img/special2.png differ
diff --git a/skin/m15dt8blue/img/special4.png b/skin/m15dt8blue/img/special4.png
new file mode 100644
index 0000000..cd0df5f
Binary files /dev/null and b/skin/m15dt8blue/img/special4.png differ
diff --git a/skin/m15dt8blue/img/special5.png b/skin/m15dt8blue/img/special5.png
new file mode 100644
index 0000000..18d3a91
Binary files /dev/null and b/skin/m15dt8blue/img/special5.png differ
diff --git a/skin/m15dt8blue/img/special6.png b/skin/m15dt8blue/img/special6.png
new file mode 100644
index 0000000..f3cb02d
Binary files /dev/null and b/skin/m15dt8blue/img/special6.png differ
diff --git a/skin/m15dt8blue/img/sprite_global.png b/skin/m15dt8blue/img/sprite_global.png
new file mode 100644
index 0000000..02d5b66
Binary files /dev/null and b/skin/m15dt8blue/img/sprite_global.png differ
diff --git a/skin/m15dt8blue/img/tb.png b/skin/m15dt8blue/img/tb.png
new file mode 100644
index 0000000..75e831e
Binary files /dev/null and b/skin/m15dt8blue/img/tb.png differ
diff --git a/skin/m15dt8blue/img/tc-gongsi-icons.png b/skin/m15dt8blue/img/tc-gongsi-icons.png
new file mode 100644
index 0000000..9bccc05
Binary files /dev/null and b/skin/m15dt8blue/img/tc-gongsi-icons.png differ
diff --git a/skin/m15dt8blue/img/tel.png b/skin/m15dt8blue/img/tel.png
new file mode 100644
index 0000000..02060f1
Binary files /dev/null and b/skin/m15dt8blue/img/tel.png differ
diff --git a/skin/m15dt8blue/img/theme.css b/skin/m15dt8blue/img/theme.css
new file mode 100644
index 0000000..3b201dd
--- /dev/null
+++ b/skin/m15dt8blue/img/theme.css
@@ -0,0 +1,494 @@
+@charset "utf-8";
+/*
+ [DESTOON B2B System] Copyright (c) 2008-2018 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+html,body{ overflow-y:scroll;}
+
+html,body{ overflow:scroll; min-height:101%;}
+
+html{ overflow:-moz-scrollbars-vertical;}
+* {word-break:break-all;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Lucida Grande",Helvetica,Arial,Verdana,"Microsoft YaHei";}
+body {margin:0;font-size:14px;color:#333333;background:#EFEFF4;}/*-webkit-user-select:none;*/
+ul li {list-style-type:none;}
+ol li {list-style-type:decimal;}
+ul,form {margin:0px;padding:0px;}
+form {margin:0px;}
+td {font-size:14px;}
+img {border:none;}
+a:link,a:visited,a:active,a:hover {color:#333333;text-decoration:none;}
+a.b:link,a.b:visited,a.b:active,a.b:hover{text-decoration:none;color:#007AFF;}
+a,button,input{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-tap-highlight-color:transparent;}
+input,textarea,select {outline:none;}
+.f_red {color:red;}
+.f_blue {color:blue;}
+.f_green {color:green;}
+.f_orange {color:#FF6600;}
+.f_gray {color:#666666;}
+.f_price {color:#FF0000;}
+.f_r {float:right;}
+.t_c {text-align:center;}
+.t_r {text-align:right;}
+.c_b {clear:both;}
+.f_b {font-weight:bold;}
+.lh20 {line-height:200%;}
+.px14 {font-size:14px;}
+.px12 {font-size:12px;}
+.dsn {display:none;}
+.img-circle {border-radius:50%;}
+.b10 {height:10px;clear:both;overflow:hidden;width:100%}
+.blank-10 {height:10px;clear:both;}
+.blank-16 {height:16px;clear:both;}
+.blank-20 {height:20px;clear:both;}
+.blank-32 {height:32px;clear:both;}
+.blank-35 {height:36px;clear:both;}
+.main {background:#FFFFFF;clear:both;}
+.bd-t {border-top:#D9D9D9 1px solid;}
+.bd-r {border-right:#D9D9D9 1px solid;}
+.bd-b {}
+.bd-l {border-left:#D9D9D9 1px solid;}
+
+.btn,.btn-red,.btn-green,.btn-blue,.btn-orange {color:#FFFFFF;font-size:18px;width:100%;line-height:44px;border:none;border-radius:4px;text-align:center;-webkit-appearance:none;}
+.btn {background:#FFFFFF;border:#E4E4E4 1px solid;color:#000000;}
+.btn:hover {background:#DEDEDE;border:#CDCDCD 1px solid;}
+.btn-green {background:#1AAD19;}
+.btn-green:hover {background:#179B16;}
+.btn-blue {background:#ff8450;}
+.btn-blue:hover {background:#0569D5;}
+.btn-orange {background:#FF8800;}
+.btn-orange:hover {background:#FF6600;}
+.btn-red {background:#E64340;}
+.btn-red:hover {background:#CE3C39;}
+.input-checkbox {width:24px;height:24px;background:url('img/icon-check.png') no-repeat;background-size:24px 24px;}
+.input-checkbox-checked {width:24px;height:24px;background:url('img/icon-checked.png') no-repeat;background-size:24px 24px;}
+
+.op-nav{z-index:109;font-size:14px;color:#fff;top:0px;width:100%;padding:16px 0 13px 0px;
+ background: #f2f2f2;
+ height: 32px;
+ overflow: hidden;
+ position: relative;
+ background: -webkit-linear-gradient(0deg,#009237,#ff8450);
+ background: -moz-linear-gradient(0deg,#009237,#008800);
+ background: linear-gradient(90deg,#009237,#009237);
+ color: #fff;
+
+
+}
+.op-nav a{color:#fff}
+
+.op-nav img{
+ -webkit-filter: grayscale(100%);
+ -moz-filter: grayscale(100%);
+ -ms-filter: grayscale(100%);
+ -o-filter: grayscale(100%);
+ filter: grayscale(100%);
+ filter: gray;
+}
+
+
+
+.op-nav .logo{
+ float: left;
+ width:77px;
+ padding:0 10px;
+}
+.op-nav .logo h1{
+ width: 77px;
+ height: 32px;
+ background: url(img/logo.png) no-repeat;
+ background-size: 100%;
+ font-size:0;
+}
+.op-nav .logo a{display:block}
+
+.op-nav .soso{top: 16px;left: 112px;right: 100px;position:absolute}
+
+.op-nav .soso div{
+
+ width:auto;
+ color: #fff;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-appearance: none;
+ border-radius: 0;
+ width: 100%;
+ border: 0;
+ height: 30px;
+ line-height: 30px;
+ padding-left: 30px;
+ padding-right: 5px;
+ outline: 0;
+ font-size: 14px;
+ opacity: .8;
+ background:rgba(255,255,255,.3) url(img/ico-search.png) no-repeat 10px 7px;
+ background-size:16px 16px
+
+
+}
+.op-nav .soso div{width:auto}
+.op-nav .soso div a{display:block}
+.op-nav .post{overflow:hidden;float:right;line-height:30px
+}
+.op-nav .post a{padding:0px 6px}
+
+
+
+
+.nav-main{background:#fff;padding:17px 0px 10px;overflow:hidden}
+.nav-main ul li{width:25%;display:inline-block;float:left;text-align:center;overflow:hidden;margin-bottom:10px;}
+.nav-main ul li span.text{color:inherit;font-size:14px;text-decoration:none; overflow:hidden;width:100%;display:block}
+.nav-main ul li a {color:#000}
+.nav-main ul li img{width:70px;height:70px;border-radius:50%;border:#009237 2px solid}
+
+
+.float-share{position:fixed;z-index:9;bottom:60px;width:40px;height:40px;display:block;right:10px;background:rgba(0,0,0,.3) url(image/fs.png) no-repeat center;background-size:50% 50%;border-radius:50%}
+.float-share a{display:block;height:40px;width:40px;font-size:0;}
+
+.list-sell{background:white;overflow:hidden}
+.list-sell dl{padding:15px 15px;overflow:hidden;border-bottom:#efefef 1px solid;margin:0}
+.list-sell dl img{float:left;margin-right:10px;height:75px;width:95px;margin-top:3px}
+.list-sell ul{overflow:hidden}
+.list-sell ul h3{line-height:20px;;font-size:14px;padding:0;margin:0;font-weight:normal;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;font-weight: 400;margin-bottom:5px;}
+.list-sell ul h4{line-height:20px;;font-size:16px;padding:0;margin:0;font-weight:normal;overflow: hidden;font-weight: 400;margin-bottom:5px;}
+
+.list-sell ul p{line-height:25px;font-size:14px;padding:0;margin:0;color:#666}
+.list-sell ul p.f_red{color:#f46;margin-bottom:6px;font-size:18px}
+.list-sell ul p span{float:right}
+
+.nav{line-height:30px;padding:5px 15px;font-size:14px; background:white;border-bottom:#efefef 1px solid}
+
+.s-title{font-size:16px;height:40px;line-height:40px;border-bottom:#e3e3e3 1px solid;border-top:#e3e3e3 1px solid;color:#009237;padding:0px 15px;background:#f7f7f7}
+.s-title:before{content: "";width: 2px;height: 16px;background: #009237;float: left;margin: 12px 8px 0 0;}
+.s-title a{color:#009237}
+
+
+.tid{font-size:12px;padding:5px 10px 5px 10px; background:white;overflow:hidden;border-radius:2px;border-bottom:#efefef 1px solid;}
+.tid dt{font-size:12px;width:60px;float:left;font-weight:bold;line-height:24px;padding:2px 0px;background:#009237;text-align:center;color:white;margin-right:15px}
+.tid dl{width:100%;clear:both;overflow:hidden;margin-bottom:8px;background:white}
+.tid dl dd{overflow:hidden;line-height:24px;}
+.tid dl li{float:left;padding:2px 15px 2px 0px;float:left;list-style-type:none;}
+.tid dl li a.cur{border:#009237 1px solid;padding:4px 4px;border-radius:2px;color:#009237}
+
+.com-bar{position:fixed;z-index:9;bottom:0;background:rgba(0,0,0,.8);width:100%;height:55px;display:block}
+.com-bar ul{overflow:hidden}
+.com-bar li{float:left;width:28%; text-align:center}
+.com-bar li i{margin: auto;display: block;width:25px;height:25px;margin-top:8px;background-size:100% 100%;background-repeat:no-repeat;}
+.com-bar .btn-back i{background-image:url("img/fix-back.png")}
+.com-bar .btn-tel i{background-image:url("img/fix-tel.png")}
+.com-bar li a{ display: inline-block; color: #f7f7f7; font-size: 14px; font-weight: bold;text-align: center;}
+.com-bar .btn-chat{float:right;color:#fff;background:#009237;text-align:center;line-height:55px;width:44%}
+.com-bar .btn-chat a{display:block;color:inherit;font-size:16px;}
+.com-bar-blank{height:55px;overflow:hidden;width:100%}
+
+.home-head {width:100%;box-shadow: 0 0 5px #acacac;-moz-box-shadow: 0 0 5px #acacac;-webkit-box-shadow: 0 0 5px #acacac;height: 100px;padding-top:25px;overflow: hidden; background:url(img/2435968_759141069.png) no-repeat; background-size:100% 100%; position:relative}
+.home-head img {float:left;border-radius:50%;margin:10px 15px 0 10px;}
+.home-head ul {overflow:hidden;margin-top:10px;height:60px;}
+.home-head li {height:30px;line-height:26px;}
+.home-head strong {font-size:16px;}
+.home-head span{background:#009237;padding:2px 6px;color:#fff;overflow:hidden;border-radius:3px;font-size:12px;height:25px;}
+.home-head .gz{position:absolute; right:10px;width:120px; bottom:39px; text-align:center; color:white;font-size:12px;height:22px;line-height:22px;}
+.home-head .gz a{color:white; background:#cc0000; border-radius:3px;font-size:12px;; text-align:center;padding:0px 10px; display:block;height:20px;line-height:20px;float:left;margin-top:2px}
+
+.home-head .wei{position:absolute; right:0px;bottom:0px;height:50px;width:50px;}
+.home-head .wei a{background:url(img/wei.png) no-repeat;background-size:50px 50px;font-size:0;display:block;width:50px;height:50px;}
+
+.home-quick {overflow:hidden}
+.home-quick li {width:25%;float:left;line-height:45px;height:45px;font-size:16px;background:white;overflow:hidden;text-align:center;border-bottom:#e3e3e3 1px solid}
+.home-quick li.on{border-bottom:#c00 1px solid;font-weight:bold}
+.home-quick li.on a{color:#c00}
+.home-quick img {width:46px;margin:0 0 6px 0;}
+.home-quick span {display:block;}
+.m-focus{width:100%;overflow:hidden; }
+.m-focus-box{overflow:hidden; margin:0 auto; position:relative;}
+.m-focus{display: block;overflow: hidden; position: relative; }
+.m-focus .m-focus-box { margin: 0 auto; overflow: hidden; position: relative; backface-visibility: hidden; }
+.m-focus .m-focus-box .swiper-wrapper li { float: left; list-style-type:none }
+.m-focus .m-focus-box .swiper-wrapper li a { position: relative; width: 100%; display: block; }
+.m-focus .m-focus-box .swiper-wrapper img { width: 100%; display: block; }
+.m-focus .swiper-container { display: none; }
+.m-focus-box .b-menu{text-align: center;position: absolute;width: 100%;left: 0;bottom:5px;z-index: 10;}
+.m-focus-box .swiper-pagination-switch{display:inline-block; width:10px; height:10px; border-radius:10px; margin-right:5px; cursor:pointer;}
+
+.swiper-pagination-bullet {
+ display: inline-block;
+ border-radius: 100%;
+ border:#fff 1px solid;
+ cursor:pointer;
+ margin: 0 5px;
+ width:10px; height:10px;
+}
+
+.s-list h3{font-size:16px;line-height:45px;height:45px;padding:0px 15px 0px 15px;font-weight:normal; background:white; border-bottom:#e3e3e3 1px solid;margin:0}
+.s-list h3:before{content: "";width: 4px;height: 16px;background: #009237;float: left;margin: 14px 8px 0 0;}
+.s-list h3 span{float:right;font-size:14px;}
+.s-list{background:white;overflow:hidden}
+.s-list h2{font-size:15px;font-weight:normal;height:18px;line-height:18px;overflow:hidden;text-overflow: ellipsis;white-space: nowrap;margin:0px 0px 5px 0px}
+.s-list h2.vip {background:url('img/icon-vip.png') no-repeat 0 center;background-size:14px 14px;padding-left:15px;}
+.s-list ul{overflow:hidden;margin:0px;}
+.s-list ul li{ font-size:12px;overflow:hidden;padding:15px;border-bottom:#f7f7f7 1px solid}
+.s-list ul li img{width:100px;float:left;margin-right:10px;}
+.s-list ul li .text{overflow:hidden}
+.s-list ul li p.c0{height:20px;line-height:20px;width:100%;overflow:hidden;font-size:12px;text-overflow: ellipsis;white-space: nowrap;color:#777; margin:0px}
+.s-list ul li em{font-style:normal;margin-left:10px}
+.s-list ul li p.c1{margin:0px;margin-top:8px}
+.s-list ul li p.c1 i{border:#f46 1px solid;font-style:normal;padding:0px 3px;height:16px;line-height:14px;margin-right:10px;font-size:11px;overflow:hidden;border-radius:3px;color:#f46}
+.s-list ul li p.c2{color:#009237;font-size:16px;line-height:16px;margin-top:12px;overflow:hidden;margin-bottom:0px;}
+.s-list ul li p.c2 span{float:right;font-size:12px;color:#777}
+.s-list ul li p.c3{height:20px;line-height:20px;width:100%;overflow:hidden;font-size:12px;text-overflow: ellipsis;white-space: nowrap;color:#777; margin:0px;margin-top:12px}
+
+a.more{display:block;width:150px;margin:15px auto;text-align:center;font-size:16px;height:30px;line-height:30px;border-radius:20px;border:#009237 1px solid;color:#009237}
+
+
+.news-box{width:100%;clear:both;overflow:hidden; background:white}
+.news-box h3{font-size:16px;line-height:45px;height:45px;padding:0px 15px 0px 15px;font-weight:normal; background:white; border-bottom:#e3e3e3 1px solid;margin:0}
+.news-box h3:before{content: "";width: 4px;height: 16px;background: #009237;float: left;margin: 14px 8px 0 0;}
+.news-box h3 span{float:right;font-size:14px;}
+
+
+.news-box ul{overflow:hidden;margin:0px; background:white;padding:15px}
+.news-box ul li{ font-size:14px;overflow:hidden;line-height:30px;height:30px;}
+
+
+
+.about-box{background:#ffffff;width:100%;padding:0px;}
+.about-box dl{padding:15px 15px;border-top:none;line-height:25px;margin:0}
+.about-box h3{font-size:16px;line-height:45px;height:45px;padding:0px 15px 0px 15px;font-weight:normal; background:white; border-bottom:#e3e3e3 1px solid;margin:0;text-align:left}
+.about-box h3:before{content: "";width: 4px;height: 16px;background: #009237;float: left;margin: 14px 8px 0 0;}
+.contact-us{ background:rgba(0,0,0,.9);padding:15px;color:white;line-height:25px; text-align:center;overflow:hidden}
+.contact-us p{margin:0}
+
+
+.float-tel{position:fixed;z-index:9;bottom:90px;width:45px;height:45px;display:block;right:10px;}
+.float-tel a{display:block;background:#009237 url(img/710549ae76e7d06e2f8c59fc4da03437.png) no-repeat center;background-size:50% 50%;height:45px;width:45px;border-radius:50%;font-size:0;}
+
+.footer{background:white;padding:15px; text-align:center;border-bottom:#e3e3e3 1px solid}
+.copyright{background:white;padding:15px; text-align:center;line-height:25px}
+.footer a{padding:0px 5px}
+
+
+.news-list{width:100%;clear:both;overflow:hidden; background:white}
+.news-list h3{font-size:16px;line-height:45px;height:45px;padding:0px 15px 0px 15px;border-bottom:#e3e3e3 1px solid;margin:0}
+.news-list h3:before{content: "";width: 4px;height: 16px;background: #009237;float: left;margin: 15px 8px 0 0;}
+.news-list h3 span{float:right; font-weight:normal}
+.news-list ul{overflow:hidden;margin:0px;}
+.news-list ul li{ font-size:14px;overflow:hidden;padding:15px;border-bottom:#f7f7f7 1px solid}
+.news-list ul li img{width:120px;float:left;margin-right:10px;}
+.news-list ul li .text{overflow:hidden}
+.news-list ul li p{line-height:20px;height:60px;width:100%;margin:0;overflow:hidden;font-size:18px;}
+.news-list ul li em{font-size:12px; overflow:hidden;color:#777; font-style:normal}
+
+
+.qcode{background:#f3f3f3;margin:30px auto;padding:15px;width:240px;border-radius:5px;overflow:hidden;text-align:center;}
+.qcode h3{height:45px;line-height:45px;background:white;font-size:14px;font-weight:normal;margin:0px}
+.qcode dl{background:white;padding:20px;text-align:center}
+.qcode dl img{width:200px;height:200px}
+ .c-contact{ padding:15px;background: linear-gradient(135deg,#E5F8E5,#E5F8E5); overflow:hidden;margin:10px 0px;border-top: 1px solid #C5EAC3;border-bottom: 1px solid #C5EAC3;}
+ .clogo{width:50px;height:50px;margin:0px auto}
+ .clogo img{width:100%;border-radius:50%}
+ .cname{text-align:center;font-size:14px;font-weight:bold;padding:10px 0px}
+ .cinter{width:180px;margin:0px auto}
+ .cinter a{border:#008800 1px solid;border-radius:3px;padding:5px 0px;font-weight:bold; text-align:center;height:25px;line-height:25px; display:block;color:#008800}
+
+
+
+ .cinter a:nth-child(1) { width:80px; float:left }
+.cinter a:nth-child(2) { width:80px; float:right }
+
+
+
+
+
+.head-bar-fix {height:48px;clear:both;}
+.head-bar {width:100%;height:48px;line-height:48px;overflow: hidden; background: -webkit-linear-gradient(0deg,#0da944,#ff8450);
+ background: -moz-linear-gradient(0deg,#0da944,#008800);
+ background: linear-gradient(90deg,#009237,#0da944);color: #fff;position:fixed;z-index:9;left:0;top:0;-webkit-user-select:none;}
+.head-bar img {width:24px;height:24px;vertical-align:top;padding-top:12px;}
+.head-bar span {color:#fff;font-size:18px;}
+.head-bar-title {position:absolute;z-index:9;left:80px;right:80px;font-size:18px;font-weight:bold;text-align:center;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;}
+.head-bar-left {float:left;padding:0 0 0 10px;}
+.head-bar-back {float:left;padding:0 0 0 5px;}
+.head-bar-right {float:right;padding:0 10px 0 0;}
+
+.foot-bar-fix {height:48px;clear:both;}
+.foot-bar {width:100%;height:48px;overflow:hidden;background:#f5f5f5;position:fixed;z-index:9;left:0;bottom:0;-webkit-user-select:none;}
+.foot-bar li {width:25%;height:48px;float:left;text-align:center;font-size:11px;}
+.foot-bar span {display:block;padding-top:32px;}
+.foot-bar em {font-style:normal;font-size:10px;position:relative;z-index:10;display:block;width:5px;height:5px;left:50%;margin:-38px 0 0 8px;background:#FF0000;border:1px solid #F43531;border-radius:5px;}
+.foot-bar .icon-home {background:url('img/icon-home.png') no-repeat center 5px;background-size:24px 24px;}
+.foot-bar .icon-home-on {background:url('img/icon-home-on.png') no-repeat center 5px;background-size:24px 24px;}
+.foot-bar .icon-channel {background:url('img/icon-channel.png') no-repeat center 5px;background-size:24px 24px;}
+.foot-bar .icon-channel-on {background:url('img/icon-channel-on.png') no-repeat center 5px;background-size:24px 24px;}
+.foot-bar .icon-my {background:url('img/icon-my.png') no-repeat center 5px;background-size:24px 24px;}
+.foot-bar .icon-my-on {background:url('img/icon-my-on.png') no-repeat center 5px;background-size:24px 24px;}
+.foot-bar .icon-more {background:url('img/icon-more.png') no-repeat center 5px;background-size:24px 24px;}
+.foot-bar .icon-more-on {background:url('img/icon-more-on.png') no-repeat center 5px;background-size:24px 24px;}
+.foot-bar .icon-home span,.foot-bar .icon-channel span,.foot-bar .icon-my span,.foot-bar .icon-more span {color:#7A7E83;}
+.foot-bar .icon-home-on span,.foot-bar .icon-channel-on span,.foot-bar .icon-my-on span,.foot-bar .icon-more-on span {color:#007AFF;}
+
+.foot-comment {text-align:right;margin:10px 10px 0 0;line-height:28px;font-size:16px;}
+.foot-comment div {position:absolute;z-index:10;left:10px;right:60px;text-align:center;background:#FFFFFF;color:#999999;font-size:14px;}
+
+.my-cart {width:46px;height:46px;background:url('img/home-cart.png') no-repeat center center;background-size:46px 46px;opacity:0.9;position:fixed;z-index:10;right:10px;bottom:60px;}
+.my-cart em {display:block;height:16px;line-height:16px;padding:0 6px;float:right;font-size:12px;color:#FFFFFF;font-style:normal;background:#FF0000;border-radius:50%;}
+
+.user-info {height:84px;border-top:#D9D9D9 1px solid;background:#FFFFFF url('img/list-set.png') no-repeat right center;background-size:23px 13px;}
+.user-info img {float:left;border-radius:50%;margin:10px 16px 0 16px;}
+.user-info div {float:left;line-height:26px;margin:16px 0 0 0;}
+.user-info strong {font-size:18px;font-weight:normal;}
+
+.list-set {background:#FFFFFF;border-top:#D9D9D9 1px solid;font-size:18px;}
+.list-set li {background:#FFFFFF;}
+.list-set div {margin-left:15px;height:44px;line-height:44px;padding:0 36px 0 0;overflow:hidden;border-top:#D9D9D9 1px solid;background:url('img/list-set.png') no-repeat right center;background-size:23px 13px;}
+.list-set a {display:block;width:100%;height:44px;}
+.list-set em {display:block;height:16px;line-height:16px;padding:0 6px;float:right;font-size:12px;color:#FFFFFF;font-style:normal;background:#FF0000;border-radius:10px;margin-top:14px;}
+.list-set span {float:right;font-size:14px;color:#333333;padding-left:10px;}
+.list-set li:first-child div {border:none;}
+
+.list-set input,.list-set select {border:#EEEEEE 1px solid;border-radius:0;-webkit-appearance:none;padding:4px;font-size:14px;}
+
+.list-set-img div {margin-left:50px;}
+.list-set-img img {width:24px;height:24px;position:absolute;z-index:8;margin:10px 0 0 -36px;}
+
+.list-txt {border-top:#D9D9D9 1px solid;font-size:16px;}
+.list-txt li {height:44px;line-height:44px;padding:0 30px 0 15px;overflow:hidden;background:#FFFFFF url('img/list-set.png') no-repeat right center;background-size:23px 13px;}
+.list-txt a {display:block;width:100%;height:44px;}
+.list-txt span {float:right;font-size:11px;color:#6D6D72;padding-left:10px;}
+
+.list-img {height:84px;background:#FFFFFF;overflow:hidden;clear:both;border-bottom:#e3e3e3 1px solid;padding:0 12px;}
+.list-img img {float:left;margin:12px 12px 0 0;}
+.list-img ul {margin:12px 0 0 0; overflow:hidden}
+.list-img li {height:30px;line-height:30px;overflow:hidden;}
+.list-img strong {font-size:16px;display:block;width:100%;font-weight:normal;}
+.list-img strong span {font-size:16px;}
+.list-img em {font-size:12px;color:#666666;font-style:normal;}
+.list-img i {font-size:12px;color:#F23030;font-style:normal;float:right;}
+.list-img span {font-size:12px;color:#666666;}
+.list-img .price {font-size:12px;color:#FF0000;}
+.list-img .vip {background:url('img/icon-vip.png') no-repeat 0 center;background-size:14px 14px;padding-left:15px;}
+.list-img .check {float:right;width:32px;height:30px;background:url('img/icon-check.png') no-repeat center center;background-size:20px 20px;}
+.list-img .checked {float:right;width:32px;height:30px;background:url('img/icon-checked.png') no-repeat center center;background-size:20px 20px;}
+.list-img .sheet {float:right;width:32px;height:30px;background:url('img/icon-sheet.png') no-repeat center center;background-size:20px 20px;}
+
+.list-user {height:32px;overflow:hidden;padding:0 16px;margin-top:10px;}
+.list-user img {float:left;}
+.list-user ul {position:absolute;left:58px;right:16px;}
+.list-user li {line-height:16px;color:#999999;}
+.list-user span {float:right;font-size:12px;}
+.list-user em {font-size:11px;font-style:normal;}
+
+.list-inp {background:#FFFFFF;padding:0 16px;}
+.list-inp div {width:100%;height:44px;line-height:44px;font-size:16px;}
+.list-inp input[type="text"],.list-inp input[type="password"],.list-inp input[type="number"],.list-inp input[type="tel"],.list-inp input[type="email"] {width:98%;height:24px;line-height:24px;border:none;padding:0;margin:10px 0 0 0;font-size:16px;}
+
+.list-btn {padding:0 16px;}
+
+.list-pay {background:#FFFFFF;border-top:#D9D9D9 1px solid;font-size:18px;}
+.list-pay li {background:#FFFFFF;}
+.list-pay div {margin-left:50px;height:44px;line-height:44px;overflow:hidden;border-top:#D9D9D9 1px solid;}
+.list-pay em {display:block;height:16px;line-height:16px;padding:0 6px;float:right;font-size:12px;margin-top:7px;}
+.list-pay span {float:right;font-size:12px;color:#666666;}
+.list-pay li:first-child div {border:none;}
+.list-pay img {width:24px;height:24px;position:absolute;z-index:9;margin:10px 0 0 -36px;border-radius:4px;}
+.list-pay .check {width:32px;height:30px;background:url('img/icon-check.png') no-repeat center center;background-size:24px 24px;}
+.list-pay .checked {width:32px;height:30px;background:url('img/icon-checked.png') no-repeat center center;background-size:24px 24px;}
+
+.list-tab {padding:16px;background:#FFFFFF;}
+.list-tab ul {border:#444444 1px solid;border-radius:4px;height:24px;line-height:24px;font-size:12px;text-align:center;display:-moz-box;display:-webkit-box;display:box;}
+.list-tab li {border-right:#444444 1px solid;color:#444444;-moz-box-flex:1;-webkit-box-flex:1;box-flex:1;}
+.list-tab li:last-child {border-right:none;}
+.list-tab span {color:#444444;display:block;width:100%;height:100%;}
+.list-tab .on {background:#444444;color:#FFFFFF;}
+.list-tab .on span {color:#FFFFFF;}
+
+.list-menu {background:#FFFFFF url('img/bg-menu.png') repeat-x 0 bottom;height:44px;overflow-x:auto;font-size:16px;}
+.list-menu ul {width:10000px;padding:0 10px;}
+.list-menu li {height:42px;line-height:42px;padding:0 10px;border-bottom:#EFEFF4 2px solid;float:left;}
+.list-menu .on {border-bottom:#007AFF 2px solid;color:#007AFF;}
+
+.list-empty {padding:40px 20px;line-height:200%;background:#FFFFFF;text-align:center;}
+
+.order-t {height:44px;line-height:44px;padding:0 32px 0 16px;overflow:hidden;background:#FFFFFF url('img/list-set.png') no-repeat right center;background-size:23px 13px;}
+.order-t em {font-size:12px;font-style:normal;float:right;}
+.order-p {height:44px;line-height:44px;padding:0 16px;overflow:hidden;background:#FFFFFF;}
+.order-p input[type="text"] {width:50%;border:#B2B2B2 1px solid;padding:4px 6px;border-radius:0;font-size:14px;-webkit-appearance:none;}
+.order-b {height:50px;padding:0 16px;overflow:hidden;text-align:right;}
+.order-b a {display:inline-block;width:72px;height:24px;line-height:24px;background:#FFFFFF;border:#D9D9D9 1px solid;border-radius:10px;margin:12px 0 0 16px;font-size:12px;text-align:center;}
+
+.title {font-size:20px;line-height:22px;padding:16px;}
+.info {font-size:14px;padding:0 16px 16px 16px;color:#666666;border-bottom:#efefef 1px solid}
+.content {font-size:16px;line-height:180%;padding:10px 16px;}
+.content img {max-width:100%;height:auto;}
+.content table {max-width:100%;height:auto;}
+.content a {color:#007AFF;}
+.award {padding:32px;text-align:center;}
+.award div {width:80px;height:44px;line-height:44px;font-size:20px;font-weight:bold;letter-spacing:2px;margin:auto;background:#FFFFFF;color:#E94657;border:#E94657 2px solid;border-radius:10px;}
+.award div:hover {background:#E94657;color:#FFFFFF;}
+.content-msg {font-size:16px;line-height:30px;padding:44px 15px 44px 10px;text-align:center;}
+.head {height:44px;line-height:44px;font-size:16px;padding:0 16px;}
+.contact {padding:10px 16px;font-size:16px;line-height:200%;}
+.pages {height:44px;line-height:44px;text-align:center;background:#F7F7F7;clear:both;font-size:16px;}
+.pages a {padding-left:10px;}
+
+.album {padding:0px 0;text-align:center;}
+.album_o {display:inline-block;width:10px;height:10px;margin:5px;background:#FFFFFF;border:1px solid #007AFF;border-radius:10px;}
+.album_c {display:inline-block;width:10px;height:10px;margin:5px;background:#007AFF;border:1px solid #007AFF;border-radius:10px;}
+
+.share_icon {display:none;}
+
+.ui-ok {background:#FFFFFF url('img/icon-ok.png') no-repeat center 44px;background-size:100px 100px;padding:188px 16px 44px 16px;text-align:center;}
+.ui-ko {background:#FFFFFF url('img/icon-ko.png') no-repeat center 44px;background-size:100px 100px;padding:188px 16px 44px 16px;text-align:center;}
+.ui-ok p,.ui-ko p {margin:0;font-size:20px;font-weight:bold;padding-bottom:44px;}
+.ui-ok div,.ui-ko div {font-size:16px;color:#999999;padding-bottom:44px;}
+.ui-ok input,.ui-ko input {margin-bottom:16px;}
+
+.ui-form {background:#FFFFFF;padding:0 16px;}
+.ui-form p {padding:16px 0;margin:0;font-size:16px;font-weight:bold;clear:both;}
+.ui-form div {line-height:32px;}
+.ui-form em {padding-left:6px;font-size:12px;color:#FF0000;}
+.ui-form b {float:right;font-size:12px;color:#FF0000;font-weight:normal;}
+.ui-form label {display:inline;margin:0 0 0 6px;font-size:16px;}
+.ui-form input[type="text"],.ui-form input[type="password"],.ui-form input[type="search"],.ui-form input[type="tel"],.ui-form input[type="number"],.ui-form input[type="email"],.ui-form input[type="url"] {box-sizing:border-box;width:100%;height:44px;line-height:44px;border:#B2B2B2 1px solid;padding:0 6px;border-radius:0;font-size:14px;-webkit-appearance:none;}
+.ui-form input[type="search"] {background:url('img/ico-search.png') no-repeat 6px center;background-size:16px 16px;padding:0 28px;}
+.ui-form input[type="date"] {width:150px;height:44px;line-height:44px;border:#B2B2B2 1px solid;border-radius:0;padding:0 10px;font-size:14px;-webkit-appearance:none;}
+.ui-form input[type="datetime-local"] {width:180px;height:44px;line-height:44px;border:#B2B2B2 1px solid;border-radius:0;padding:0 10px;font-size:14px;-webkit-appearance:none;}
+.ui-form input[type="radio"] {border:#B2B2B2 1px solid;}
+.ui-form input[type="checkbox"] {border:#B2B2B2 1px solid;}
+.ui-form select {padding:0 3px;font-size:14px;height:32px;line-height:32px;border:#B2B2B2 1px solid;margin:0 10px 10px 0;background:#FFFFFF;}
+.ui-form textarea {box-sizing:border-box;width:100%;height:72px;line-height:24px;padding:3px;font-size:14px;border:#B2B2B2 1px solid;-webkit-appearance:none;}
+.ui-form #captcha {width:100px;}
+.ui-form #answer {width:80%;}
+
+.webuploader-container {position:relative;}
+.webuploader-element-invisible {position:absolute !important;clip: rect(1px 1px 1px 1px);clip: rect(1px,1px,1px,1px);}
+.webuploader-pick {position:relative;display:inline-block;cursor:pointer;width:80px;height:80px;}
+.webuploader-pick-hover {}
+.webuploader-pick-disable {opacity:0.6;pointer-events:none;}
+
+.ui-form-thumb-show {width:80px;height:60px;border:#EDEEF1 1px solid;margin-right:16px;float:left;display:none;}
+.ui-form-thumb-show img {width:80px;height:60px;border:none;}
+.ui-form-thumb-upload {width:80px;height:60px;overflow:hidden;border:#EDEEF1 1px solid;float:left;background:url('img/upload-image.png') no-repeat center center;background-size:40px 40px;}
+.ui-form-album-show {width:80px;height:80px;border:#EDEEF1 1px solid;margin-right:16px;float:left;display:none;}
+.ui-form-album-show img {width:80px;height:80px;border:none;}
+.ui-form-album-upload {width:80px;height:80px;overflow:hidden;border:#EDEEF1 1px solid;float:left;background:url('img/upload-image.png') no-repeat center center;background-size:40px 40px;}
+.ui-form-file-upload {position:relative;width:32px;height:30px;overflow:hidden;float:right;background:#FFFFFF url('img/upload-file.png') no-repeat center center;background-size:16px 16px;margin:-36px 6px 0 0;}
+
+.ui-editor-toolbar {background:#F8F8F8;height:36px;line-height:36px;padding-left:10px;border-top:#B2B2B2 1px solid;}
+.ui-editor-toolbar li {width:36px;height:36px;line-height:36px;text-align:center;float:left;color:#7F8393;font-size:20px;cursor:pointer;font-family:Verdana;}
+.ui-editor-img {background:url('img/editor-img.png') no-repeat center center;background-size:20px 20px;overflow:hidden;}
+.ui-editor-bold {}
+.ui-editor-italic {font-style:italic;}
+.ui-editor-underline {text-decoration:underline;}
+.ui-editor-content {border-bottom:#B2B2B2 1px solid;background:#FFFFFF;height:240px;padding:10px;font-size:16px;}
+.ui-editor-content img {max-width:100%;height:auto;}
+.ui-editor-content a {color:#007AFF;}
+
+.ui-toast {height:32px;line-height:32px;overflow:hidden;display:inline-block;padding:0 16px;background:#000000;opacity:0.8;color:#FFFFFF;border-radius:6px;position:fixed;z-index:99;top:76px;font-size:14px;display:none;}
+.ui-sheet {opacity:0.9;position:fixed;z-index:99;left:8px;right:8px;bottom:0;display:none;}
+.ui-sheet div {background:#FFFFFF;border-radius:4px;}
+.ui-sheet li {height:44px;line-height:44px;overflow:hidden;text-align:center;font-size:20px;color:#007AFF;border-top:#D9D9D9 1px solid;}
+.ui-sheet p {height:44px;line-height:44px;text-align:center;font-size:20px;color:#007AFF;font-weight:bold;margin:8px 0;background:#FFFFFF;border-radius:4px;}
+.ui-sheet em {padding:10px;line-height:24px;font-size:14px;color:#999999;font-style:normal;text-align:center;display:block;}
+.ui-sheet span {color:#007AFF;display:block;width:100%;}
+.ui-mask {position:fixed;z-index:98;left:0;top:0;right:0;width:100%;height:100%;overflow:hidden;background:#000000;opacity:0.5;display:none;}
+.ui-icon-loading {background:url('lib/jquery/images/ajax-loader.gif');background-size:2.875em 2.875em;}
\ No newline at end of file
diff --git a/skin/m15dt8blue/img/time.png b/skin/m15dt8blue/img/time.png
new file mode 100644
index 0000000..933ad38
Binary files /dev/null and b/skin/m15dt8blue/img/time.png differ
diff --git a/skin/m15dt8blue/img/timeicon.png b/skin/m15dt8blue/img/timeicon.png
new file mode 100644
index 0000000..d7f9029
Binary files /dev/null and b/skin/m15dt8blue/img/timeicon.png differ
diff --git a/skin/m15dt8blue/img/timg.jpg b/skin/m15dt8blue/img/timg.jpg
new file mode 100644
index 0000000..b2f585e
Binary files /dev/null and b/skin/m15dt8blue/img/timg.jpg differ
diff --git a/skin/m15dt8blue/img/top.jpg b/skin/m15dt8blue/img/top.jpg
new file mode 100644
index 0000000..9ab8410
Binary files /dev/null and b/skin/m15dt8blue/img/top.jpg differ
diff --git a/skin/m15dt8blue/img/totop.png b/skin/m15dt8blue/img/totop.png
new file mode 100644
index 0000000..eaf6cc6
Binary files /dev/null and b/skin/m15dt8blue/img/totop.png differ
diff --git a/skin/m15dt8blue/img/tp.jpg b/skin/m15dt8blue/img/tp.jpg
new file mode 100644
index 0000000..3f2ccbd
Binary files /dev/null and b/skin/m15dt8blue/img/tp.jpg differ
diff --git a/skin/m15dt8blue/img/tuan.png b/skin/m15dt8blue/img/tuan.png
new file mode 100644
index 0000000..61c539f
Binary files /dev/null and b/skin/m15dt8blue/img/tuan.png differ
diff --git a/skin/m15dt8blue/img/tx.png b/skin/m15dt8blue/img/tx.png
new file mode 100644
index 0000000..01a35aa
Binary files /dev/null and b/skin/m15dt8blue/img/tx.png differ
diff --git a/skin/m15dt8blue/img/u=1020643171,227406231&fm=15&gp=0.jpg b/skin/m15dt8blue/img/u=1020643171,227406231&fm=15&gp=0.jpg
new file mode 100644
index 0000000..8a98680
Binary files /dev/null and b/skin/m15dt8blue/img/u=1020643171,227406231&fm=15&gp=0.jpg differ
diff --git a/skin/m15dt8blue/img/user.jpg b/skin/m15dt8blue/img/user.jpg
new file mode 100644
index 0000000..2bfbb15
Binary files /dev/null and b/skin/m15dt8blue/img/user.jpg differ
diff --git a/skin/m15dt8blue/img/user_head.e86fd34.png b/skin/m15dt8blue/img/user_head.e86fd34.png
new file mode 100644
index 0000000..b884f2e
Binary files /dev/null and b/skin/m15dt8blue/img/user_head.e86fd34.png differ
diff --git a/skin/m15dt8blue/img/vip.png b/skin/m15dt8blue/img/vip.png
new file mode 100644
index 0000000..5226fea
Binary files /dev/null and b/skin/m15dt8blue/img/vip.png differ
diff --git a/skin/m15dt8blue/img/wei.png b/skin/m15dt8blue/img/wei.png
new file mode 100644
index 0000000..2acb9d0
Binary files /dev/null and b/skin/m15dt8blue/img/wei.png differ
diff --git a/skin/m15dt8blue/img/wei2.png b/skin/m15dt8blue/img/wei2.png
new file mode 100644
index 0000000..0c938f1
Binary files /dev/null and b/skin/m15dt8blue/img/wei2.png differ
diff --git a/skin/m15dt8blue/img/wlogo.png b/skin/m15dt8blue/img/wlogo.png
new file mode 100644
index 0000000..6b8c6d2
Binary files /dev/null and b/skin/m15dt8blue/img/wlogo.png differ
diff --git a/skin/m15dt8blue/img/wx.png b/skin/m15dt8blue/img/wx.png
new file mode 100644
index 0000000..3a5c1ad
Binary files /dev/null and b/skin/m15dt8blue/img/wx.png differ
diff --git a/skin/m15dt8blue/img/wxkf20200915.png b/skin/m15dt8blue/img/wxkf20200915.png
new file mode 100644
index 0000000..be0d33f
Binary files /dev/null and b/skin/m15dt8blue/img/wxkf20200915.png differ
diff --git a/skin/m15dt8blue/img/wyrz.png b/skin/m15dt8blue/img/wyrz.png
new file mode 100644
index 0000000..4bf6efb
Binary files /dev/null and b/skin/m15dt8blue/img/wyrz.png differ
diff --git a/skin/m15dt8blue/img/xmt_img.jpg b/skin/m15dt8blue/img/xmt_img.jpg
new file mode 100644
index 0000000..4c63c9a
Binary files /dev/null and b/skin/m15dt8blue/img/xmt_img.jpg differ
diff --git a/skin/m15dt8blue/img/xsj1759e71coinij030926.jpg b/skin/m15dt8blue/img/xsj1759e71coinij030926.jpg
new file mode 100644
index 0000000..f733c08
Binary files /dev/null and b/skin/m15dt8blue/img/xsj1759e71coinij030926.jpg differ
diff --git a/skin/m15dt8blue/img/xz.png b/skin/m15dt8blue/img/xz.png
new file mode 100644
index 0000000..dff4bf8
Binary files /dev/null and b/skin/m15dt8blue/img/xz.png differ
diff --git a/skin/m15dt8blue/img/youshi.png b/skin/m15dt8blue/img/youshi.png
new file mode 100644
index 0000000..08ad30a
Binary files /dev/null and b/skin/m15dt8blue/img/youshi.png differ
diff --git a/skin/m15dt8blue/img/yuan.png b/skin/m15dt8blue/img/yuan.png
new file mode 100644
index 0000000..3dc16be
Binary files /dev/null and b/skin/m15dt8blue/img/yuan.png differ
diff --git a/skin/m15dt8blue/img/zb-bg.jpg b/skin/m15dt8blue/img/zb-bg.jpg
new file mode 100644
index 0000000..83d9dad
Binary files /dev/null and b/skin/m15dt8blue/img/zb-bg.jpg differ
diff --git a/skin/m15dt8blue/img/zb-icons.png b/skin/m15dt8blue/img/zb-icons.png
new file mode 100644
index 0000000..361c22a
Binary files /dev/null and b/skin/m15dt8blue/img/zb-icons.png differ
diff --git a/skin/m15dt8blue/img/zoom_bg.gif b/skin/m15dt8blue/img/zoom_bg.gif
new file mode 100644
index 0000000..8f153c0
Binary files /dev/null and b/skin/m15dt8blue/img/zoom_bg.gif differ
diff --git a/skin/m15dt8blue/img/zph_icon2 (1).png b/skin/m15dt8blue/img/zph_icon2 (1).png
new file mode 100644
index 0000000..ac0cfe5
Binary files /dev/null and b/skin/m15dt8blue/img/zph_icon2 (1).png differ
diff --git a/skin/m15dt8blue/img/zph_icon2.png b/skin/m15dt8blue/img/zph_icon2.png
new file mode 100644
index 0000000..ac0cfe5
Binary files /dev/null and b/skin/m15dt8blue/img/zph_icon2.png differ
diff --git a/skin/m15dt8blue/index-b.css b/skin/m15dt8blue/index-b.css
new file mode 100644
index 0000000..2e39793
--- /dev/null
+++ b/skin/m15dt8blue/index-b.css
@@ -0,0 +1,334 @@
+@charset "utf-8";
+.dpn{ display:none;}
+.im0l{display: block}
+/*左右布局*/
+.m-screen .middle {width:732px;float:left;margin-left:215px;}
+.m-screen .right{width:238px;float:right;height:442px;padding:0px;}
+/*幻灯广告区域*/
+#focus{width:732px;height:350px;overflow:hidden;position:relative;}
+#focus ul{height:350px;position:absolute;}
+#focus ul li{float:left;width:732px;height:350px;overflow:hidden;position:relative;}
+#focus ul li img{width:732px;height:350px;}
+#focus ul li div{position:absolute;overflow:hidden;}
+#focus ul li p{display: block;position: absolute;bottom: 40px;font-size: 24px;color: #fff;font-weight: bold;height: 30px;line-height: 30px;padding-left: 30px;}
+#focus .btn{position:absolute;width:200px;height:14px;right:10px;bottom:30px;text-align:right;}
+#focus .btn span{display:inline-block;_display:inline;_zoom:1;width:12px;height:12px;_font-size:0;margin-right:5px;cursor:pointer;border:#fff 1px solid;margin-top: 7px;}
+#focus .btn span.on{background:#ff6000;height: 12px;width:12px;border:#ff6000 1px solid;margin-top: 10px;}
+#focus .preNext{width:45px;height:100px;position:absolute;top:150px;background:url(img/sprite.png) no-repeat 0 0;cursor:pointer;display: none;}
+#focus .pre{left:10px;}
+#focus .next{right:10px;background-position:right top;}
+/*幻灯区域下产品推荐*/
+.recomment-box{ width:732px; margin-top:15px; overflow:hidden;position:relative;box-shadow: 0px 0px 8px rgba(0,0,0,0.05);}
+.recomment-box li{float:left;width:732px;overflow:hidden;transition: all 0.2s linear 0s;font-size:12px;background:white;position:relative;}
+.recomment-box .tempWrap{overflow:hidden; position:relative; width:710px;margin:0px auto; background:white}
+.recomment-box .slick-btn-left{ width:30px; height:50px;background:url(img/leri.png) no-repeat 0px -60px; position:absolute; top:50%; z-index:1; left:0px; margin-top:-24px; cursor:pointer;}
+.recomment-box .slick-btn-right{ width:30px; height:50px;background:url(img/leri.png) no-repeat; position:absolute; top:50%; z-index:1; right:0px; margin-top:-24px; cursor:pointer;}
+.recomment-box li dd{float:left;}
+.recomment-box li dd:nth-child(1) a{float:left;display:block;height:141px;}
+.recomment-box li dd:nth-child(1) .text{width:100%;font-size:16px;font-weight:700; text-align:center}
+.recomment-box li dd:nth-child(1) a{float:left;padding:20px;display:block;width:155px; text-align:center}
+.recomment-box li dd:nth-child(1) img{width:80px;height:80px;margin:10px auto;float:none}
+.recomment-box li .text{float:left;font-size:16px;font-weight:700;}
+.recomment-box li .text p.sub{font-size:16px;color:#ff6700;font-weight:normal;margin-top:8px;}
+.recomment-box li .text p.sub i{font-size:12px;}
+.recomment-box li dd a{float:left;padding:15px 20px 15px 20px;display:block;border-left:#f5f5f5 1px solid;width:214px;height:60px;border-bottom:#f5f5f5 1px solid}
+.recomment-box li dd a img{width:60px;height:60px; float:right}
+
+/*右侧会员登陆区域*/
+.member{overflow:hidden;padding:27px 10px 23px 10px;box-shadow: 0px 0px 8px rgba(0,0,0,0.05);background:white}
+.member .btn-area{margin-top:10px;padding:0px 11px}
+.member .btn-area>a{display: block;width: 90px;height:28px;line-height:28px;text-align: center;color: #fff;background: linear-gradient(to right, #FF9900, #FF6700);border-radius:2px;border:#ff9900 1px solid;}
+.member .btn-area>a:hover{background-color:#ff5400;borer:#ff5400 1px solid}
+.member .btn-area a:nth-child(odd){float:left}
+.member .btn-area a:nth-child(even){float:right; background:white;border:#ff6000 1px solid;color:#ff6000}
+.wel{font-size:14px; text-align:center;}
+.wel p{line-height:25px}
+.wel .user_img { width: 40px; height:40px; border-radius:50%;overflow: hidden; margin:0px auto 9px;}
+.wel .user_img img { width: 40px;}
+.intery {border-top:#f7f7f7 1px solid;overflow:hidden;box-shadow: 0px 0px 8px rgba(0,0,0,0.05);background:white}
+.intery ul li { float:left; width:48px;overflow:hidden;padding-top:35px;height:70px; text-align:center;padding:0px 15px 10px;border-right:#f7f7f7 1px solid;border-bottom:#f7f7f7 1px solid}
+.intery ul li:nth-child(3n){border-right:none}
+.intery ul li a:hover{margin-top:-3px}
+.intery ul li a{width:48px;display:block;transition: all 0.5s;}
+.intery ul li a i{width:28px;height:24px;display:block;margin:15px 5px 10px;}
+.intery ul li.ico_01 i {background:url(img/icon-entry.png) no-repeat 4px 0px;}
+.intery ul li.ico_02 i {background:url(img/icon-entry.png) no-repeat -70px 0px;}
+.intery ul li.ico_03 i{background:url(img/icon-entry.png) no-repeat -144px 0px;}
+.intery ul li.ico_04 i{background:url(img/icon-entry.png) no-repeat -223px 0px;}
+.intery ul li.ico_05 i{background:url(img/icon-entry.png) no-repeat -300px 0px;}
+.intery ul li.ico_06 i{background:url(img/icon-entry.png) no-repeat -373px 0px;}
+
+/*公告区域切换样式*/
+.tz{overflow:hidden; background:white;margin-top:15px;box-shadow: 0px 0px 8px rgba(0,0,0,0.05)}
+.tz .qc-head{clear:both;font-size:14px;line-height:35px;text-align:center;overflow:hidden;background:#f5f5f5;}
+.tz .qc-head li{float:left;list-style-type:none;width:33%;font-weight:normal; cursor:pointer;}
+.tz .qc-head li.current{color:#ff6700; background:white;font-weight:bold}
+.tz .qc-body dl{overflow:hidden;background:white;padding:14px 10px 10px;}
+.tz .item{overflow:hidden;padding:0px 0px}
+.tz .item p{font-size:22px;color:#ff5400}
+.tz .qc-body dl ul{padding:2px 10px 0px 10px}
+.tz .qc-body dl li{line-height:30px;font-size:12px;height:30px;overflow:hidden}
+
+
+/*楼层开始*/
+.i-title{font-size:14px;height:60px;overflow:hidden; color:#777}
+.i-title b{font-size:20px;color:#000}
+
+
+
+
+
+
+
+.floor-title h2.f3{background:url(img/TB1SXX6n9zqK1RjSZFjXXblCFXa-49-49.jpg) no-repeat;background-size:25px 25px;padding-left:32px;}
+.floor-title .floor-menu {height: 20px; margin: 4px 0;width:100px; float:right; text-align:right}
+.floor-title .floor-menu a {display: inline-block; letter-spacing: normal; height: 20px; line-height: 20px; margin-left: 18px; font-size: 14px;color:#222}
+.floor-title .floor-menu a i {font-style:normal;color:#777;padding:0 0px 0px 5px; font-size:16px;font-weight:bold;font-family:simsun;}
+.floor-menu>.more{font-size: 16px;color: #666;}
+.floor-menu>.more>i{top:4px;width:15px;height:20px;margin-left:5px;background-position: 0 0;}
+.floor-menu>.more:hover{color: #e56639;}
+.floor-menu>.more:hover>i{background-position: -20px 0;}
+.tc-gs-i{position: relative;display: inline-block;background-image: url(img/tc-gongsi-icons.png);background-repeat: no-repeat;}
+.floor-menu>.more,.floor-menu>.more>i{-webkit-transition: all 0.2s ease;-moz-transition: all 0.2s ease;transition: all 0.2s ease;}
+.brand-list {background: #fff; box-shadow: rgba(227,227,227,.5) 0 0 6px; overflow: hidden;}
+.brand-list ul {overflow: hidden;}
+.brand-list li {float: left; width: 170px; height: 75px; border:#E9E9E9 solid ; border-width: 0 0 1px 1px; overflow: hidden;}
+.brand-list li a {display:block; position: relative; height: 100%; text-align: center}
+.brand-list li a img {margin: 13px auto; width:138px;}
+.brand-list li a p {position: absolute; left: 0px; bottom: -23px; display: block; height: 22px; width: 100%; line-height: 22px;transition: all 0.5s;-webkit-transition: all 0.5s;-ms-transition: all 0.5s;-moz-transition: all 0.5s;-o-transition: all 0.5s;}
+.brand-list li a p span {display: block; position: relative; width: 100%; line-height: 22px; text-align: center; font-size: 13px; color: #fff; z-index: 1;}
+.brand-list li a p::after {background: #000; display: block; content: ""; width: 100%; height: 22px; margin-top: -22px; opacity: 0.5; filter: alpha(opacity=50)}
+.brand-list li a:hover p {bottom: 0}
+
+
+
+.floor .top01 h2 { background: #f8814a;}
+.floor .top01 .cat { background:#f79d60;}
+
+.floor .top02 h2 { background: #048d85;}
+.floor .top02 .cat { background:#1fa29b;}
+
+.floor .top03 h2 { background: #0b8d04;}
+.floor .top03 .cat { background:#30ae29;}
+
+.floor .top04 h2 { background: #3f10d2;}
+.floor .top04 .cat { background:#5a0ceb;}
+
+.floor .top05 h2 { background: #1faaeb;}
+.floor .top05 .cat { background:#4bbefd;}
+
+.floor .top06 h2 { background: #0cbe7d;}
+.floor .top06 .cat { background:#31d398;}
+
+
+
+.floor .left {width:224px;float:left;}
+.floor .left h2 { display: block;height: 45px;line-height: 45px;font-size: 21px;padding: 0 10px; font-weight:normal;}
+.floor .left h2 a { color:#fff; margin-left:20px;}
+.floor .left h2 i { color:#fff;}
+.floor .cat { height: 290px; padding:20px 20px;}
+.floor .left .cat h3 {height: 30px; line-height: 30px; font-size: 19px; color: #fff; opacity: 0.8;font-weight:normal;}
+.floor .left .cat p {height: 20px; line-height: 20px; font-size: 15px; color: #fff; opacity: 0.5; margin-bottom:20px;}
+.floor .left .cat img{width:100%;transition: all 0.2s;}
+.floor .left .cat:hover img{transform: scale(1.02);}
+.floor .center-main {width: 500px; float:left; height: 335px;padding:19px 0 19px 20px; border:1px solid #eee; background:#fff;}
+.floor .center-main dl { float:left; width: 48%; margin:0 2% 2% 0; overflow:hidden; }
+.floor .center-main dl dt { display: block; height: 30px; line-height: 30px; font-size: 16px; color: #000;}
+.floor .center-main dl dt a{color:#000;}
+.floor .center-main dl dt a:hover{color:#1db3c9;}
+.floor .center-main dl dd{height:75px;overflow:hidden;}
+.floor .center-main dl dd a { display: inline-block;color:#777;margin-right: 20px;font-size: 14px; line-height:25px;}
+.floor .center-main dl dd a:hover{color:#1db3c9;}
+.floor .right-main ul { overflow:hidden; float:left; width: 453px; height: 373px; border:1px solid #eee; margin-left:-1px;}
+.floor .right-main ul li { float:left; width: 50%; height: 50%;background:#fff; display:inline-block; overflow:hidden;box-sizing: border-box;}
+.floor .right-main ul li:nth-child(2) { height: 100%;border-left:1px solid #eee;}
+.floor .right-main ul li:nth-child(3) { margin-top:-187px; border-top:1px solid #eee;}
+.floor li img{transition: all 0.3s;}
+.floor li:hover img{margin-left:-3px;-webkit-transition: all 0.2s ease;-moz-transition: all 0.2s ease;transition: all 0.2s ease;}
+
+
+
+/*产品样式*/
+.sell-box{width:592px;height:407px;background:#fff;margin:0px 0px 15px 0;position:relative}
+.sell-box h3{height:34px;line-height:34px;color:#fff;font-size:16px;position:absolute;left:0;top:20px;z-index:10;font-weight:normal}
+.sell-box h3.f1{background:#ff6843}
+.sell-box h3.f2{background:#35a6a4}
+.sell-box h3.f3{background:#5b55dd}
+.sell-box h3.f4{background:#0189ff}
+.sell-box h3.f5{background:#555ba6}
+.sell-box h3.f6{background:#1db3c9}
+.sell-box h3 a{color:white}
+.sell-box h3 span{padding:0 20px;display:block}
+.sell-box .left{float:left;width:234px;height:320px;border-right:1px solid #f1f1f1;overflow:hidden;position:relative}
+.sell-box .left a{display:table-cell;text-align:center;width:235px;height:320px;vertical-align:middle}
+.sell-box .left p{width:200px;text-align:center;position:absolute;left:17px}
+.sell-box .left img{width:220px;height:220px}
+.sell-box .left .til{font-size:16px;color:#333;top:265px;font-weight:600}
+.sell-box .left .tsg{font-size:12px;color:#999;top:290px}
+.sell-box .right{float:left;width:350px;height:320px}
+.sell-box .right img{width:85px;height:85px;}
+.sell-box .right li{float:left;width:85px;height:145px;padding:15px 45px 0px 45px;border-top:1px solid #f1f1f1;border-left:1px solid #f1f1f1;margin-top:-1px;margin-left:-1px;overflow:hidden;position:relative}
+.sell-box .right p{width:155px;text-align:center;position:absolute;left:15px}
+.sell-box .right .til{font-size:14px;color:#333;top:108px}
+.sell-box .right .tsg{font-size:12px;color:#999;top:130px}
+.floatimg li img{transition: all 0.3s;}
+.floatimg li:hover img{margin-left:-3px;-webkit-transition: all 0.2s ease;-moz-transition: all 0.2s ease;transition: all 0.2s ease;}
+
+.fLogo{clear:both;border-top:1px solid #f1f1f1;padding:18px 0 0 9px}
+.fLogo li{float:left;width:120px;overflow:hidden;border:1px solid #f1f1f1;margin:0 10px}
+.fLogo li img{width:100%}
+
+
+
+
+
+.news-box{background:white; overflow:hidden}
+.news-box dl{float:left}
+.news-box dl dt{font-size:18px;color:#333;height:40px;overflow:hidden;line-height:28px}
+.news-box dl dt span{float:right;font-size:14px;font-weight:normal}
+.news-box dl dt:before{content: "";width: 3px;height: 18px;background: #ff7900;float: left;margin:4px 10px 0px 0px;}
+.news-box dl{float:left;padding:20px;border-left:#eee 1px solid}
+.news-box dl:nth-child(1){width:559px;border-left:none}
+.news-box dl:nth-child(2){width:260px}
+.news-box dl:nth-child(3){width:250px}
+.news-box dl ul li{line-height:30px;font-size:14px}
+
+
+
+
+
+.ad{overflow:hidden;}
+.ad .left{float:left;}
+.ad .right{float:right;}
+
+
+.s-screen .left {width:880px;float:left;overflow:hidden}
+.s-screen .right{width:300px;float:right;overflow:hidden}
+
+
+
+
+.s-screen .left {width:850px;float:left;overflow:hidden}
+.s-screen .right{width:330px;float:right;overflow:hidden}
+
+
+
+
+
+
+/*友情链接*/
+.linkwrap{ width:100%;padding:30px 0;overflow:hidden;line-height:23px;font-size:14px;}
+.linkwrap dt{float:left;font-weight:bold;padding-right:5px}
+.linkwrap a{white-space:nowrap; color:#666; margin:0 8px 0px 0px; display:inline-block; line-height:23px}
+
+
+
+
+
+
+
+.f2ad img{width:49%}
+.f2ad img:nth-child(odd){float:left;}
+
+.f2ad img:nth-child(even){float:right;}
+
+
+
+.news{ width:1198px; height:517px; margin:20px auto; background:#fff; overflow:hidden;border:1px solid #eee;}
+.news_title{ width:1148px; height:68px; padding:0 25px; border-bottom:#eee 1px solid}
+.news_title h2{ float:left; line-height:68px; background:url(img/news_title_bg.png) left no-repeat; text-indent:30px; font-size:20px; color:#ff7200; }
+.news_title p{ float:right; height:14px; line-height:14px; font-size:14px; text-align:right; margin-top:27px;}
+.news_title p a{ margin-left:10px;}
+.news_title p a:hover{color:#1db3c9}
+.news_content{ width:1200px; height:450px; position:relative;}
+.news_content_left{ float:left; width:359px;padding:15px; height:450px;}
+.news_content_center{ float:left; width:500px;border-left:#eee 1px solid; height:450px;overflow:hidden}
+.news_content_center p{ height:60px; padding:19px 20px 10px; line-height:30px; font-size:12px; color:#999; overflow:hidden;}
+.news_content_center p a{ font-size:18px; padding-left:25px; background:url(img/news_content_center_p_a_bg.png) left no-repeat;font-weight:bold}
+.news_content_center ul{ padding:15px 20px 14px; border-bottom:1px solid #eee;}
+.news_content_center ul li{ height:30px; line-height:30px; font-size:12px;list-style:inside;float:none;}
+.news_content_center ul li a{ font-size:14px; padding-right:10px;}
+.news_content_center ul li span{ color:#999; float:right;}
+
+.news_content_right{ float:left; width:308px; height:449px; overflow:hidden; border-right:1px solid #eee; border-left:1px solid #eee; }
+.news_content_right_top{ width:100%; height:89px; border-bottom:1px solid #eee; background:url(img/news_content_right_top_bg.png) no-repeat top right;}
+.news_content_right p{ width:270px; height:80px; margin:0 19px; padding:15px 0 19px; border-top:1px dashed #eee; line-height:20px; color:#999; font-size:12px;}
+.news_content_right p:nth-child(2){border-top:none}
+.news_content_right p a{ font-size:14px;color:#000}
+.news_content_right p a:hover{color:#1db3c9}
+.news_content_right p span a{ font-size:12px; color:#2277e6; padding-right:4px;}
+.box{border:#e1e1e1 0px solid;border-top:#009237 0px solid;}
+.box ul{padding:0px 0px}
+.box ul li{line-height:33px;font-size:14px;height:33px;overflow:hidden}
+.box ul li:nth-child(1) em ,.box ul li:nth-child(2) em ,.box ul li:nth-child(3) em{background:#ff7200}
+.box ul li em{background:#999; display:block;width:20px; height:20px;float:left;margin-right:8px; text-align:center;line-height:18px;color:white;margin-top:8px;font-size:14px;border-radius:50%; font-style:normal}
+
+
+.floor-title { height: 30px; line-height: 15px;}
+.floor-title .f1 { font-size: 16px;}
+.floor-title .f1:before{ content:""; width: 3px;height: 16px; background:#1db3c9; float:left; margin-right:10px;}
+.gdbody dl{overflow:hidden;}
+.gdbody dl dd{float:left;width:259px;padding:17px 20px;position:relative;border-right:#eee 1px solid;border-bottom:#eee 1px solid;overflow:hidden;height:50px;}
+.gdbody dl dd h4{font-weight:normal;color:#333;width:170px;font-size:16px;height:25px;}
+.gdbody dl dd h4:hover{color:#1db3c9}
+.gdbody dl dd:nth-child(3),.gdbody dl dd:nth-child(6),.gdbody dl dd:nth-child(9),.gdbody dl dd:nth-child(12),.gdbody dl dd:nth-child(15){border-right:none}
+.gdbody dl dd p{color:#777;font-size:12px;margin-top:10px; text-align:left}
+.gdbody dl dd em{background:#777;color:white;position:absolute;right:20px;top:17px;display:block;padding:2px 10px 0px;font-size:12px;height:23px;line-height:23px;border-radius:15px;}
+.gdbody dl dd:hover em{background:#1db3c9}
+.gdbody dl dd font{color:red}
+.gdbody {background:white;overflow:hidden;width:900px;float:left;border:#eee 1px solid;padding:20px 30px}
+.purchase-send{height:296px;width:223px;float:right;background:#fff;position:relative;border:#eee 1px solid}
+.purchase-send a{display: block;}
+.purchase-sendtop{padding-top:12px;text-align:center;color:#282828;margin-bottom:6px}
+.purchase-sendtop h4{font-size:16px;line-height:30px}
+.purchase-sendtop p{font-size:12px;padding:3px 0 0}
+.purchase-sendtop p b{color:#d94536;font-weight:400}
+.unitBox{width:70px;float:right}
+.purchase-send{overflow:hidden;}
+.purchase-send ul{overflow:hidden;padding-bottom:15px}
+.purchase-send input{border:1px solid #e9eaec;height:32px;padding-left:6px;width:100%;color:#282828;font-size:12px;transition:.5s}
+.purchase-send input.w82{width:82px;float:left;overflow:hidden;margin-right:10px;}
+.purchase-send li{padding:10px 0px 0 20px;height:34px;font-size:12px;float:left;width:175px;}
+.unitBox p{height:32px;border:0;background:none;width:60px;line-height:32px;padding-left:6px;color:#1db3c9}
+.purchase-send button{display:block;width:140px;height:30px;background:#d94536;border-radius:50px;border:0;color:#fff;font-size:14px;margin:0px auto 0;z-index:6;line-height:30px;transition:.3s}
+.purchasePrompt{text-align:center;font-size:12px;color:#1db3c9;padding-top:12px}.blueTit{border-left:5px solid #2375da;padding-right:200px}.boxTitle.blueTit em{background:#2375da;margin-top:25px}
+
+
+
+.industry-bar {
+ position:fixed;top:220px;left:50%;margin-left:-660px;width:46px;display:none;
+ z-index:1000;
+ background:white;
+}
+.industry-bar.hover {
+ display:block
+}
+.industry-bar h5 {
+ height:26px;line-height:26px;padding:5px 0;background:#d10000;text-align:center;color:#fff
+}
+.industry-bar ul {
+ background:#fff
+}
+.industry-bar li {
+ padding:5px 8px;height:32px;line-height:16px;margin:0 auto;text-align:center;
+ border-bottom:#eee 1px solid
+}
+.industry-bar li a {
+ display:block;line-height:16px;font-size:12px;
+}
+.industry-bar li.current {
+ color:#fff;
+}
+.industry-bar li.current a{color:white}
+
+.industry-bar li.current:nth-child(1){background:#ff9900}
+.industry-bar li.current:nth-child(2){background:#fa7e19}
+.industry-bar li.current:nth-child(3){background:#1873d9}
+.industry-bar li.current:nth-child(4){background:#36ad95}
+.industry-bar li.current:nth-child(5){background:#8e4baa}
+.industry-bar li.current:nth-child(6){background:#ff7200}
+.industry-bar li.current:nth-child(7){background:#1db3c9}
+.industry-bar li.current:nth-child(8){background:#008800}
+.industry-bar li.current:nth-child(9){background:#1db3c9}
+.industry-bar li.current:nth-child(10){background:#006699}
+.industry-bar li.current:nth-child(11){background:#ff7200}
\ No newline at end of file
diff --git a/skin/m15dt8blue/index.css b/skin/m15dt8blue/index.css
new file mode 100644
index 0000000..df766b6
--- /dev/null
+++ b/skin/m15dt8blue/index.css
@@ -0,0 +1,131 @@
+@charset "utf-8";
+/*--------------------------------------------------
+慧一科技版权 - destoon模板定制仿站找慧一科技
+QQ:3292628658
+官网地址:http://www.destoon.info
+微 信:huiyikeji8
+淘宝店地址:https://destoonhy.taobao.com
+--------------------------------------------------*/
+.menu_v16 { margin-bottom:0px;}
+.menu_v16 .allmenu .im0l_v16 {display:block;}
+/*幻灯区*/
+.flexslider {position:absolute;width:100%;height:440px;overflow:hidden;zoom:1;}
+.flexslider .flex-viewport{max-height:2000px;-webkit-transition:all 1s ease;-moz-transition:all 1s ease;transition:all 1s ease;}
+.flexslider .slides{zoom:1;}
+.flexslider .slides .img { height:440px; display:block;}
+.flexslider .flex-direction-nav a{width:48px;height:90px;line-height:99em;overflow:hidden;margin-top:-60px;display:block;background:url(icon/ad_ctr.png) no-repeat;position:absolute;top:50%;cursor:pointer;opacity:0;filter:alpha(opacity=0);-webkit-transition:all .3s ease;}
+.flexslider .flex-direction-nav .flex-next{background-position:-9px -90px;right:50%; margin-right:-358px;}
+.flexslider .flex-direction-nav .flex-prev{left:50%; margin-left:-377px;}
+.flexslider:hover .flex-next{opacity:0.8;filter:alpha(opacity=25);}
+.flexslider:hover .flex-prev{opacity:0.8;filter:alpha(opacity=25);}
+.flexslider:hover .flex-next:hover, .flexslider:hover .flex-prev:hover{opacity:1;filter:alpha(opacity=50);}
+.flexslider .flex-control-nav{width:100%;position:absolute;bottom:10px;text-align:center;}
+.flexslider .flex-control-nav li{margin:0 5px;display:inline-block;zoom:1;*display:inline;}
+.flexslider .flex-control-paging li a{background:rgba(0,0,0,.3);display:block;height:10px;overflow:hidden;text-indent:-99em;width:10px;cursor:pointer; border-radius:50%;box-shadow: 0 0 3px rgba(255, 255, 255, .4);}
+.flexslider .flex-control-paging li a.flex-active{background:#1db3c9;}
+
+
+
+
+/*右侧会员登陆区域*/
+.ppt_v16 { position:relative; height:440px;}
+.ppt_v16 .right{width:220px;float:right;background:#fff;padding:0 10px 10px; box-sizing:border-box;position:relative; z-index:2; margin-top:10px;border-radius:4px;}
+.member{overflow:hidden;padding-bottom:20px;}
+.member .btn-area>a{display: block;width:48%;height:30px;line-height:30px;text-align: center;color: #fff;background: linear-gradient(to right, #1db3c9, #47d3dd);border-radius:4px;border:#1db3c9 0px solid;box-sizing:border-box;}
+.member .btn-area>a:hover{background-color:#1db3c9;borer:#1db3c9 1px solid}
+.member .btn-area a:nth-child(odd){float:left}
+.member .btn-area a:nth-child(even){float:right; background:white;border:#1db3c9 1px solid;color:#1db3c9}
+.wel{font-size:14px;}
+.wel p{line-height:25px}
+.wel .user_img {padding:15px 0; overflow:hidden;}
+.wel .user_img a { width: 55px; height:55px; border-radius:50%;border: 5px solid #f9f9f9;float:left;overflow:hidden; margin-right:10px;}
+.wel .user_img a img { width: 55px;}
+.wel .user_img .p_1 { font-size:12px; margin-top:10px;}
+.wel .user_img .p_2 { font-size:12px;font-family:"微软雅黑"}
+
+
+
+/*公告区域切换样式*/
+.tz{overflow:hidden;}
+.tz .qc-head{clear:both;font-size:12px;line-height:30px;text-align:center;overflow:hidden; border-bottom:1px solid #eee;}
+.tz .qc-head li{float:left;list-style-type:none;width:33.333333%;font-weight:normal; cursor:pointer;}
+.tz .qc-head li.current{color:#1db3c9;border-bottom:2px solid #1db3c9;}
+.tz .qc-body dl{overflow:hidden;padding-top:8px;}
+.tz .qc-body dl li{line-height:28px;font-size:12px;height:28px;overflow:hidden;}
+.tz .qc-body dl li a { color:#666;}
+.tz .qc-body dl li a:hover { color:#1db3c9;}
+.tz .qc-body dl li em { margin:0 5px;}
+
+
+/*精品商铺*/
+.shops_title { height:60px; line-height:60px;color:#000;}
+.shops_title strong { font-size:20px;}
+.shops_title em { font-size:18px; margin-left:10px;}
+.shops { padding: 0 20px 20px;background: #fff;box-shadow: 0px 0px 1px 1px #eaeaea;box-sizing:border-box;overflow:hidden;}
+.shops ul li { float:left; margin-right:1%; margin-bottom:10px; width:24.25%; background:#fafafa;padding:10px 16px; box-sizing:border-box;}
+.shops ul li:nth-child(4n+4) { margin-right:0;}
+.shops ul li h2 {display:block; height:46px; line-height:46px;}
+.shops ul li h2 img { width:46px; height:46px; border-radius:50%; float:left; box-sizing:border-box; border:1px solid #e4e4e4; margin-right:10px;}
+.shops ul li .shangp img { width:60px; height:60px; float:left; margin-right:10px;}
+.shops ul li .shangp p { font-size:12px; color:#222;}
+.shops ul li .shangp p.p_1 { height:16px; line-height:16px;}
+.shops ul li .shangp p.p_2 { height:28px; line-height:28px; font-weight:700; color:#e50012;}
+.shops ul li .shangp p.p_2 span { font-size:14px;}
+.shops ul li .shangp p.p_3 { color:#cea861;}
+.shops ul li .shangp .leibie { padding:10px 0 20px; overflow:hidden;}
+.shops ul li .shangp .leibie dl {float:left;width:60px;}
+.shops ul li .shangp .leibie dl dd {float:left;margin:5px 5px 0 0;width:4px;height:4px;background-color:#E4E4E4;}
+.shops ul li .shangp .leibie .lb_more {float:left;font-size:12px;background:#2abdd0;color:#fff;border-radius:2px;padding:2px 10px;box-sizing:border-box;margin-right:6px;}
+
+/*楼层*/
+.main_title { font-size:20px; height:60px; line-height:60px;}
+.main_title em,.main_title span { font-weight:700;margin-right:5px;}
+.main_title em.main_em1 { color:#159595;}
+.main_title em.main_em2 { color:#155d95;}
+.main_title em.main_em3 { color:#ff633f;}
+.main_title em.main_em4 { color:#32c980;}
+.main_title em.main_em5 { color:#b88e52;}
+.main_li1 ul li:hover { border:1px solid #159595;}
+.main_li2 ul li:hover { border:1px solid #155d95;}
+.main_li3 ul li:hover { border:1px solid #ff633f;}
+.main_li4 ul li:hover { border:1px solid #32c980;}
+.main_li5 ul li:hover { border:1px solid #b88e52;}
+.main_title span { color:#333;}
+.main_title .sort { float:right;}
+.main_title .sort a { display:inline-block; margin-left:20px; color:#999; font-size:12px; line-height:60px;}
+.main_title .sort a:hover { color:#1db3c9;}
+.main_title .sort a.main_more { position:relative; padding-right:25px;}
+.main_title .sort a.main_more:before { content:""; display:inline-block; width:1px; height:12px; background:#ccc;position:absolute; top:24px; left:-10px;}
+.main_title .sort a.main_more:after { content:"\e65a";font-family: 'iconfont';position:absolute;right:0px; font-size:16px;}
+.main_title .sort a.main_more:hover { color:#cea861;}
+.main_left { width:290px; height:400px; float:left;transition: all .5s;}
+.main_left:hover { filter: brightness(1.1);-webkit-filter: brightness(1.1);}
+.main_right { width:910px; float:left;background:#fff;}
+.main_right ul { height:400px;}
+.main_right ul li { float:left; width:20%;height:50%; box-sizing:border-box; padding:10px;text-align:center;border:1px solid #eee; border-left:1px solid transparent;border-bottom:1px solid transparent;}
+.main_right ul li .image { width:128px; display:inline-block;}
+.main_right ul li img { width:100%;transition:all .5s;}
+.main_right ul li:hover img { transform: scale(1.05);}
+.main_right ul li p { font-size:12px; color:#333; font-weight:700;margin-top:8px;}
+.main_right ul li span { display:block; color:#999; margin-top:8px;}
+
+/*资讯*/
+.news_v83 {overflow:hidden;}
+.news_v83 ul {background:#fff;float:left;width:32.6666667%;height:281px;box-sizing:border-box;padding:10px;margin-right:1%;margin-top: 10px;}
+.news_v83 ul:nth-child(3n+3) { margin-right:0;}
+.news_v83 ul .news_title {height:24px;line-height:24px;padding:8px 0 16px;border-bottom:1px solid #e3e3e3;margin-bottom:10px;}
+.news_v83 ul .news_title span {font-size:18px;font-weight:700;color:#333;padding-left:8px;border-left:4px solid #21a3b2;}
+.news_v83 ul .news_title a {float:right; color:#666; font-size:14px; position:relative;padding-right:20px;}
+.news_v83 ul .news_title a:hover { color:#0099aa;}
+.news_v83 ul .news_title a:after { font-family: 'iconfont';position:absolute;right:0px; font-size:18px;}
+.news_v83 ul li {line-height:34px;font-size:14px;height:34px;}
+.news_v83 ul li span {color:#999;float:right;margin-right:10px;}
+.news_v83 ul li p {float:left;max-width:74%;}
+
+
+/*友情链接*/
+.link{padding:10px 20px 15px;overflow:hidden;line-height:23px;font-size:14px;background:white;}
+.link dt{padding-right:5px;font-size:16px;height:35px;margin-bottom:8px;color:#000;font-weight:700; border-bottom:1px solid #eee;}
+.link dt em{border-bottom:#1db3c9 1px solid;height:35px;display:block;float:left}
+.link a{white-space:nowrap; color:#666; margin:10px 15px 0px 0px; display:inline-block; line-height:23px;font-size:14px}
+.link a:hover{color:#1db3c9}
\ No newline at end of file
diff --git a/skin/m15dt8blue/index.html b/skin/m15dt8blue/index.html
new file mode 100644
index 0000000..c1e1f00
--- /dev/null
+++ b/skin/m15dt8blue/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/skin/m15dt8blue/index20200911.css b/skin/m15dt8blue/index20200911.css
new file mode 100644
index 0000000..378d262
--- /dev/null
+++ b/skin/m15dt8blue/index20200911.css
@@ -0,0 +1,253 @@
+@charset "utf-8";
+.menu_v16 { margin-bottom:0px;}
+.menu_v16 .allmenu .im0l_v16 {display:block;}
+html{background:#f2f2f2;}
+
+.dpn{ display:none;}
+.im0l{display: block}
+.logo{width:280px;}
+.head-b{margin-bottom:0px;}
+#search_tips {margin:78px 0 0 360px;}
+/*左右布局*/
+.m-screen .right{width:230px;float:right;height:470px;margin-top:10px; z-index:100; position: relative; background:#fff;border-radius:1px;box-shadow: 0px 0px 8px rgba(0,0,0,0.05);overflow:hidden;border-radius:5px;}
+.m-screen .middle{float:left;}
+
+/*右侧会员登陆区域*/
+.member{overflow:hidden;padding:21px 0px 25px;background:#fff;margin:0px 20px;}
+.member .btn-area{margin-top:20px;}
+.member .btn-area>a{display: block;height:28px;width:93px;line-height:28px;text-align: center;color: #fff;background: #1db3c9; border-radius:15px;}
+.member .btn-area>a:hover{background-color:#236dae;borer:#1db3c9 1px solid}
+
+.member .btn-area .login-btn { float:left; border-radius:15px 0 0 15px; border:1px solid #1db3c9;}
+.member .btn-area .reg-btn { float:left; border-radius:0 15px 15px 0; background:#fff; border:1px solid #1db3c9; color:#1db3c9;}
+.member .btn-area .reg-btn:hover { background:#fff; font-weight:700;}
+
+.wel{font-size:14px; text-align:center;}
+.wel .wel_basic .user_img { float:left; margin-right:10px;}
+.wel p{line-height:25px; text-align:left; height:25px; overflow:hidden;}
+.wel .user_img { width: 50px; height:50px; border-radius:50%;overflow: hidden;}
+.wel .user_img img { width: 50px;}
+
+.m-screen .right .inter>span { display:block; height:28px; line-height:28px; background:#ddd; color:#1db3c9; text-align:center;}
+.m-screen .right .inter{overflow:hidden;background:#fff;border-top:#eee 1px solid}
+.m-screen .right .inter ul li { float:left; width: 33.333333%; height:80px; text-align:center;padding-top:2px; border-bottom: 1px solid #eee;border-right: 1px solid #eee;
+-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;-webkit-transition: all .2s;-moz-transition: all .2s;-ms-transition: all .2s;-o-transition: all .2s;transition: all .2s;}
+.m-screen .right .inter ul li:nth-child(3n+3) { border-right:none;}
+.m-screen .right .inter ul li:nth-child(1n+4) { border-bottom:none;}
+.m-screen .right .inter ul li:hover {padding-top:0px;}
+.m-screen .right .inter ul li:hover a {color:#1db3c9;}
+.m-screen .right .inter ul li a { color:#666;}
+.m-screen .right .inter ul li a i { font-size: 22px; background: #0b2338;-webkit-background-clip: text;color: transparent;}
+.m-screen .right .inter ul li a p { font-size: 12px; line-height:24px;}
+
+/*公告区域切换样式*/
+.tz{overflow:hidden;border-top:#eee 1px solid}
+.tz .qc-head{clear:both;font-size:14px;line-height:50px;text-align:center;overflow:hidden;border-bottom:#eee 1px solid}
+.tz .qc-head li{float:left;list-style-type:none;width:33%;font-weight:normal; cursor:pointer;}
+.tz .qc-head li.current{color:#1db3c9; background:white;font-weight:bold}
+.tz .qc-head li.current span { border-bottom:2px solid #1db3c9; padding:5px 0px;}
+.tz .qc-body dl{overflow:hidden;padding:5px 10px}
+.tz .item{overflow:hidden;padding:0px 0px}
+.tz .item p{font-size:22px;color:#ff5400}
+.tz .qc-body dl ul{padding:2px 10px 0px 10px}
+.tz .qc-body dl li{line-height:25px;font-size:12px;height:25px;overflow:hidden;width:103%;}
+.tz .qc-body dl li a { color:#555;}
+.tz .qc-body dl li:hover a { color:#1db3c9;}
+
+/*楼层开始*/
+.brand-list {background: #fff; box-shadow: rgba(227,227,227,.5) 0 0 6px; overflow: hidden;}
+.brand-list ul {overflow: hidden;}
+.brand-list li {float: left; width: 170px; height: 75px; border:#E9E9E9 solid ; border-width: 0 0 1px 1px; overflow: hidden;}
+.brand-list li a {display:block; position: relative; height: 100%; text-align: center}
+.brand-list li a img {margin: 13px auto; width:138px;}
+.brand-list li a p {position: absolute; left: 0px; bottom: -23px; display: block; height: 22px; width: 100%; line-height: 22px;transition: all 0.5s;-webkit-transition: all 0.5s;-ms-transition: all 0.5s;-moz-transition: all 0.5s;-o-transition: all 0.5s;}
+.brand-list li a p span {display: block; position: relative; width: 100%; line-height: 22px; text-align: center; font-size: 13px; color: #fff; z-index: 1;}
+.brand-list li a p::after {background: #000; display: block; content: ""; width: 100%; height: 22px; margin-top: -22px; opacity: 0.5; filter: alpha(opacity=50)}
+.brand-list li a:hover p {bottom: 0}
+
+.s-floor-a .top01 {background-color: #b0c2ce;background-image: linear-gradient(to bottom,#d0d6db,#b0c2ce);}
+.s-floor-a .top02 {background-color: #b9cfc7;background-image: linear-gradient(to bottom,#cbdcd7,#b9cfc7);}
+.s-floor-a .top03 {background-color: #c7c0ab;background-image: linear-gradient(to bottom,#d9d4c5,#c7c0ab);}
+.s-floor-a .top04 {background-color: #b9cfc7;background-image: linear-gradient(to bottom,#cbdcd7,#b9cfc7);}
+.s-floor-a .top05 {background-color: #c6c8d6;background-image: linear-gradient(to bottom,#cfd2e1,#c6c8d6);}
+.s-floor-a .top06 {background-color: #d9c3c6;background-image: linear-gradient(to bottom,#e6d3d5,#d9c3c6);}
+.s-floor-a .top07 {background-color: #b0c2ce;background-image: linear-gradient(to bottom,#d0d6db,#b0c2ce);}
+.s-floor-a .top08 {background-color: #b9cfc7;background-image: linear-gradient(to bottom,#cbdcd7,#b9cfc7);}
+.s-floor-a .top09 {background-color: #b0c2ce;background-image: linear-gradient(to bottom,#d0d6db,#b0c2ce);}
+.s-floor-a .top010 {background-color: #b0c2ce;background-image: linear-gradient(to bottom,#d0d6db,#b0c2ce);}
+.s-floor-a .top011 {background-color: #b0c2ce;background-image: linear-gradient(to bottom,#d0d6db,#b0c2ce);}
+.s-floor-a .top012 {background-color: #b0c2ce;background-image: linear-gradient(to bottom,#d0d6db,#b0c2ce);}
+.s-floor-a .top013 {background-color: #b0c2ce;background-image: linear-gradient(to bottom,#d0d6db,#b0c2ce);}
+.s-floor-a .top014 {background-color: #b0c2ce;background-image: linear-gradient(to bottom,#d0d6db,#b0c2ce);}
+
+
+
+.m div.floor:nth-child(even){float:left}
+.m div.floor:nth-child(odd){float:right}
+
+
+
+/*标题样式*/
+.i-title{font-size:14px;height:24px;overflow:hidden; color:#777}
+.i-title b{font-size:20px;color:#000;}
+.i_title_xh { color: #999;font-size: 12px;font-weight: 700;height:40px; line-height:40px; position:relative;padding-left:50px;}
+.i_title_xh i { font-weight:400; font-size:32px; margin-right:10px; padding:0px 2px; display:inline-block;color:#1db3c9;}
+.i_title_xh .i_xh_01 { font-size:36px; position:absolute;left:0px; top:-1px;}
+.i_title_xh .i_xh_02 { font-size:24px; position: relative;top: 2px; background: linear-gradient(90deg,#d10000 0%,#ff512c 80%);-webkit-background-clip: text;color: transparent;}
+.i_title_xh span { display: inline-block;width: 80%;height: 2px;background: linear-gradient(90deg,#1db3c9 0%,#ff512c 80%);margin-left: 24px;}
+
+.i_title_center { text-align:center; }
+.i_title_center b { display:block; font-size:26px; color:#1db3c9;}
+.i_title_center p { display:block; font-size:14px; color:#666; padding:10px}
+/*--------*/
+
+
+
+
+/*热门资讯*/
+.news{ width:1218px; height:517px; margin:20px auto; background:#fff; overflow:hidden;border:1px solid #eee;border-radius: 10px;}
+.news_title{ height:68px; padding:0 25px; border-bottom:#eee 1px solid}
+.news_title h2{ float:left; line-height:68px; background:url(img/news_title_bg.png) left no-repeat; text-indent:30px; font-size:20px; color:#ff7200; }
+.news_title p{ float:right; height:14px; line-height:14px; font-size:14px; text-align:right; margin-top:27px;}
+.news_title p a{ margin-left:10px;}
+.news_title p a:hover{color:#1db3c9}
+.news_content{ width:1220px; height:450px; position:relative;}
+.news_content_left{ float:left; width:359px;padding:15px; height:450px;}
+.news_content_center{ float:left; width:520px;border-left:#eee 1px solid; height:450px;overflow:hidden}
+.news_content_center p{ height:60px; padding:19px 20px 10px; line-height:30px; font-size:12px; color:#999; overflow:hidden;}
+.news_content_center p a{ font-size:18px; padding-left:25px; background:url(img/news_content_center_p_a_bg.png) left no-repeat;font-weight:bold}
+.news_content_center ul{ padding:15px 20px 14px; border-bottom:1px solid #eee;}
+.news_content_center ul li{ height:30px; line-height:30px; font-size:12px;list-style:inside;float:none;}
+.news_content_center ul li a{ font-size:14px; padding-right:10px;}
+.news_content_center ul li span{ color:#999; float:right;}
+
+.news_content_right{ float:left; width:308px; height:449px; overflow:hidden; border-right:1px solid #eee; border-left:1px solid #eee; }
+.news_content_right_top{ width:100%; height:89px; border-bottom:1px solid #eee; background:url(img/news_content_right_top_bg.png) no-repeat top right;}
+.news_content_right p{ width:270px; height:80px; margin:0 19px; padding:15px 0 19px; border-top:1px dashed #eee; line-height:20px; color:#999; font-size:12px;}
+.news_content_right p:nth-child(2){border-top:none}
+.news_content_right p a{ font-size:14px;color:#000}
+.news_content_right p a:hover{color:#1db3c9}
+.news_content_right p span a{ font-size:12px; color:#2277e6; padding-right:4px;}
+
+.box{border:#e1e1e1 0px solid;border-top:#009237 0px solid;}
+
+.box ul{padding:0px 0px}
+.box ul li{line-height:33px;font-size:14px;height:33px;overflow:hidden}
+.box ul li:nth-child(1) em ,.box ul li:nth-child(2) em ,.box ul li:nth-child(3) em{background:#ff7200}
+.box ul li em{background:#999; display:block;width:20px; height:20px;float:left;margin-right:8px; text-align:center;line-height:18px;color:white;margin-top:8px;font-size:14px;border-radius:50%; font-style:normal}
+
+
+/*友情链接*/
+.link{padding:10px 20px 15px;overflow:hidden;line-height:23px;font-size:14px;background:white;border-radius:10px;}
+.link dt{padding-right:5px;font-size:16px;height:35px;margin-bottom:8px;color:#000;font-weight:700; border-bottom:1px solid #eee;}
+.link dt em{border-bottom:#1db3c9 1px solid;height:35px;display:block;float:left}
+.link a{white-space:nowrap; color:#666; margin:10px 15px 0px 0px; display:inline-block; line-height:23px;font-size:14px}
+.link a:hover{color:#1db3c9}
+
+
+
+.industry-bar {position:fixed;top:220px;left:50%;margin-left:-730px;width:58px;display:none;z-index:1000;background:#fff;}
+.industry-bar.hover {display:block}
+.industry-bar li { height:60px; font-size:14px;}
+.industry-bar li:hover { background:#1db3c9;}
+.industry-bar li:hover a { color:#fff;}
+.industry-bar li a {display:block; width:28px; color:#333;margin:0 auto;padding:11px 0; border-bottom:1px solid #ddd;}
+.industry-bar li:last-child a { border-bottom:none;}
+.industry-bar li.current a {color:#1db3c9;}
+.industry-bar li.current:hover a { color:#fff;}
+
+
+
+
+.s-floor-a {overflow:hidden;}
+.s-floor-a .left{width:260px;float:left; height:493px;padding-top:30px; position:relative; border-radius:10px;}
+
+.s-floor-a .left h3{font-size:26px; text-align:center; line-height:35px; font-weight:700;}
+.s-floor-a .left h3 a { color: #fff;}
+.s-floor-a .left .s_banner_img { width: 100%;height: 340px; overflow:hidden;}
+.s-floor-a .left .s_banner_img img { width:260px; height:310px;}
+.s-floor-a .left .s_banner_img p { margin: 5px 0px 7px;letter-spacing: .7px;font-size: 16px;color: #fff;text-align:center;}
+.s-floor-a .left .cat { position:absolute; bottom:20px; left:0px;}
+.s-floor-a .left .cat dl{font-size:12px;line-height:23px;margin-top:10px;overflow:hidden;}
+.s-floor-a .left .cat dl a{width:110px; display:block; border-radius:15px; height:30px;line-height:30px;font-size:14px;margin-top:10px; text-align:center;
+color: #fff;border: 1px solid #fff;border: 1px solid hsla(0,0%,100%,.6);background: hsla(0,0%,95%,.2); -webkit-transition: all 0.3s ease;
+ -o-transition: all 0.3s ease;
+ transition: all 0.3s ease;}
+.s-floor-a .left .cat dl a:hover {background: hsla(0,0%,95%,.5);}
+.s-floor-a .left .cat dl dd{ width:45%; display:block;float:left;margin-left:3%;}
+.s-floor-a .right{width:940px;float:left;}
+.s-floor-a .right img{width:160px;height:160px;margin-bottom:10px; -webkit-transition: all .3s;
+ -moz-transition: all .3s;
+ -ms-transition: all .3s;
+ -o-transition: all .3s;
+ transition: all .3s; }
+.s-floor-a .right ul li:hover img { margin-left:-5px;}
+
+.s-floor-a .right li{float: left; width: 160px; height: 212px; padding: 21px 32px; background: white; overflow: hidden; position: relative;border-radius:10px; margin: 0px 0px 10px 10px;
+box-shadow: 0px 0px 8px rgba(0,0,0,0.05);}
+.s-floor-a .right li:nth-child(1n+5) { margin: 0px 0px 0px 10px;}
+.s-floor-a .right p{text-align:center;line-height:23px;}
+.s-floor-a .right .til{font-size:14px;color:#333;}
+.s-floor-a .right .tsg{font-size:18px;color:#d0021b;}
+.s-floor-a .right .tsg i { font-size:12px;}
+.s_company_img .m img { border-radius:10px;}
+
+
+
+/*幻灯广告区域*/
+.m0{width:100%; position:relative; overflow:hidden;height:500px;}
+.slider{z-index:0;overflow:hidden;width:100%;position:absolute;top:0;height:500px;}
+.slider_stage li{height:500px}
+.slider_stage a{ display:block; width:100%;height:500px; }
+.slider_stage { width:100%; height:500px; overflow: hidden;}
+.prev,.next{ display:block; width:38px; height:84px; position:absolute; top:50%; margin-top:-42px; z-index:10; cursor:pointer;}
+.prev1,.next1{ background:url(img/header_icon.png) no-repeat; display:none;}
+.prev:focus,.next:focus{ outline:none}
+.prev{ left:50%; margin-left:-380px;background-position:-312px -3px;}
+.next{ right:50%; margin-right:-370px;background-position:-312px -87px;}
+.slider:hover .prev1,.slider:hover .next1{ display:block }
+.slider-menu-1 { position: absolute;bottom: 0px;width: 100%;height: 54px;text-align: center;z-index: 50; /*background:url(img/bg-slide.png) no-repeat;*/ background-size:1920px;}
+.slider-menu-1-box { width:750px; margin:0 auto;}
+.slider-menu-1 ul { padding-left:0px; text-align:center;}
+.slider-menu-1 ul li { position:relative; display:inline-block; *display:inline; *zoom:1;}
+.slider-menu-1 ul li a { display:block; width:12px; height:12px;margin:0px 5px; border-radius:6px;background:rgba(255,255,255,.6);
+ -webkit-transition: all .5s;
+ -moz-transition: all .5s;
+ -ms-transition: all .5s;
+ -o-transition: all .5s;
+ transition: all .5s; }
+.slider-menu-1 ul li.current a { background:#fff; width:25px; height:12px;}
+
+.m-screen { z-index:100;}
+
+
+
+
+
+
+
+
+.brand-list {background: #fff; box-shadow: rgba(227,227,227,.5) 0 0 6px; overflow: hidden;width:1200px;border-radius:10px; margin-top:15px;}
+.brand-list ul {overflow: hidden;}
+.brand-list li {float: left; width: 199px; padding:0px 0px;height: 105px; line-height:105px; border:#E9E9E9 solid ; border-width: 0 0 1px 1px; overflow: hidden;}
+.brand-list li a {display:block; position: relative; height: 100%; text-align: center}
+.brand-list li a img {margin: 0px auto; width:140px;}
+.brand-list li a p {position: absolute; left: 0px; bottom: -23px; display: block; height: 22px; width: 100%; line-height: 22px;transition: all 0.5s;-webkit-transition: all 0.5s;-ms-transition: all 0.5s;-moz-transition: all 0.5s;-o-transition: all 0.5s;}
+.brand-list li a p span {display: block; position: relative; width: 100%; line-height: 22px; text-align: center; font-size: 13px; color: #fff; z-index: 1;}
+.brand-list li a p::after {background: #000; display: block; content: ""; width: 100%; height: 22px; margin-top: -22px; opacity: 0.5; filter: alpha(opacity=50)}
+.brand-list li a:hover p {bottom: 0}
+
+
+
+
+
+/*sp-box*/
+.sp-box{background:url(img/c99b95e.png) no-repeat center top;height:150px}
+.sp-box .left{float:left;width:300px;margin-left:50px;margin-top:40px}
+.sp-box .right{float:right;width:450px;margin-right:80px}
+.sp-box .sp-title{font-size:24px;color:white;margin-top:30px;line-height:30px;font-weight:bold}
+.sp-box .sp-title em{display:block;background:white;border-radius:15px;float:left;color:#ff6000;padding:0px 10px;margin-right:5px; letter-spacing:3px}
+.gdbody {padding:0px 10px; background:white;height:30px; overflow:hidden;border-radius:15px;margin-top:12px}
+.gdbody li {line-height:30px;font-size:14px;height:30px;overflow:hidden; background:url(img/xiaolaba.png) no-repeat left center; background-size:18px 16px;padding-left:20px;}
+
+
diff --git a/skin/m15dt8blue/info.css b/skin/m15dt8blue/info.css
new file mode 100644
index 0000000..7cba079
--- /dev/null
+++ b/skin/m15dt8blue/info.css
@@ -0,0 +1,230 @@
+@charset "utf-8";
+/*
+ [DESTOON B2B System] Copyright (c) 2008-2018 www.destoon.com
+ This is NOT a freeware, use is subject to license.txt
+*/
+html{background:#f2f2f2;}
+.info_main {padding:10px 10px 0 10px;}
+.info_main li {padding:8px 0 8px 15px;}
+
+.brand {padding:5px 0 5px 0;}
+.brand img {padding:3px;}
+.brand li {height:22px;line-height:22px;overflow:hidden;}
+
+.info-left{width:280px; float:left}
+
+.info-cate{
+ background: #fff;
+ border: 1px solid #f1ebe7;
+ box-shadow: 0 1px 3px 0 rgba(55,18,0,.05);
+}
+.info-cate dl{
+ padding: 20px 10px 20px 20px;
+ border-bottom:1px solid #eaeaea;
+}
+.info-cate dl dt{font-size:16px;color: #000;
+}
+
+.info-cate dl dd {
+ margin: 10px 0 0 -10px;
+}
+.info-cate dl dd a{
+ min-width:50px;
+ margin-left:10px;
+ display: inline-block;
+ line-height:30px;
+ color: #666;
+ font-size:14px;
+}
+.info-cate dl dd a:hover{
+ text-decoration: underline;
+ color: #1db3c9;
+}
+.info-cate ul{overflow:hidden}
+.info-cate h2{font-size:18px;padding:18px;color:#000;font-weight:normal;border-bottom:#eee 1px solid}
+.info-cate h2:before{content: "";width: 3px;height: 16px;background: #1db3c9;float: left;margin:4px 7px 0px 0px;}
+.info-box{background: #fff;border: 1px solid #f1ebe7;box-shadow: 0 1px 3px 0 rgba(55,18,0,.05)}
+.info-box h3{font-size:18px;padding:18px;color:#000;font-weight:normal;border-bottom:#eee 1px solid}
+.info-box h3 a{color:#000}
+.info-box h3:before{content: "";width: 3px;height: 16px;background: #1db3c9;float: left;margin:4px 7px 0px 0px;}
+.info-box h2{font-size:18px;font-weight:normal;margin-bottom:10px}
+.info-box h2 a{color:#000}
+.info-box h2 a:hover{color:#1db3c9}
+.info-box ul li{border-bottom:#eee 1px dotted;padding:20px 25px;overflow:hidden}
+.li-info{font-size:14px;}
+.li-info em{margin-right:15px;float:left;height:20px;line-height:20px;}
+.li-info em:nth-child(1):before{content: "";width: 20px;height: 20px;background: url(img/zb-icons.png) no-repeat;float: left;margin:0px 8px 0px 0px;}
+.li-info em:nth-child(2):before{content: "";width: 20px;height: 20px;background: url(img/zb-icons.png) no-repeat -60px 0;float: left;margin:0px 5px 0px 0px;}
+.li-info em:nth-child(3):before{content: "";width: 20px;height: 20px;background: url(img/zb-icons.png) no-repeat -40px 0;float: left;margin:0px 5px 0px 0px;}
+.li-info em:nth-child(4):before{content: "";width: 20px;height: 20px;background: url(img/zb-icons.png) no-repeat -20px 0;float: left;margin:0px 5px 0px 0px;}
+.li-info em a{border-bottom:#dadada 1px dotted; display:block;float:left}
+.li-info em i{padding-left:15px;color:#999}
+.company-show-name, .company-show-img,.bid-list-item{-webkit-transition: all 0.2s ease; -moz-transition: all 0.2s ease;transition: all 0.2s ease;}
+
+
+.info-right{width: 890px;}
+
+
+.zb-i{
+ display: inline-block;
+ position: relative;
+ width:50px;
+ height: 50px;
+ background-image: url("img/zb-icons.png");
+ background-repeat: no-repeat;
+ margin:0px auto;
+ display:block;
+ overflow:hidden
+}
+
+.zb-i-release{
+ background-position: 0 -100px;
+}
+.zb-i-company{
+ background-position: -50px -100px;
+}
+
+/*bid-slider*/
+.bid-slider{
+ position: relative;width:740px; overflow:hidden
+}
+
+.bid-btn-area{
+ width:148px;
+ float:right;
+ overflow:hidden;border:#eee 1px solid
+}
+.bid-btn-area>a{
+ position: relative;
+ display: block;
+ height:106px;
+ border-bottom:#eee 1px solid;
+ text-align: center;
+ font-size: 16px;
+ background-color: #fff;
+ -webkit-transition: all 0.2s ease;
+ -moz-transition: all 0.2s ease;
+ transition: all 0.2s ease;
+ padding-top:30px;;
+}
+.bid-btn-area>a:hover{
+ box-shadow: 0 2px 15px 2px rgba(0,0,0,.03), 0 12px 12px 2px rgba(0,0,0,.04);
+ z-index: 9;
+}
+
+a.bid-more-btn{
+ display: block;
+ text-align: center;
+ padding:15px 0;
+ color: #666;
+ font-size:14px;
+ border-top:#eee 1px solid
+}
+a.bid-more-btn:hover{
+ color: #e53935;
+ background-color: #fafafa;
+}
+
+.company-show-item{
+ position: relative;
+ float: left;
+ width:139px;
+ height:135px;
+ overflow: hidden;
+ margin:-1px 0 0 -1px;
+ border-top:1px solid #eee;
+ border-left: 1px solid #f1ebe7;
+}
+.company-show-img{
+ width: 86px;
+ height: 86px;
+ padding: 24px;
+}
+.company-show-name{
+ position: absolute;
+ left:0;
+ bottom:-54px;
+ width:120px;
+ height:36px;
+ padding:8px 10px;
+ font-size: 12px;
+ line-height:1.5;
+ background-color: #e53935;
+ background-color: rgba(0,0,0,.7);
+ color: #fff;
+}
+.company-show-item:hover{
+ z-index: 2;
+ box-shadow: 0 0 18px 0 rgba(0,0,0,.08);
+}
+.company-show-item:hover .company-show-img{
+ -webkit-transform: scale(1.2);
+ transform: scale(1.2);
+}
+.company-show-item:hover .company-show-name{
+ bottom:0;
+}
+
+
+.s-info-left{width:870px;float:left;padding:0px;background: #fff;border: 1px solid #f1ebe7;box-shadow: 0 1px 3px 0 rgba(55,18,0,.05);border-radius:4px;}
+.s-info-left .left{float:left;margin-right:10px}
+.s-info-left .left img{margin:20px 0px 0px 20px;padding:10px;border-radius:5px;box-shadow: 0px 0px 3px rgba(0,0,0,0.15);}
+.s-info-left .right{overflow:hidden}
+.s-info-left h1{padding:20px 20px 20px 20px;font-size:24px;color:#333;font-weight:normal}
+.s-info-left .li-info{padding:0 20px 10px 20px}
+.s-info-left .content{padding:20px 20px 30px 20px;font-size:16px;line-height:32px}
+.s-info-right{width:300px;float:right}
+.s-info-right .contact_head{background:white;overflow:hidden;border:none;border-bottom:#eee 1px solid}
+.s-info-right .contact_body{background:white;overflow:hidden;border:none}
+.s-info-right .c-box{background: #fff;border: 1px solid #f1ebe7;box-shadow: 0 1px 3px 0 rgba(55,18,0,.05)}
+
+.bid-content-time{
+ margin-top: 30px;
+ padding:15px 30px;
+ background-color: #fafafa;
+ border-top: 1px solid #f1ebe7;
+ border-bottom: 1px solid #f1ebe7;
+}
+.bid-content-time em{
+ display: block;
+ font-size: 20px;
+ font-weight: bold;
+ font-style: normal;
+ color: #444;
+}
+.bid-content-time span{
+ color: #999;
+ line-height: 30px;
+}
+.bid-content-time-start,.bid-content-time-end{
+ display: inline-block;
+}
+.bid-content-time-start{
+ margin-right:40px;
+}
+.bid-content-time-end{
+ margin-left:40px;
+}
+
+.bid-fav-from-btn{
+ margin-top:7px;
+ padding:0 20px;
+ font-size: 16px;
+ text-align:center;
+ line-height:40px;
+ width:80px;
+ background-color: #e53935;
+ border:none;
+ cursor: pointer;
+ color: #fff;
+ outline:none;
+ float:right
+}
+.bid-fav-from-btn:hover{
+ background-color: #ff4337;
+}
+.box{background:white; overflow:hidden;border-radius:4px;box-shadow: 0px 0px 3px rgba(0,0,0,0.15)}
+.box dt{line-height:40px;font-size:18px;padding:5px 15px;border-bottom:#eee 1px solid;color:#000}
+.box dt span{float:right;font-size:14px;}
+.box ul{padding:12px 15px; }
+.box ul li{line-height:37px;font-size:14px;height:37px;overflow:hidden; white-space: nowrap;text-overflow: ellipsis;}
diff --git a/skin/m15dt8blue/job.css b/skin/m15dt8blue/job.css
new file mode 100644
index 0000000..6efbf43
--- /dev/null
+++ b/skin/m15dt8blue/job.css
@@ -0,0 +1,122 @@
+/*
+[DESTOON B2B System] Copyright (c) 2008-2020 www.destoon.com
+This is NOT a freeware, use is subject to license.txt
+*/
+.contact_body { background:#fff;}
+.job-for {height:48px;overflow:hidden;padding:10px 0 20px 19px;}
+.job-for span {display:block;width:118px;height:32px;line-height:32px;text-align:center;float:left;border:#DDDDDD 1px solid;border-radius:10px;margin-right:20px;font-size:16px;}
+.job-for span:hover {border:#007BFF 1px solid;background:#007AFF;color:#FFFFFF;}
+
+.sort1{padding: 12px 20px 15px 10px;
+ background: white;
+ overflow: hidden;
+ box-shadow: 0px 0px 15px #dadada;
+ margin-bottom: 15px;}
+
+.job-stats {height:64px;margin:20px 0;}
+.job-stats li {width:99px;float:left;font-size:16px;height:64px;line-height:32px;text-align:center;}
+.job-stats div {height:64px;border-left:#DDDDDD 1px solid;border-right:#DDDDDD 1px solid;}
+.job-stats i {font-style:normal;display:block;font-size:14px;}
+
+.job-tb {padding:0 0 24px 0;}
+.job-tb div {height:32px;line-height:32px;overflow:hidden;color:#666666;}
+.job-tb .jt-title {font-size:14px;background:url('image/li_dot.gif') no-repeat 6px center;padding-left:16px;}
+.job-tb .jt-salary {width:160px;}
+.job-tb .jt-company {width:240px;}
+.job-tb .jt-area {width:60px;text-align:center;}
+.m3l {width:860px;float:left; background:#fff;padding:30px 15px;}
+.m3r {width:299px;float:right;}
+.m2l {width:940px;float:left;background: #fff;padding: 15px;box-sizing: border-box;}
+.m2r {width:219px;float:right;}
+/*头部开始*/
+
+.job_top .left { width: 220px; background: #fff; padding:10px 0px;float:left; margin-right: 20px;}
+.job_top .left ul li { height:42.1px; line-height: 40px; padding:0px 20px;
+-webkit-transition: all .3s;
+-moz-transition: all .3s;
+-ms-transition: all .3s;
+-o-transition: all .3s;
+transition: all .3s;}
+.job_top .left ul li:hover { background:#1db3c9;}
+.job_top .left ul li:hover a { color:#fff;}
+.job_top .left ul li a { display:inline-block;font-size: 14px; color: #333;height: 40px;}
+
+
+/*幻灯*/
+.job_top .job_ad { float:left;}
+.job_top .job_ad .job_ad_t { margin-top:20px;}
+.job_top .job_ad .job_ad_t img { float:left; width:220px; height: 125px;}
+.job_top .job_ad .job_ad_t img:nth-child(2) { margin:0px 10px;}
+#focus{width:680px;height:315px;overflow:hidden;margin:0px auto; position:relative;}
+#focus ul{height:315px;position:absolute;}
+#focus ul li{float:left;width:680px;height:315px;overflow:hidden;position:relative;}
+#focus ul li img{width:680px;height:315px;}
+#focus ul li div{position:absolute;overflow:hidden;}
+#focus ul li p{display: block;position: absolute;bottom: 0px;font-size: 22px;color: #fff;height: 60px;line-height: 60px;width:100%;text-indent:300px;}
+#focus .btnBg{position:absolute;width:680px;height:20px;left:0;bottom:0;}
+#focus .btn{position:absolute;left:50%;bottom:0px;text-align:left;border:none; background:none;
+-webkit-transform: translate(-50%,0);
+-moz-transform: translate(-50%,0);
+-ms-transform: translate(-50%,0);
+-o-transform: translate(-50%,0);
+transform: translate(-50%,0);}
+#focus .btn span{display:inline-block;_display:inline;_zoom:1;width:12px;height:12px;_font-size:0;margin-right:5px;cursor:pointer;margin-top: 0px; border-radius:50%;
+background:rgba(255,255,255,.6);}
+#focus .btn span.on{background:#fff;width:12px;height:12px;}
+#focus .preNext{width:45px;height:52px;position:absolute;top:50%;background:url(img/sprite.png) no-repeat 0 0;cursor:pointer;display: none;
+-webkit-transform: translate(0,-50%);
+-moz-transform: translate(0,-50%);
+-ms-transform: translate(0,-50%);
+-o-transform: translate(0,-50%);
+transform: translate(0,-50%);}}
+#focus .pre{left:10px;}
+#focus .next{right:10px;background-position:right top;}
+
+.job_top .right { float:right;margin-left: 20px; background:#fff; width: 220px; height: 275px; padding:20px;}
+.job_top .right .job_user { overflow:hidden; margin-bottom: 30px;}
+.job_top .right .job_user>a { width: 60px; height: 60px; float:left; margin-right: 15px;}
+.job_top .right .job_user>a img { width: 60px; height: 60px; border-radius:50%;}
+.job_top .right .job_user ul { padding-top: 5px;}
+.job_top .right .job_user ul li a { font-size:18px; color:#333; line-height:25px;}
+.job_top .right .job_user ul li { height: 25px;}
+.job_top .right .job_user ul li em { float:right; }
+.job_top .right .job_user ul li em a { font-size:14px; color:#666;}
+.job_top .right .job_user ul li:nth-child(2) a { font-size:14px; color:#666;}
+.job_top .right .job_user ul li:nth-child(2) i { color:#999; margin:0px 14px;}
+
+.job_top .right .job_zp { width: 100%; margin-top:15px;}
+.job_top .right .job_zp img { width: 100%;}
+.job_top .right .job_jl a { display: block;height: 40px;line-height: 40px;font-size: 16px;color: #fff;background: #ff6900; text-align:center; margin-top:20px;}
+
+/*头部结束*/
+
+/*左右机构尺寸*/
+.job_left { width: 920px; margin-right:20px; float:left;}
+.job_left_list { background:#fff;}
+.job_left .btn-green {background: #ff6900;border: #ff9900 1px solid;color: #fff; padding:0px 25px;}
+.job_right { overflow:hidden;}
+.job_right .list-rank {box-shadow: 0px 0px 0px #dadada;}
+.job_right .list-txt { box-shadow: 0px 0px 0px #dadada;}
+.job_right .contact_body { background:#fff; border: none;}
+
+
+
+.job_title { width: 100%; height: 60px; line-height:50px; font-size:18px; border-bottom: 1px solid #eee; color:#333;padding:10px 20px 5px; background:#fff;
+-webkit-box-sizing: border-box;
+-moz-box-sizing: border-box;
+box-sizing: border-box;}
+.job_right_list .job_title {height: 50px;font-size: 18px;padding: 0px 20px 0px;}
+.job_title b { border-left: 3px solid #1db3c9; padding-left: 6px; font-weight: 700;}
+.job_title em { float:right;}
+.job_title em a { font-size:14px; color:#666;}
+
+.job_main { padding:10px 20px 5px; background:#fff; width: 100%;
+-webkit-box-sizing: border-box;
+-moz-box-sizing: border-box;
+box-sizing: border-box;}
+.job_main tr { height: 40px; font-size:14px; color:#333; line-height:40px;}
+
+.job_dq { padding: 10px 20px 10px 10px;background: #fff;overflow: hidden;}
+.job_dq ul li { float: left;width:66px;background: #f9f9f9;border: 1px solid #ddd;box-sizing: border-box;height: 30px;text-align: center;line-height: 30px;margin: 0px 0px 10px 10px;}
+.bd-b { border-bottom:none;}
+.btn-green{background: #1db3c9;border:none;padding:0px 10px;border-radius:2px;height:33px;line-height:33px;color:white}
\ No newline at end of file
diff --git a/skin/m15dt8blue/js/MSClass.js b/skin/m15dt8blue/js/MSClass.js
new file mode 100644
index 0000000..384c46c
--- /dev/null
+++ b/skin/m15dt8blue/js/MSClass.js
@@ -0,0 +1,12 @@
+
\ No newline at end of file
diff --git a/skin/m15dt8blue/js/base.js b/skin/m15dt8blue/js/base.js
new file mode 100644
index 0000000..995fda4
--- /dev/null
+++ b/skin/m15dt8blue/js/base.js
@@ -0,0 +1,24 @@
+//20171127 szy
+$(function () {
+ var scriptsArray = new Array();
+ $.cachedScript = function (url, options) { for (var s in scriptsArray) { if (scriptsArray[s] == url) { return { done: function (method) { if (typeof method == "function") { method() } } } } } options = $.extend(options || {}, { dataType: "script", url: url, cache: true }); scriptsArray.push(url); return $.ajax(options) };
+ //筛选隐藏显示更多
+ $(".showMore").click(function (event) {
+ event.preventDefault();
+ var ticon = $(this).find("i");
+ tspan = $(this).find("span");
+ if ($(this).hasClass("zk")) {
+ $(this).siblings(".showCon").css("height", "30px");
+ ticon.removeClass("icon-shang1");
+ ticon.addClass("icon-xia1");
+ tspan.html("更多");
+ $(this).removeClass("zk")
+ } else {
+ $(this).siblings(".showCon").css("height", "auto");
+ ticon.removeClass("icon-xia1");
+ ticon.addClass("icon-shang1");
+ tspan.html("隐藏");
+ $(this).addClass("zk")
+ }
+ });
+});
diff --git a/skin/m15dt8blue/js/carousel.js b/skin/m15dt8blue/js/carousel.js
new file mode 100644
index 0000000..006661d
--- /dev/null
+++ b/skin/m15dt8blue/js/carousel.js
@@ -0,0 +1,243 @@
+;(function($){
+ $.fn.carousel = function(param){
+ var carousel = param.carousel,//轮播框架
+ indexContainer = param.indexContainer,//下标框架
+ list = $(carousel).children("li"),//轮播内容
+ len = list.length,//轮播内容数量
+ prev = param.prev,//上翻按钮
+ next = param.next,//下翻按钮
+ timing = param.timing,//自动轮播间隔时间
+ animateTime = param.animateTime,//动画时间
+ autoPlay = param.autoPlay,//自动播放 true/false
+ timer,//定时器
+ index = 1,//索引值
+ indexList,//下标列表
+ main_bg = ".carousel_bg"
+ indexClassName = "active",//下标高亮类名
+ action = true,//开始滚动 true/false
+ totalWidtn = list.width()*(list.length+2),//轮播框架总宽度
+ direction = param.direction;//滚动方向
+
+ /*初始化*/
+ for(var i = 1;i <= list.length;i++){
+ $(indexContainer).append(" ")
+ }
+ $(carousel).width(totalWidtn)
+ .append($(list[0]).clone())
+ .prepend($(list[list.length-1]).clone())
+ .css("left","-"+list.width()+"px");
+ list = $(carousel).children("li");
+ indexList = $(indexContainer).children("li");
+ $(indexList[index-1]).addClass(indexClassName);
+ $(".carousel_bg_"+index).show();
+
+ /*判断是否自动播放*/
+ if (autoPlay) {
+ startTiming();
+ $(carousel+","+prev+","+next+","+indexContainer).hover(function(){
+ window.clearInterval(timer);
+ },function(){
+ startTiming();
+ });
+ }
+
+ /*计时方法*/
+ function startTiming(){
+ /*判断方向*/
+ switch (direction) {
+ case "right" :
+ timer = window.setInterval("$.rightChangeImg();",timing);
+ break;
+ case "left" :
+ timer = window.setInterval("$.leftChangeImg();",timing);
+ break;
+ default:
+ timer = window.setInterval("$.leftChangeImg();",timing);
+ }
+ };
+
+ /*切换高亮下标*/
+ $.extend({changeIndex:function(index){
+ $(indexList).removeClass(indexClassName);
+ $(indexList[index]).addClass(indexClassName);
+ var src = $(".carousel li").eq(index+1).find("img").attr("src");
+ var i = index + 1;
+ $(".carousel_bg").fadeOut(animateTime);
+ $(".carousel_bg_"+i).fadeIn(animateTime);
+ }});
+
+
+ /*向左切换图片*/
+ $.extend({leftChangeImg:function(){
+ action = false;
+ if (index==len) {
+ index = 0;
+ $(carousel).stop(true,true).css("left","0px");
+ }
+ index++;
+ $(carousel).stop(true,true).animate({
+ left : "-="+list.width()+"px"
+ },animateTime);
+ setTimeout(function(){
+ if (index==len) {
+ index = 0;
+ $(carousel).stop(true,true).css("left","0px");
+ }
+ action = true;
+ },animateTime);
+ $.changeIndex(index-1);
+ }});
+
+ /*向右切换图片*/
+ $.extend({rightChangeImg:function(){
+ action = false;
+ if (index==0) {
+ index = len;
+ $(carousel).stop(true,true).css("left","-"+left+"px");
+ }
+ index--;
+ var left = totalWidtn-list.width()*2;
+ $(carousel).stop(true,true).animate({
+ left : "+="+list.width()+"px"
+ },animateTime);
+ setTimeout(function(){
+ if (index==0) {
+ index = len;
+ $(carousel).stop(true,true).css("left","-"+left+"px");
+ }
+ action = true;
+ },animateTime);
+ if (index == 0) {
+ $.changeIndex(len-1);
+ }else{
+ $.changeIndex(index-1);
+ }
+ }});
+
+ /*下翻点击处理*/
+ $(next).on("click",function(){
+ var nowLeft = Math.abs(parseInt($(carousel).css("left")));
+ var left = totalWidtn-list.width()*2;
+ if (action) {
+ if (nowLeft == left) {
+ index = 0;
+ $(carousel).stop(true,true).css("left","0px");
+ }
+ $.leftChangeImg();
+ }
+ });
+
+ /*上翻点击处理*/
+ $(prev).on("click",function(){
+ var nowLeft = Math.abs(parseInt($(carousel).css("left")));
+ var left = totalWidtn-list.width()*2;
+ if (action) {
+ if (nowLeft == 0) {
+ index = len;
+ $(carousel).stop(true,true).css("left","-"+left+"px");
+ }
+ $.rightChangeImg();
+ }
+ });
+
+ /*下标点击处理*/
+ indexList.on("click",function(){
+ var no = $(this).index()+1;
+ if (action) {
+ if (no > index) {
+ $.changeIndex(no-1);
+ action = false;
+ var left = (no - index)*list.width();
+ index = no;
+ $(carousel).stop(true,true).animate({
+ left : "-="+left+"px"
+ },animateTime);
+ setTimeout(function(){
+ action = true;
+ },animateTime);
+ }else if (no < index) {
+ $.changeIndex(no-1);
+ action = false;
+ var left = (index - no)*list.width();
+ index = no;
+ $(carousel).stop(true,true).animate({
+ left : "+="+left+"px"
+ },animateTime);
+ setTimeout(function(){
+ action = true;
+ },animateTime);
+ }
+
+ }
+ });
+ }
+})(jQuery);
+
+
+ /*///////////////////////////////////////////////////////////////////*/
+
+ $(document).ready(function() {
+ var page_num = $("#rumor_cen .rumor_list").length;
+ var py_index = 0;
+ $(".py_button").click(function() {
+ var pre = $(this).hasClass("py_pre");
+ $(".py_cen").fadeOut(500);
+ $(".juanzhou").animate({
+ width: "70px"
+ }, 500, "swing", function() {
+ $(".py_cen").fadeIn(300);
+ if(pre) {
+ if(py_index > 0) {
+ py_index -= 1;
+ } else {
+ py_index = page_num - 1;
+ }
+ var title = $("#rumor_cen .rumor_list").eq(py_index).find(".title").html();
+ var tips = $("#rumor_cen .rumor_list").eq(py_index).find(".tips").html();
+ var aside = $("#rumor_cen .rumor_list").eq(py_index).find(".aside").html();
+ $(".py_cen h2").html(title);
+ $(".py_cen p").html(tips);
+ $(".py_cen .img").html(aside);
+ } else {
+ if(py_index < page_num - 1) {
+ py_index += 1;
+ } else {
+ py_index = 0;
+ }
+ var title = $("#rumor_cen .rumor_list").eq(py_index).find(".title").html();
+ var tips = $("#rumor_cen .rumor_list").eq(py_index).find(".tips").html();
+ var aside = $("#rumor_cen .rumor_list").eq(py_index).find(".aside").html();
+ $(".py_cen h2").html(title);
+ $(".py_cen p").html(tips);
+ $(".py_cen .img").html(aside);
+ }
+ $(".juanzhou").animate({
+ width: "718px"
+ }, 300, "swing");
+ });
+ return false;
+ });
+ $(".slide01").carousel({
+ carousel: ".carousel", //轮播图容器
+ indexContainer: ".img-index", //下标容器
+ prev: ".carousel-prev", //左按钮
+ next: ".carousel-next", //右按钮
+ timing: 3000, //自动播放间隔
+ animateTime: 700, //动画时间
+ autoPlay: true, //是否自动播放 true/false
+ direction: "left", //滚动方向 right/left
+ });
+
+ $(document)
+ .on('mouseenter mouseleave', '._mainNavMore', function (e) {
+ var $list = $(this).find('._moreList');
+
+ if (e.type == 'mouseenter') {
+ $list.show();
+ } else {
+ $list.hide();
+ }
+ });
+ });
+
+
diff --git a/skin/m15dt8blue/js/common.js b/skin/m15dt8blue/js/common.js
new file mode 100644
index 0000000..8efc680
--- /dev/null
+++ b/skin/m15dt8blue/js/common.js
@@ -0,0 +1,53 @@
+/* 20161109 */
+/*棣栧睆鍔ㄧ敾*/
+$("#scrol_4 li").each(function () {
+ var $this = $(this);
+ if (!$this.find("a ,ins").length > 0) {
+ $this.remove();
+ }
+});
+var serveTimer = setTimeout(function () {
+ var nIn = $(".slider-menu-1 .current").index();
+ var len = $(".slider_stage li").length;
+ if (nIn < len - 1) {
+ nIn++;
+ } else {
+ nIn = 0;
+ }
+ $(".slider-menu-1 li").removeClass("current").eq(nIn).addClass("current");
+ $(".slider_stage li").eq(nIn).fadeIn().siblings().hide();
+ serveTimer = setTimeout(arguments.callee, 5000);
+}, 5000);
+$(".prev1").click(function () {
+ clearTimeout(serveTimer);
+ var nIn = $(".slider-menu-1 .current").index();
+ var len = $(".slider_stage li").length;
+ if (nIn < len && nIn > 0) {
+ nIn--;
+ } else {
+ nIn = len - 1;
+ }
+ $(".slider-menu-1 li").removeClass("current").eq(nIn).addClass("current");
+ $(".slider_stage li").eq(nIn).fadeIn().siblings().hide();
+});
+
+$(".next1").click(function () {
+ clearTimeout(serveTimer);
+ var nIn = $(".slider-menu-1 .current").index();
+ var len = $(".slider_stage li").length;
+ if (nIn < len - 1) {
+ nIn++;
+ } else {
+ nIn = 0;
+ }
+ $(".slider-menu-1 li").removeClass("current").eq(nIn).addClass("current");
+ $(".slider_stage li").eq(nIn).fadeIn().siblings().hide();
+});
+$(".slider-menu-1 li").click(function () {
+ clearTimeout(serveTimer);
+ var nIn = $(this).index();
+ $(this).addClass("current").siblings().removeClass("current");
+ $(".slider_stage li").eq(nIn).fadeIn().siblings().hide();
+});
+
+/*//棣栧睆鍔ㄧ敾*/
\ No newline at end of file
diff --git a/skin/m15dt8blue/js/commons.js b/skin/m15dt8blue/js/commons.js
new file mode 100644
index 0000000..96c1661
--- /dev/null
+++ b/skin/m15dt8blue/js/commons.js
@@ -0,0 +1,165 @@
+
+$(document).ready(function (e) {
+
+ /*面包屑*/
+ $(".qjd_list>p").click(function (e) {
+ window.event ? window.event.returnValue = false : e.preventDefault();
+ e.stopPropagation();
+
+ $('.up_s').slideUp();
+ $('.form_list').parents().removeClass("cur");
+ $(".car_list>p").css({ "border-bottom-color": "#ddd", "background": "none" });
+ $('.type_select').removeClass("cur");
+
+ var $this = $(this);
+ var dip = $this.siblings('.qjd_list_con').css("display");
+ if (dip == 'none') {
+ $this.siblings('.qjd_list_con').slideDown();
+ $this.css({ "border-bottom-color": "#fff", "background-color": "#fff" });
+ }
+ else {
+ $(".qjd_list>p").css({ "border-bottom-color": "#ddd", "background": "none" });
+ $('.up_s').slideUp();
+ }
+
+ $(document).one("click", function () {
+ $('.up_s').slideUp();
+ $this.css({ "border-bottom-color": "#ddd", "background": "none" });
+ })
+ });
+ $(".qjd_list_con .close_btn").click(function () {
+ var $this = $(this);
+ $this.parent().slideUp();
+ $(".qjd_list>p").css({ "border-bottom-color": "#ddd", "background": "none" });
+ });
+ //$(".qjd_list_con a").last().css('border', 'none');
+
+ $(".car_list>p").click(function (e) {
+ window.event ? window.event.returnValue = false : e.preventDefault();
+ e.stopPropagation();
+
+ $('.up_s').slideUp();
+ $('.form_list').parents().removeClass("cur");
+ $(".qjd_list>p").css({ "border-bottom-color": "#ddd", "background": "none" });
+ $('.type_select').removeClass("cur");
+
+ var $this = $(this);
+ var dip = $this.siblings('.car_list_con').css("display");
+ if (dip == 'none') {
+ $this.siblings('.car_list_con').slideDown();
+ $this.css({ "border-bottom-color": "#fff", "background-color": "#fff" });
+ }
+ else {
+ $(".car_list>p").css({ "border-bottom-color": "#ddd", "background": "none" });
+ $('.up_s').slideUp();
+ }
+
+ $(document).one("click", function () {
+ $('.up_s').slideUp();
+ $this.css({ "border-bottom-color": "#ddd", "background": "none" });
+ })
+ });
+ $(".car_list_con .close_btn").click(function () {
+ var $this = $(this);
+ $this.parent().slideUp(200);
+ $(".car_list>p").css({ "border-bottom-color": "#ddd", "background": "none" }).delay(6000);
+ });
+ $(".car_list_con a:odd").css('margin-right', '0');
+ $(".car_list_con a").each(function () {
+ if ($(this).find("span").length > 2) {
+ $(this).find("b").show();
+ };
+ });
+
+ /*车图展示*/
+ var $showCar = $('#show_car'),
+ $showImg = $showCar.find('.show_img'),
+ $showUl = $showCar.find('ul'),
+ $showLi = $showUl.find('li'),
+ $preArrow = $(".pre_arrow"),
+ $nextArrow = $(".next_arrow"),
+ $num = $showLi.length,
+ $index = $showLi.index(),
+ n = 0;
+
+ $showUl.css("width", $num * 109);
+ $nextArrow.click(function () {
+ n++;
+ if (n <= $num - 0 && n > 0) {
+ $preArrow.removeClass("off");
+ } else {
+ n = $num - 0;
+ $nextArrow.addClass("off");
+ };
+ $showUl.stop(true, true).animate({ left: -109 * n });
+ $showLi.eq(n).addClass("cur").siblings("li").removeClass("cur");
+ $showImg.find('img[data-con=' + $showLi.eq(n).attr('data-nav') + ']').show().siblings('img[data-con]').hide();
+ });
+ $(".pre_arrow").click(function () {
+ n--;
+ if (n <= $num - 0 && n > 0) {
+ $nextArrow.removeClass("off");
+ } else {
+ n = 0
+ $preArrow.addClass("off");
+ }
+ $showUl.stop(true, true).animate({ left: -109 * n });
+ $showLi.eq(n).addClass("cur").siblings("li").removeClass("cur");
+ $showImg.find('img[data-con=' + $showLi.eq(n).attr('data-nav') + ']').show().siblings('img[data-con]').hide();
+ });
+ $showLi.hover(function () {
+ var $this = $(this);
+ var dataNav = $this.attr('data-nav');
+ $this.addClass("cur").siblings("li").removeClass("cur");
+ $showImg.find('img[data-con=' + dataNav + ']').show().siblings('img[data-con]').hide();
+ });
+
+ /*详情导航固定*/
+ var $detialNavBox = $('.detial_nav_box');
+ var $detialNavWarp = $detialNavBox.find('.detial_nav_warp');
+ $(window).scroll(function () {
+ var $this = $(this);
+ var top = $this.scrollTop();
+
+ var toTop = $detialNavBox.offset().top;
+ if (top >= toTop) {
+ $detialNavWarp.addClass('fixed');
+ } else {
+ $detialNavWarp.removeClass('fixed');
+ }
+
+ });
+
+ var $detailBox = $('.detail_box');
+ var $tabCon = $detailBox.find('[tab-con]');
+ $detailBox.find('li').click(function () {
+ var $this = $(this),
+ nav = $this.attr('tab-nav'),
+ top = $this.scrollTop(),
+ toTop = $detialNavBox.offset().top;
+ $("body,html").animate({ "scrollTop": toTop }, "fast");
+ $this.addClass('cur').siblings().removeClass('cur');
+ $tabCon.hide().filter('[tab-con=' + nav + ']').show();
+ });
+
+
+
+ /*回到顶部*/
+ $("#backtop").click(function () { $('html,body').animate({ scrollTop: 0 }, 500); });
+
+ /*微信分享*/
+ $("#weixin_btn").click(function () {
+ $("#weixin_pop").show();
+ });
+ $("#weixin_close").click(function () {
+ $("#weixin_pop").hide();
+ });
+ var pcUrl = window.location.href;
+ var pcUrlArr = pcUrl.split("/");
+ var thisPage = pcUrlArr[3] + '/' + pcUrlArr[4];
+ var mobileUrlDefault = WebSiteDomainM + thisPage;
+ $('#weixin_img').qrcode({ render: "table", width: 220, height: 220, correctLevel: 0, text: mobileUrlDefault });
+
+
+
+});
diff --git a/skin/m15dt8blue/js/global.js b/skin/m15dt8blue/js/global.js
new file mode 100644
index 0000000..4c4ad9b
--- /dev/null
+++ b/skin/m15dt8blue/js/global.js
@@ -0,0 +1,88 @@
+function gotoTop(acceleration,stime) {
+ acceleration = acceleration || 0.1;
+ stime = stime || 10;
+ var x1 = 0;
+ var y1 = 0;
+ var x2 = 0;
+ var y2 = 0;
+ var x3 = 0;
+ var y3 = 0;
+ if (document.documentElement) {
+ x1 = document.documentElement.scrollLeft || 0;
+ y1 = document.documentElement.scrollTop || 0;
+ }
+ if (document.body) {
+ x2 = document.body.scrollLeft || 0;
+ y2 = document.body.scrollTop || 0;
+ }
+ var x3 = window.scrollX || 0;
+ var y3 = window.scrollY || 0;
+
+ // ҳ涥ˮƽ
+ var x = Math.max(x1, Math.max(x2, x3));
+ // ҳ涥Ĵֱ
+ var y = Math.max(y1, Math.max(y2, y3));
+
+ // = Ŀǰ / ٶ, ΪԭԽС, ٶǴ 1 , ԹԽԽС
+ var speeding = 1 + acceleration;
+ window.scrollTo(Math.floor(x / speeding), Math.floor(y / speeding));
+
+ // 벻Ϊ, ú
+ if(x > 0 || y > 0) {
+ var run = "gotoTop(" + acceleration + ", " + stime + ")";
+ window.setTimeout(run, stime);
+ }
+}
+// JavaScript Document
+function qc_register(id, def)
+{
+var obj = document.getElementById(id);
+if (!obj || !obj.hasChildNodes())
+{
+return;
+}
+
+// get head & body object
+var head = null;
+var body = null;
+for (var i = 0; i < obj.childNodes.length; i++)
+{
+var node = obj.childNodes[i];
+if (node.tagName == 'DIV')
+{
+if (node.className == 'qc-head')
+head = node;
+else if (node.className == 'qc-body')
+body = node;
+}
+}
+if (!head) { return; }
+if (!body) { return; }
+
+// set action & default
+var items = head.getElementsByTagName('LI');
+var datas = body.getElementsByTagName('DL');
+if (items.length == 0) { return; }
+if (items.length != datas.length)
+{
+
+return;
+}
+
+var total = items.length;
+if (typeof def == 'undefined') def = 0;
+else def = parseInt(def)%total;
+if (def < 0) def += total;
+for (var i = 0; i < total; i++)
+{
+datas[i].style.display = (i == def ? '' : 'none');
+items[i].className = (i == def ? 'current' : '');
+items[i].onmouseover = function() {
+for (var k = 0; k < total; k++)
+{
+datas[k].style.display = (this == items[k] ? '' : 'none');
+items[k].className = (this == items[k] ? 'current' : '');
+}
+}
+}
+}
diff --git a/skin/m15dt8blue/js/headlist.js b/skin/m15dt8blue/js/headlist.js
new file mode 100644
index 0000000..090f7c9
--- /dev/null
+++ b/skin/m15dt8blue/js/headlist.js
@@ -0,0 +1,517 @@
+/*----------------------------------------
+
+
+
+ 页面通用js
+
+
+
+-----------------------------------------*/
+
+/* 页面位置定义 */
+
+document.write( unescape("%3Cscript src='/skin/default/js/common.js' type='text/javascript'%3E%3C/script%3E") );
+
+headerInit = function( hostAreaCode )
+
+{
+
+ newHeadInit(hostAreaCode);
+
+ HeadDropList.init();
+
+ newMapInit("web_service");
+
+ NavSelectWhere();
+
+ return;
+
+}
+
+footerInit = function( LandTuStatus, kfNoShowFlag )
+
+{
+
+
+ document.write( unescape("%3Cscript src='/skin/default/js/jquery-1.8.3.min.js' type='text/javascript'%3E%3C/script%3E") );
+
+
+
+ searchObjInit();
+
+ SetReferer();
+
+
+
+ if( LandTuStatus!=1 )
+
+ {
+
+
+
+
+ }
+
+ return;
+
+}
+
+
+
+
+
+var _indexT = null;
+
+function newHeadInit(AreaCode)
+
+{
+
+ hostAreaCode = AreaCode;
+
+ try{
+
+ getElementById("city").onmouseover = function()
+
+ {
+
+ clearTimeout(_indexT);
+
+ getElementById('citys').className = '';
+
+ }
+
+ getElementById("city").onmouseout = function()
+
+ {
+
+ _indexT=setTimeout("getElementById('citys').className = 'dpn'",1000);
+
+ }
+
+ getElementById("citys").onmouseover = function()
+
+ {
+
+ this.className = '';
+
+ clearTimeout(_indexT);
+
+ }
+
+ getElementById("citys").onmouseout = function()
+
+ {
+
+ this.className = 'dpn';
+
+ }
+
+ var tempObj = getElementById("cityC").getElementsByTagName("h1");
+
+ if(tempObj.length>0)
+
+ {
+
+ tempObj[0].style.cursor = "pointer";
+
+ }
+
+ }catch(e){}
+
+ return;
+
+}
+
+
+
+
+
+//新头部下拉菜单
+
+var HeadDropList = {
+
+ showDiv : null,
+
+ showType : 0, //1首页模式 0其他
+
+ contentDiv : null,
+
+ currId : 0,
+
+ timer : null,
+
+ second : 100, //隐藏延时
+
+ city_num : 1, //城市
+
+ divList : [],
+
+ contentList : [],
+
+ cateContent : '',
+
+
+
+ init : function(){
+
+ if(city_num>0)
+
+ this.city_num = city_num;
+
+
+
+ if(typeof(_pageIndex)!='undefined' && _pageIndex==1){
+
+ if(!getElementById('cateMapD'))
+
+ return;
+
+ this.showType = 1;
+
+ }
+
+ if(!getElementById('_cateMapDiv'))
+
+ return;
+
+ this.cateContent = getElementById('_cateMapDiv').innerHTML;
+
+// getElementById('_cateMapDiv').style.display='';
+
+// return;
+
+ var cList = getElementById('_cateDetail').getElementsByTagName('DIV');
+
+ index = 0;
+
+ for(i=0;i';
+
+ str += '';
+
+ str += '
';
+
+ str += this.cateContent;
+
+ str += '
';
+
+ str += ''
+
+
+
+ document.write(str)
+
+ this.showDiv = getElementById('insetObj');
+
+ var List = getElementById('cateMapD').getElementsByTagName('DIV');
+
+ for(i=0;i';
+
+ else
+
+ str += '';
+
+ str += '
'+indexCateList[id]["icon"]+' '+indexCateList[id]["title"]+' ';
+
+ var itemArr = indexCateList[id]["itemArr"];
+
+ var len = 0;
+
+ for(var i in itemArr){
+
+ if(itemArr[i]["city"] && itemArr[i]["city"].substring(num,num+1)!='1')
+
+ continue;
+
+ len += itemArr[i]["title"].length+1;
+
+ if(len>12){
+
+ str += ' ';
+
+ len = itemArr[i]["title"].length + 1;
+
+ }
+
+ str += ''+itemArr[i]["title"]+' ';
+
+ }
+
+ str += '
';
+
+ }
+
+ str += '';
+
+ str += '
';
+
+ return str;
+
+ },
+
+ showCateList : function(){
+
+ if(this.currId<0)
+
+ return;
+
+ var id = this.currId;
+
+ this.contentDiv.innerHTML = this.contentList[id];
+
+ this.contentDiv.style.display = 'block';
+
+ return;
+
+ }
+
+}
\ No newline at end of file
diff --git a/skin/m15dt8blue/js/jq_scroll.js b/skin/m15dt8blue/js/jq_scroll.js
new file mode 100644
index 0000000..70669d9
--- /dev/null
+++ b/skin/m15dt8blue/js/jq_scroll.js
@@ -0,0 +1,60 @@
+/*
+jQ向上滚动带上下翻页按钮
+*/
+(function($){
+$.fn.extend({
+ Scroll:function(opt,callback){
+ //参数初始化
+ if(!opt) var opt={};
+ var _btnUp = $("#"+ opt.up);//Shawphy:向上按钮
+ var _btnDown = $("#"+ opt.down);//Shawphy:向下按钮
+ var timerID;
+ var _this=this.eq(0).find("ul:first");
+ var lineH=_this.find("li:first").height(), //获取行高
+ line=opt.line?parseInt(opt.line,10):parseInt(this.height()/lineH,10), //每次滚动的行数,默认为一屏,即父容器高度
+ speed=opt.speed?parseInt(opt.speed,10):500; //卷动速度,数值越大,速度越慢(毫秒)
+ timer=opt.timer //?parseInt(opt.timer,10):3000; //滚动的时间间隔(毫秒)
+ if(line==0) line=1;
+ var upHeight=0-line*lineH;
+ //滚动函数
+ var scrollUp=function(){
+ _btnUp.unbind("click",scrollUp); //Shawphy:取消向上按钮的函数绑定
+ _this.animate({
+ marginTop:upHeight
+ },speed,function(){
+ for(i=1;i<=line;i++){
+ _this.find("li:first").appendTo(_this);
+ }
+ _this.css({marginTop:0});
+ _btnUp.bind("click",scrollUp); //Shawphy:绑定向上按钮的点击事件
+ });
+
+ }
+ //Shawphy:向下翻页函数
+ var scrollDown=function(){
+ _btnDown.unbind("click",scrollDown);
+ for(i=1;i<=line;i++){
+ _this.find("li:last").show().prependTo(_this);
+ }
+ _this.css({marginTop:upHeight});
+ _this.animate({
+ marginTop:0
+ },speed,function(){
+ _btnDown.bind("click",scrollDown);
+ });
+ }
+ //Shawphy:自动播放
+ var autoPlay = function(){
+ if(timer)timerID = window.setInterval(scrollUp,timer);
+ };
+ var autoStop = function(){
+ if(timer)window.clearInterval(timerID);
+ };
+ //鼠标事件绑定
+ _this.hover(autoStop,autoPlay).mouseout();
+ _btnUp.css("cursor","pointer").click( scrollUp ).hover(autoStop,autoPlay);//Shawphy:向上向下鼠标事件绑定
+ _btnDown.css("cursor","pointer").click( scrollDown ).hover(autoStop,autoPlay);
+
+ }
+})
+})(jQuery);
diff --git a/skin/m15dt8blue/js/jquery-1.6.1.min.js b/skin/m15dt8blue/js/jquery-1.6.1.min.js
new file mode 100644
index 0000000..ce46fc1
--- /dev/null
+++ b/skin/m15dt8blue/js/jquery-1.6.1.min.js
@@ -0,0 +1,17 @@
+/*!
+ * jQuery JavaScript Library v1.6.1
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu May 12 15:04:36 2011 -0400
+ */
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!cj[a]){var b=f("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),c.body.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write("");b=cl.createElement(a),cl.body.appendChild(b),d=f.css(b,"display"),c.body.removeChild(ck)}cj[a]=d}return cj[a]}function cu(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function ct(){cq=b}function cs(){setTimeout(ct,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g=0===c})}function W(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function O(a,b){return(a&&a!=="*"?a+".":"")+b.replace(A,"`").replace(B,"&")}function N(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function L(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function F(){return!0}function E(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function H(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(H,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=d.userAgent,x,y,z,A=Object.prototype.toString,B=Object.prototype.hasOwnProperty,C=Array.prototype.push,D=Array.prototype.slice,E=String.prototype.trim,F=Array.prototype.indexOf,G={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.1",length:0,size:function(){return this.length},toArray:function(){return D.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?C.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(D.apply(this,arguments),"slice",D.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:C,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;y.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!y){y=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",z,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",z),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&H()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):G[A.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!B.call(a,"constructor")&&!B.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||B.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;ca ",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};f=c.createElement("select"),g=f.appendChild(c.createElement("option")),h=a.getElementsByTagName("input")[0],j={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},h.checked=!0,j.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,j.optDisabled=!g.disabled;try{delete a.test}catch(s){j.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function b(){j.noCloneEvent=!1,a.detachEvent("onclick",b)}),a.cloneNode(!0).fireEvent("onclick")),h=c.createElement("input"),h.value="t",h.setAttribute("type","radio"),j.radioValue=h.value==="t",h.setAttribute("checked","checked"),a.appendChild(h),k=c.createDocumentFragment(),k.appendChild(a.firstChild),j.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",l=c.createElement("body"),m={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"};for(q in m)l.style[q]=m[q];l.appendChild(a),b.insertBefore(l,b.firstChild),j.appendChecked=h.checked,j.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,j.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",j.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="",n=a.getElementsByTagName("td"),r=n[0].offsetHeight===0,n[0].style.display="",n[1].style.display="none",j.reliableHiddenOffsets=r&&n[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(i=c.createElement("div"),i.style.width="0",i.style.marginRight="0",a.appendChild(i),j.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(i,null)||{marginRight:0}).marginRight,10)||0)===0),l.innerHTML="",b.removeChild(l);if(a.attachEvent)for(q in{submit:1,change:1,focusin:1})p="on"+q,r=p in a,r||(a.setAttribute(p,"return;"),r=typeof a[p]=="function"),j[q+"Bubbles"]=r;return j}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;return(e.value||"").replace(p,"")}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);c=j&&f.attrFix[c]||c,i=f.attrHooks[c],i||(!t.test(c)||typeof d!="boolean"&&d!==b&&d.toLowerCase()!==c.toLowerCase()?v&&(f.nodeName(a,"form")||u.test(c))&&(i=v):i=w);if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j)return i.get(a,c);h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);c=i&&f.propFix[c]||c,h=f.propHooks[c];return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return a[f.propFix[c]||c]?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=b),a.setAttribute(c,c.toLowerCase()));return c}},f.attrHooks.value={get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return a.value},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=Object.prototype.hasOwnProperty,y=/\.(.*)$/,z=/^(?:textarea|input|select)$/i,A=/\./g,B=/ /g,C=/[^\w\s.|`]/g,D=function(a){return a.replace(C,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=E;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=E);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),D).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j =0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem
+)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},K=function(c){var d=c.target,e,g;if(!!z.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=J(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:K,beforedeactivate:K,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&K.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&K.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",J(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in I)f.event.add(this,c+".specialChange",I[c]);return z.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return z.test(this.nodeName)}},I=f.event.special.change.filters,I.focus=I.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c ",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML=" ",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="
";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=U.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(W(c[0])||W(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=T.call(arguments);P.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!V[a]?f.unique(e):e,(this.length>1||R.test(d))&&Q.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var Y=/ jQuery\d+="(?:\d+|null)"/g,Z=/^\s+/,$=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,_=/<([\w:]+)/,ba=/",""],legend:[1,""," "],thead:[1,""],tr:[2,""],td:[3,""],col:[2,""],area:[1,""," "],_default:[0,"",""]};bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Y,""):null;if(typeof a=="string"&&!bc.test(a)&&(f.support.leadingWhitespace||!Z.test(a))&&!bg[(_.exec(a)||["",""])[1].toLowerCase()]){a=a.replace($,"<$1>$2>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bj(a,d),e=bk(a),g=bk(d);for(h=0;e[h];++h)bj(e[h],g[h])}if(b){bi(a,d);if(c){e=bk(a),g=bk(d);for(h=0;e[h];++h)bi(e[h],g[h])}}return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||
+b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!bb.test(k))k=b.createTextNode(k);else{k=k.replace($,"<$1>$2>");var l=(_.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=ba.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Z.test(k)&&o.insertBefore(b.createTextNode(Z.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bp.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bo.test(g)?g.replace(bo,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,c){var d,e,g;c=c.replace(br,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bs.test(d)&&bt.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bE=/%20/g,bF=/\[\]$/,bG=/\r?\n/g,bH=/#.*$/,bI=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bJ=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bK=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bL=/^(?:GET|HEAD)$/,bM=/^\/\//,bN=/\?/,bO=/