123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540 |
- <?php
- defined('IN_PHPCMS') or exit('No permission resources.');
- pc_base::load_app_class('admin','admin',0);
- pc_base::load_sys_class('form','',0);
- class create_html extends admin {
- private $db;
- public $siteid,$categorys;
- public function __construct() {
- parent::__construct();
- $this->db = pc_base::load_model('content_model');
- $this->siteid = $this->get_siteid();
- $this->categorys = getcache('category_content_'.$this->siteid,'commons');
- foreach($_GET as $k=>$v) {
- $_POST[$k] = $v;
- }
- }
-
- public function update_urls() {
- if(isset($_POST['dosubmit'])) {
- extract($_POST,EXTR_SKIP);
- $this->url = pc_base::load_app_class('url');
- $modelid = intval($_POST['modelid']);
- if($modelid) {
- //设置模型数据表名
- $this->db->set_model($modelid);
- $table_name = $this->db->table_name;
- if($type == 'lastinput') {
- $offset = 0;
- } else {
- $page = max(intval($page), 1);
- $offset = $pagesize*($page-1);
- }
- $where = ' WHERE status=99 ';
- $order = 'ASC';
-
- if(!isset($first) && is_array($catids) && $catids[0] > 0) {
- setcache('url_show_'.$_SESSION['userid'], $catids,'content');
- $catids = implode(',',$catids);
- $where .= " AND catid IN($catids) ";
- $first = 1;
- } elseif($first) {
- $catids = getcache('url_show_'.$_SESSION['userid'],'content');
- $catids = implode(',',$catids);
- $where .= " AND catid IN($catids) ";
- } else {
- $first = 0;
- }
- if($type == 'lastinput' && $number) {
- $offset = 0;
- $pagesize = $number;
- $order = 'DESC';
- } elseif($type == 'date') {
- if($fromdate) {
- $fromtime = strtotime($fromdate.' 00:00:00');
- $where .= " AND `inputtime`>=$fromtime ";
- }
- if($todate) {
- $totime = strtotime($todate.' 23:59:59');
- $where .= " AND `inputtime`<=$totime ";
- }
- } elseif($type == 'id') {
- $fromid = intval($fromid);
- $toid = intval($toid);
- if($fromid) $where .= " AND `id`>=$fromid ";
- if($toid) $where .= " AND `id`<=$toid ";
- }
-
- if(!isset($total) && $type != 'lastinput') {
- $rs = $this->db->query("SELECT COUNT(*) AS `count` FROM `$table_name` $where");
- $result = $this->db->fetch_array($rs);
-
- $total = $result[0]['count'];
- $pages = ceil($total/$pagesize);
- $start = 1;
- }
-
- $rs = $this->db->query("SELECT * FROM `$table_name` $where ORDER BY `id` $order LIMIT $offset,$pagesize");
- $data = $this->db->fetch_array($rs);
- foreach($data as $r) {
- if($r['islink'] || $r['upgrade']) continue;
- //更新URL链接
- $this->urls($r['id'], $r['catid'], $r['inputtime'], $r['prefix']);
- }
- if($pages > $page) {
- $page++;
- $http_url = get_url();
- $creatednum = $offset + count($data);
- $percent = round($creatednum/$total, 2)*100;
- $message = L('need_update_items',array('total'=>$total,'creatednum'=>$creatednum,'percent'=>$percent));
- $forward = $start ? "?m=content&c=create_html&a=update_urls&type=$type&dosubmit=1&first=$first&fromid=$fromid&toid=$toid&fromdate=$fromdate&todate=$todate&pagesize=$pagesize&page=$page&pages=$pages&total=$total&modelid=$modelid" : preg_replace("/&page=([0-9]+)&pages=([0-9]+)&total=([0-9]+)/", "&page=$page&pages=$pages&total=$total", $http_url);
- } else {
- delcache('url_show_'.$_SESSION['userid'],'content');
- $message = L('create_update_success');
- $forward = '?m=content&c=create_html&a=update_urls';
- }
- showmessage($message,$forward,200);
- } else {
- //当没有选择模型时,需要按照栏目来更新
- if(!isset($set_catid)) {
- if($catids[0] != 0) {
- $update_url_catids = $catids;
- } else {
- foreach($this->categorys as $catid=>$cat) {
- if($cat['child'] || $cat['siteid'] != $this->siteid || $cat['type']!=0) continue;
- $update_url_catids[] = $catid;
- }
- }
- setcache('update_url_catid'.'-'.$this->siteid.'-'.$_SESSION['userid'],$update_url_catids,'content');
- $message = L('start_update_urls');
- $forward = "?m=content&c=create_html&a=update_urls&set_catid=1&pagesize=$pagesize&dosubmit=1";
- showmessage($message,$forward,200);
- }
- $catid_arr = getcache('update_url_catid'.'-'.$this->siteid.'-'.$_SESSION['userid'],'content');
- $autoid = $autoid ? intval($autoid) : 0;
- if(!isset($catid_arr[$autoid])) showmessage(L('create_update_success'),'?m=content&c=create_html&a=update_urls',200);
- $catid = $catid_arr[$autoid];
- $modelid = $this->categorys[$catid]['modelid'];
- //设置模型数据表名
- $this->db->set_model($modelid);
- $table_name = $this->db->table_name;
- $page = max(intval($page), 1);
- $offset = $pagesize*($page-1);
- $where = " WHERE status=99 AND catid='$catid'";
- $order = 'ASC';
-
- if(!isset($total)) {
- $rs = $this->db->query("SELECT COUNT(*) AS `count` FROM `$table_name` $where");
- $result = $this->db->fetch_array($rs);
- $total = $result[0]['count'];
- $pages = ceil($total/$pagesize);
- $start = 1;
- }
- $rs = $this->db->query("SELECT * FROM `$table_name` $where ORDER BY `id` $order LIMIT $offset,$pagesize");
- $data = $this->db->fetch_array($rs);
- foreach($data as $r) {
- if($r['islink'] || $r['upgrade']) continue;
- //更新URL链接
- $this->urls($r['id'], $r['catid'], $r['inputtime'], $r['prefix']);
- }
- if($pages > $page) {
- $page++;
- $http_url = get_url();
- $creatednum = $offset + count($data);
- $percent = round($creatednum/$total, 2)*100;
- $message = '【'.$this->categorys[$catid]['catname'].'】 '.L('have_update_items',array('total'=>$total,'creatednum'=>$creatednum,'percent'=>$percent));
- $forward = $start ? "?m=content&c=create_html&a=update_urls&type=$type&dosubmit=1&first=$first&fromid=$fromid&toid=$toid&fromdate=$fromdate&todate=$todate&pagesize=$pagesize&page=$page&pages=$pages&total=$total&autoid=$autoid&set_catid=1" : preg_replace("/&page=([0-9]+)&pages=([0-9]+)&total=([0-9]+)/", "&page=$page&pages=$pages&total=$total", $http_url);
- } else {
- $autoid++;
- $message = L('updating').$this->categorys[$catid]['catname']." ...";
- $forward = "?m=content&c=create_html&a=update_urls&set_catid=1&pagesize=$pagesize&dosubmit=1&autoid=$autoid";
- }
- showmessage($message,$forward,200);
- }
- } else {
- $show_header = $show_dialog = '';
- $admin_username = param::get_cookie('admin_username');
- $modelid = isset($_GET['modelid']) ? intval($_GET['modelid']) : 0;
-
- $tree = pc_base::load_sys_class('tree');
- $tree->icon = array(' │ ',' ├─ ',' └─ ');
- $tree->nbsp = ' ';
- $categorys = array();
- if(!empty($this->categorys)) {
- foreach($this->categorys as $catid=>$r) {
- if($this->siteid != $r['siteid'] || ($r['type']!=0 && $r['child']==0)) continue;
- if($modelid && $modelid != $r['modelid']) continue;
- $r['disabled'] = $r['child'] ? 'disabled' : '';
- $categorys[$catid] = $r;
- }
- }
- $str = "<option value='\$catid' \$selected \$disabled>\$spacer \$catname</option>";
- $tree->init($categorys);
- $string .= $tree->get_tree(0, $str);
- include $this->admin_tpl('update_urls');
- }
- }
- private function urls($id, $catid= 0, $inputtime = 0, $prefix = ''){
- $urls = $this->url->show($id, 0, $catid, $inputtime, $prefix,'','edit');
- //更新到数据库
- $url = $urls[0];
- $this->db->update(array('url'=>$url),array('id'=>$id));
- //echo $id; echo "|";
- return $urls;
- }
- /**
- * 生成内容页
- */
- public function show() {
- if(isset($_POST['dosubmit'])) {
- extract($_POST,EXTR_SKIP);
- $this->html = pc_base::load_app_class('html');
- $modelid = intval($_POST['modelid']);
- if($modelid) {
- //设置模型数据表名
- $this->db->set_model($modelid);
- $table_name = $this->db->table_name;
- if($type == 'lastinput') {
- $offset = 0;
- } else {
- $page = max(intval($page), 1);
- $offset = $pagesize*($page-1);
- }
- $where = ' WHERE status=99 ';
- $order = 'ASC';
-
- if(!isset($first) && is_array($catids) && $catids[0] > 0) {
- setcache('html_show_'.$_SESSION['userid'], $catids,'content');
- $catids = implode(',',$catids);
- $where .= " AND catid IN($catids) ";
- $first = 1;
- } elseif(count($catids)==1 && $catids[0] == 0) {
- $catids = array();
- foreach($this->categorys as $catid=>$cat) {
- if($cat['child'] || $cat['siteid'] != $this->siteid || $cat['type']!=0) continue;
- $setting = string2array($cat['setting']);
- if(!$setting['content_ishtml']) continue;
- $catids[] = $catid;
- }
- setcache('html_show_'.$_SESSION['userid'], $catids,'content');
- $catids = implode(',',$catids);
- $where .= " AND catid IN($catids) ";
- $first = 1;
- } elseif($first) {
- $catids = getcache('html_show_'.$_SESSION['userid'],'content');
- $catids = implode(',',$catids);
- $where .= " AND catid IN($catids) ";
- } else {
- $first = 0;
- }
- if(count($catids)==1 && $catids[0]==0) {
- $message = L('create_update_success');
- $forward = '?m=content&c=create_html&a=show';
- showmessage($message,$forward);
- }
- if($type == 'lastinput' && $number) {
- $offset = 0;
- $pagesize = $number;
- $order = 'DESC';
- } elseif($type == 'date') {
- if($fromdate) {
- $fromtime = strtotime($fromdate.' 00:00:00');
- $where .= " AND `inputtime`>=$fromtime ";
- }
- if($todate) {
- $totime = strtotime($todate.' 23:59:59');
- $where .= " AND `inputtime`<=$totime ";
- }
- } elseif($type == 'id') {
- $fromid = intval($fromid);
- $toid = intval($toid);
- if($fromid) $where .= " AND `id`>=$fromid ";
- if($toid) $where .= " AND `id`<=$toid ";
- }
- if(!isset($total) && $type != 'lastinput') {
- $rs = $this->db->query("SELECT COUNT(*) AS `count` FROM `$table_name` $where");
- $result = $this->db->fetch_array($rs);
-
- $total = $result[0]['count'];
- $pages = ceil($total/$pagesize);
- $start = 1;
- }
- $rs = $this->db->query("SELECT * FROM `$table_name` $where ORDER BY `id` $order LIMIT $offset,$pagesize");
- $data = $this->db->fetch_array($rs);
- $tablename = $this->db->table_name.'_data';
- $this->url = pc_base::load_app_class('url');
- foreach($data as $r) {
- if($r['islink']) continue;
- $this->db->table_name = $tablename;
- $r2 = $this->db->get_one(array('id'=>$r['id']));
- if($r) $r = array_merge($r,$r2);
- if($r['upgrade']) {
- $urls[1] = $r['url'];
- } else {
- $urls = $this->url->show($r['id'], '', $r['catid'],$r['inputtime']);
- }
- $this->html->show($urls[1],$r,0,'edit',$r['upgrade']);
- }
- if($pages > $page) {
- $page++;
- $http_url = get_url();
- $creatednum = $offset + count($data);
- $percent = round($creatednum/$total, 2)*100;
- $message = L('need_update_items',array('total'=>$total,'creatednum'=>$creatednum,'percent'=>$percent));
- $forward = $start ? "?m=content&c=create_html&a=show&type=$type&dosubmit=1&first=$first&fromid=$fromid&toid=$toid&fromdate=$fromdate&todate=$todate&pagesize=$pagesize&page=$page&pages=$pages&total=$total&modelid=$modelid" : preg_replace("/&page=([0-9]+)&pages=([0-9]+)&total=([0-9]+)/", "&page=$page&pages=$pages&total=$total", $http_url);
- } else {
- delcache('html_show_'.$_SESSION['userid'],'content');
- $message = L('create_update_success');
- $forward = '?m=content&c=create_html&a=show';
- }
- showmessage($message,$forward,200);
- } else {
- //当没有选择模型时,需要按照栏目来更新
- if(!isset($set_catid)) {
- if($catids[0] != 0) {
- $update_url_catids = $catids;
- } else {
- foreach($this->categorys as $catid=>$cat) {
- if($cat['child'] || $cat['siteid'] != $this->siteid || $cat['type']!=0) continue;
- $setting = string2array($cat['setting']);
- if(!$setting['content_ishtml']) continue;
- $update_url_catids[] = $catid;
- }
- }
- setcache('update_html_catid'.'-'.$this->siteid.'-'.$_SESSION['userid'],$update_url_catids,'content');
- $message = L('start_update');
- $forward = "?m=content&c=create_html&a=show&set_catid=1&pagesize=$pagesize&dosubmit=1";
- showmessage($message,$forward,200);
- }
- if(count($catids)==1 && $catids[0]==0) {
- $message = L('create_update_success');
- $forward = '?m=content&c=create_html&a=show';
- showmessage($message,$forward,200);
- }
- $catid_arr = getcache('update_html_catid'.'-'.$this->siteid.'-'.$_SESSION['userid'],'content');
- $autoid = $autoid ? intval($autoid) : 0;
- if(!isset($catid_arr[$autoid])) showmessage(L('create_update_success'),'?m=content&c=create_html&a=show',200);
- $catid = $catid_arr[$autoid];
-
- $modelid = $this->categorys[$catid]['modelid'];
- //设置模型数据表名
- $this->db->set_model($modelid);
- $table_name = $this->db->table_name;
- $page = max(intval($page), 1);
- $offset = $pagesize*($page-1);
- $where = " WHERE status=99 AND catid='$catid'";
- $order = 'ASC';
-
- if(!isset($total)) {
- $rs = $this->db->query("SELECT COUNT(*) AS `count` FROM `$table_name` $where");
- $result = $this->db->fetch_array($rs);
- $total = $result[0]['count'];
- $pages = ceil($total/$pagesize);
- $start = 1;
- }
- $rs = $this->db->query("SELECT * FROM `$table_name` $where ORDER BY `id` $order LIMIT $offset,$pagesize");
- $data = $this->db->fetch_array($rs);
- $tablename = $this->db->table_name.'_data';
- $this->url = pc_base::load_app_class('url');
- foreach($data as $r) {
- if($r['islink']) continue;
- //写入文件
- $this->db->table_name = $tablename;
- $r2 = $this->db->get_one(array('id'=>$r['id']));
- if($r2) $r = array_merge($r,$r2);
- if($r['upgrade']) {
- $urls[1] = $r['url'];
- } else {
- $urls = $this->url->show($r['id'], '', $r['catid'],$r['inputtime']);
- }
- $this->html->show($urls[1],$r,0,'edit',$r['upgrade']);
- }
- if($pages > $page) {
- $page++;
- $http_url = get_url();
- $creatednum = $offset + count($data);
- $percent = round($creatednum/$total, 2)*100;
- $message = '【'.$this->categorys[$catid]['catname'].'】 '.L('have_update_items',array('total'=>$total,'creatednum'=>$creatednum,'percent'=>$percent));
- $forward = $start ? "?m=content&c=create_html&a=show&type=$type&dosubmit=1&first=$first&fromid=$fromid&toid=$toid&fromdate=$fromdate&todate=$todate&pagesize=$pagesize&page=$page&pages=$pages&total=$total&autoid=$autoid&set_catid=1" : preg_replace("/&page=([0-9]+)&pages=([0-9]+)&total=([0-9]+)/", "&page=$page&pages=$pages&total=$total", $http_url);
- } else {
- $autoid++;
- $message = L('start_update').$this->categorys[$catid]['catname']." ...";
- $forward = "?m=content&c=create_html&a=show&set_catid=1&pagesize=$pagesize&dosubmit=1&autoid=$autoid";
- }
- showmessage($message,$forward,200);
- }
- } else {
- $show_header = $show_dialog = '';
- $admin_username = param::get_cookie('admin_username');
- $modelid = isset($_GET['modelid']) ? intval($_GET['modelid']) : 0;
-
- $tree = pc_base::load_sys_class('tree');
- $tree->icon = array(' │ ',' ├─ ',' └─ ');
- $tree->nbsp = ' ';
- $categorys = array();
- if(!empty($this->categorys)) {
- foreach($this->categorys as $catid=>$r) {
- if($this->siteid != $r['siteid'] || ($r['type']!=0 && $r['child']==0)) continue;
- if($modelid && $modelid != $r['modelid']) continue;
- if($r['child']==0) {
- $setting = string2array($r['setting']);
- if(!$setting['content_ishtml']) continue;
- }
- $r['disabled'] = $r['child'] ? 'disabled' : '';
- $categorys[$catid] = $r;
- }
- }
- $str = "<option value='\$catid' \$selected \$disabled>\$spacer \$catname</option>";
- $tree->init($categorys);
- $string .= $tree->get_tree(0, $str);
- include $this->admin_tpl('create_html_show');
- }
- }
- /**
- * 生成栏目页
- */
- public function category() {
- if(isset($_POST['dosubmit'])) {
- extract($_POST,EXTR_SKIP);
- $this->html = pc_base::load_app_class('html');
- $referer = isset($referer) ? urlencode($referer) : '';
- $modelid = intval($_POST['modelid']);
- if(!isset($set_catid)) {
- if($catids[0] != 0) {
- $update_url_catids = $catids;
- } else {
- foreach($this->categorys as $catid=>$cat) {
- if($cat['siteid'] != $this->siteid || $cat['type']==2 || !$cat['ishtml']) continue;
- if($modelid && ($modelid != $cat['modelid'])) continue;
- $update_url_catids[] = $catid;
- }
- }
- setcache('update_html_catid'.'-'.$this->siteid.'-'.$_SESSION['userid'],$update_url_catids,'content');
- $message = L('start_update_category');
- $forward = "?m=content&c=create_html&a=category&set_catid=1&pagesize=$pagesize&dosubmit=1&modelid=$modelid&referer=$referer";
-
- showmessage($message,$forward);
- }
-
- $catid_arr = getcache('update_html_catid'.'-'.$this->siteid.'-'.$_SESSION['userid'],'content');
-
- $autoid = $autoid ? intval($autoid) : 0;
-
- if(!isset($catid_arr[$autoid])) {
- if(!empty($referer) && $this->categorys[$catid_arr[0]]['type']!=1) {
- showmessage(L('create_update_success'),'?m=content&c=content&a=init&catid='.$catid_arr[0],200);
- } else {
- showmessage(L('create_update_success'),'?m=content&c=create_html&a=category',200);
- }
- }
- $catid = $catid_arr[$autoid];
- $page = $page ? $page : 1;
- $j = 1;
- do {
- $this->html->category($catid,$page);
- $page++;
- $j++;
- $total_number = isset($total_number) ? $total_number : PAGES;
- } while ($j <= $total_number && $j < $pagesize);
- if($page <= $total_number) {
- $endpage = intval($page+$pagesize);
- $message = L('updating').$this->categorys[$catid]['catname'].L('start_to_end_id',array('page'=>$page,'endpage'=>$endpage));
- $forward = "?m=content&c=create_html&a=category&set_catid=1&pagesize=$pagesize&dosubmit=1&autoid=$autoid&page=$page&total_number=$total_number&modelid=$modelid&referer=$referer";
- } else {
- $autoid++;
- $message = $this->categorys[$catid]['catname'].L('create_update_success');
- $forward = "?m=content&c=create_html&a=category&set_catid=1&pagesize=$pagesize&dosubmit=1&autoid=$autoid&modelid=$modelid&referer=$referer";
- }
- showmessage($message,$forward,200);
- } else {
- $show_header = $show_dialog = '';
- $admin_username = param::get_cookie('admin_username');
- $modelid = isset($_GET['modelid']) ? intval($_GET['modelid']) : 0;
-
- $tree = pc_base::load_sys_class('tree');
- $tree->icon = array(' │ ',' ├─ ',' └─ ');
- $tree->nbsp = ' ';
- $categorys = array();
- if(!empty($this->categorys)) {
- foreach($this->categorys as $catid=>$r) {
- if($this->siteid != $r['siteid'] || ($r['type']==2 && $r['child']==0)) continue;
- if($modelid && $modelid != $r['modelid']) continue;
- if($r['child']==0) {
- if(!$r['ishtml']) continue;
- }
- $categorys[$catid] = $r;
- }
- }
- $str = "<option value='\$catid' \$selected>\$spacer \$catname</option>";
- $tree->init($categorys);
- $string .= $tree->get_tree(0, $str);
- include $this->admin_tpl('create_html_category');
- }
- }
- //生成首页
- public function public_index() {
- $this->html = pc_base::load_app_class('html');
- $size = $this->html->index();
- showmessage(L('index_create_finish',array('size'=>sizecount($size))));
- }
- /**
- * 批量生成内容页
- */
- public function batch_show() {
- if(isset($_POST['dosubmit'])) {
- $catid = intval($_GET['catid']);
- if(!$catid) showmessage(L('missing_part_parameters'));
- $modelid = $this->categorys[$catid]['modelid'];
- $setting = string2array($this->categorys[$catid]['setting']);
- $content_ishtml = $setting['content_ishtml'];
- if($content_ishtml) {
- $this->url = pc_base::load_app_class('url');
- $this->db->set_model($modelid);
- if(empty($_POST['ids'])) showmessage(L('you_do_not_check'));
- $this->html = pc_base::load_app_class('html');
- $ids = implode(',', $_POST['ids']);
- $rs = $this->db->select("catid='$catid' AND id IN ($ids)");
- $tablename = $this->db->table_name.'_data';
- foreach($rs as $r) {
- if($r['islink']) continue;
- $this->db->table_name = $tablename;
- $r2 = $this->db->get_one(array('id'=>$r['id']));
- if($r2) $r = array_merge($r,$r2);
- //判断是否为升级或转换过来的数据
- if(!$r['upgrade']) {
- $urls = $this->url->show($r['id'], '', $r['catid'],$r['inputtime']);
- } else {
- $urls[1] = $r['url'];
- }
- $this->html->show($urls[1],$r,0,'edit',$r['upgrade']);
- }
- showmessage(L('operation_success'),HTTP_REFERER);
- }
- }
- }
- }
- ?>
|