|
|

楼主 |
发表于 2018-9-18 09:33:08
|
显示全部楼层
自动生成价格文章
在数据表 destoon_category 最后添加 ·mungjangtime· 字段。
修改 \admin\category.inc.php
function update($category) {
if(!is_array($category)) return false;
foreach($category as $k=>$v) {
if(!$v['catname']) continue;
$v['parentid'] = intval($v['parentid']);
if($k == $v['parentid']) continue;
if($v['parentid'] > 0 && !isset($this->category[$v['parentid']])) continue;
$v['listorder'] = intval($v['listorder']);
$v['level'] = intval($v['level']);
$v['letter'] = preg_match("/^[a-z0-9]{1}+$/i", $v['letter']) ? strtolower($v['letter']) : '';
$v['catdir'] = $this->get_catdir($v['catdir'], $k);
if(!$v['catdir']) $v['catdir'] = $k;
if(array_key_exists('mungjangtime', $v)){
#发文时间,只留数字与冒号
$v['mungjangtime'] = preg_replace("/[^0-9:\-\.+]/",'',$v['mungjangtime']);
#有数字
if(preg_match("/[0-9a-z]/i",$v['mungjangtime'])){
$v['mungjangtime'] = date('H:i',strtotime($v['mungjangtime']));
}
$v['mungjangtime'] = mysql_real_escape_string($v['mungjangtime']);
$sql = "UPDATE {$this->table} SET catname='$v[catname]',parentid='$v[parentid]',listorder='$v[listorder]',style='$v[style]',level='$v[level]',letter='$v[letter]',catdir='$v[catdir]',mungjangtime='$v[mungjangtime]' WHERE catid=$k ";
}else{
$sql = "UPDATE {$this->table} SET catname='$v[catname]',parentid='$v[parentid]',listorder='$v[listorder]',style='$v[style]',level='$v[level]',letter='$v[letter]',catdir='$v[catdir]' WHERE catid=$k ";
}
$this->db->query($sql);
}
return true;
}
修改 \admin\template\category.tpl.php
show_menu($menus);
+# 自动发文模块组
+$mungjangmid = array(30,28);
?>
<th>分类目录</th>
+<?php if(in_array($mid,$mungjangmid)) { ?><th>生成时间点</th><?php }?>
<th>索引</th>
<td><input name="category[<?php echo $v['catid'];?>][catdir]" type="text" value="<?php echo $v['catdir'];?>" size="10"/></td>
+<?php if(in_array($mid,$mungjangmid)) { ?>
+<td><input name="category[<?php echo $v['catid'];?>][mungjangtime]" type="text" value="<?php echo $v['mungjangtime'];?>" size="10"/></td>
+<?php }?>
<td>
修改 \module\article\list.inc.php 增加如下代码:
/* 每天固定自补价格文 */
# 2018年9月18日 金留庆(aush532@163.com)
#此处补充的是价格而非报价,标题是“9月14日金乡大蒜价格”这样的
#mungjang 萌章,萌曰发,章即文章,发布文章之意。
#先找出 mungjangtime 字段有时间值的分类
#若有,检查此分类是否可执行萌章 (是否已执行?是否到时间?)
#若可,剔除其下不萌章的子分类,得到 待萌分类组
#查询分类下 以昨日日期开头的 且 发布日期不早于昨日 的文章,记为 旧章
#以 旧章 得到今天需有的文章,记为 今章
#将 今章 剔除 网站已有 且 发布日期不早于今日 的文章
#最后执行时间写入 mungjang_file_cid.txt
#后续优化:分成几个函数(分类处理、文章处理)
//if($_GET['aushy']=='aushy'){
# 获取已填入 生成时间点 的分类
$result = $db->query("SELECT `catid`,`mungjangtime`,`moduleid`,`arrchildid` FROM `{$DT_PRE}category` WHERE `mungjangtime` LIKE '%:%'");
$mungjang_category = array();
while($r = $db->fetch_array($result)) {
$mungjang_category[$r['catid']] = $r;
}
if(! empty($mungjang_category)){
#先将分类的arrchildid字段 去掉 已定义 生成时间点 的子分类
$mungjang_category_id = array_keys($mungjang_category);
foreach($mungjang_category as &$category){
$arrchildid = explode(',',$category['arrchildid']);
$arrchildid = array_diff($arrchildid, $mungjang_category_id);
#补上自己的id
array_unshift($arrchildid, $category['catid']);
$category['arrchildid'] = implode(',', $arrchildid);
}
unset($category);
#今日开始时间
$mungjang_time_t = strtotime('00:00');
#昨日开始时间
$mungjang_time_y = $mungjang_time_t - 86400;
#记录未萌分类
$mungjang_cat = array();
foreach($mungjang_category as $category){
$mungjang_file = __DIR__ . '/mungjang_file_'.$category['catid'].'.txt';
#分类萌章时间点
$mungjang_time = strtotime($category['mungjangtime']);
//if(time() >= $mungjang_time and time() < ($mungjang_time +100)){
if(time() >= $mungjang_time){
$mungjang_do = FALSE;
if (! file_exists($mungjang_file)) {
$mungjang_do = TRUE;
}else{
$mungjang_str = file_get_contents($mungjang_file);
if (intval($mungjang_str) < $mungjang_time_t ) {
$mungjang_do = TRUE;
}
}
if($mungjang_do){
file_put_contents($mungjang_file,strval(time()));
file_put_contents(__DIR__ . '/mungjang.log',date('c').' moduleid='.$category['moduleid'].' catid='.$category['catid']." run\r\n",FILE_APPEND);
$mungjang_cat[$category['catid']] = $category;
}
}
}
if(! empty($mungjang_cat)){
//排除强制不萌的子分类
$result = $db->query("SELECT `catid`,`mungjangtime`,`moduleid`,`arrchildid` FROM `{$DT_PRE}category` WHERE `mungjangtime`='-'");
#重新初始化 $mungjang_category
$mungjang_category = array();
while($r = $db->fetch_array($result)) {
$mungjang_category[$r['catid']] = $r;
}
if(! empty($mungjang_category)){
#要排除的分类不为空
#找出所有要排除的分类与子分类
$mungjang_category_cat = array();
foreach($mungjang_category as $category){
$arrchildid = explode(',',$category['arrchildid']);
$mungjang_category_cat = array_merge($mungjang_category_cat, $arrchildid);
}
$mungjang_category_cat = array_unique($mungjang_category_cat);
#排除
foreach($mungjang_cat as &$category){
$arrchildid = explode(',',$category['arrchildid']);
$arrchildid = array_diff($arrchildid, $mungjang_category_cat);
$category['arrchildid'] = implode(',', $arrchildid);
}
unset($category);
}
$mungjang_title_y = date('n',$mungjang_time_y).'月'.date('j',$mungjang_time_y).'日';
$mungjang_title_t = date('n',$mungjang_time_t).'月'.date('j',$mungjang_time_t).'日';
foreach($mungjang_cat as $category){
if($category['arrchildid'] != ''){
#寻旧章
$sql_0 = "SELECT * FROM `{$DT_PRE}article_{$category['moduleid']}` WHERE `status`=3 and `addtime`>{$mungjang_time_y} and `catid` in ({$category['arrchildid']})";
$sql = $sql_0 . " AND `title` LIKE '%{$mungjang_title_y}%'";
$result = $db->query($sql);
$mungjang_article_y = array();
while($r = $db->fetch_array($result)) {
$r['title'] = str_replace($mungjang_title_y, $mungjang_title_t, $r['title']);
$mungjang_article_y[] = $r;
}
$sql = $sql_0 . " AND `title` LIKE '%{$mungjang_title_t}%'";
$result = $db->query($sql);
$mungjang_article_title = array();
while($r = $db->fetch_array($result)) {
$mungjang_article_title[] = $r['title'];
}
#剔今章
$mungjang_article = array();
foreach($mungjang_article_y as $article){
if(! in_array($article['title'], $mungjang_article_title)){
$article['keyword'] = str_replace($mungjang_title_y, $mungjang_title_t, $article['keyword']);
$article['addtime'] = '';
$article['edittime'] = '';
$article['editor'] = '';
$article['ip'] = '127.0.0.1';
$article['hits'] = '1';
$mungjang_article[$article['itemid']] = $article;
}
}
if(! empty($mungjang_article)){
$mungjang_article_id = array_keys($mungjang_article);
$mungjang_article_id = implode(',', $mungjang_article_id);
#取出内容
$sql = "SELECT * FROM `{$DT_PRE}article_data_{$category['moduleid']}` WHERE `itemid` IN ({$mungjang_article_id})";
$result = $db->query($sql);
$mungjang_article_data = array();
while($r = $db->fetch_array($result)) {
$mungjang_article_data[$r['itemid']] = $r;
}
#执行补充到数据库
foreach($mungjang_article as $itemid => $article){
unset($article['itemid']);
$mungjang_sql_k = '';
$mungjang_sql_v = '';
foreach ($article as $key =>$value) {
if ($value != '') {
$mungjang_sql_k .= '`' . mysql_real_escape_string($key) . '`' .',';
$mungjang_sql_v .= '\'' . mysql_real_escape_string($value) . '\'' .',';
}
}
$mungjang_sql_k .= '`addtime`,`edittime`';
$mungjang_sql_v .= strval(time()) . ',' . strval(time());
#添加报价
//*
$sql_a = "INSERT INTO `{$DT_PRE}article_{$category['moduleid']}` ({$mungjang_sql_k}) VALUES ({$mungjang_sql_v})";
$db->query($sql_a);
file_put_contents(__DIR__ . '/mungjang.log',$sql_a . "\r\n",FILE_APPEND);
$mungjang_itemid = $db->insert_id();
#调试用
//$mungjang_itemid = '新id';
$sql_b = "UPDATE `{$DT_PRE}article_{$category['moduleid']}` SET `linkurl`='show-htm-itemid-{$mungjang_itemid}.html' WHERE `itemid`={$mungjang_itemid}";
$db->query($sql_b);
file_put_contents(__DIR__ . '/mungjang.log',$sql_b . "\r\n",FILE_APPEND);
$mungjang_content = '\'' . mysql_real_escape_string($mungjang_article_data[$itemid]['content']) . '\'' ;
$sql_c = "INSERT INTO `{$DT_PRE}article_data_{$category['moduleid']}` (`itemid`,`content`) VALUES ({$mungjang_itemid},{$mungjang_content})";
$db->query($sql_c);
file_put_contents(__DIR__ . '/mungjang.log',$sql_c . "\r\n",FILE_APPEND);
//*/
}
}
}
}
}
}
//}
/* 每天固定自补价格文 完结 */
注意 mysql 与 mysqli 不兼容的地方。 |
|