Server : nginx/1.22.1 System : Linux iZwz9daxib3w3i063fw434Z 3.10.0-1127.19.1.el7.x86_64 #1 SMP Tue Aug 25 17:23:54 UTC 2020 x86_64 User : www ( 1000) PHP Version : 7.2.33 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv Directory : /www/wwwroot/www.jkmold.com/phpcms/modules/content/ |
<?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); } } } } ?>