select_all('news_base', $whereData, $field);
if(!empty( $List )){
if($data['group']){
if(!is_array($data['group'])){
//根据DATA数组传入条件 判断是否需要处理数据
foreach($List as $v)
{
$classid[$v['nid']] = $v['nid'];
}
//新闻分类查询条件
$groupWhere['id'] = array('in',pylode(',', $classid ) );
//提取新闻分类
$ListNew = $this -> getClass( $groupWhere );
$groupList = $ListNew['list'];
}else{
$groupList = $data['group'];
}
}
//提取新闻属性
if($data['property'])
{
$property = $this -> getProperty();
if(!empty($property)){
foreach($property as $key=>$value)
{
$propertyList[$value['value']] = $value['name'];
}
}
$ListNew['property'] = $propertyList;
}
//提取新闻内容
if($data['content'])
{
if(!is_array($data['content'])){
foreach($List as $v)
{
$nid[$v['id']] = $v['id'];
}
$content = $this -> select_all('news_content',array('nbid'=>array('in',pylode(',', $nid))));
if(!empty($content)){
foreach($content as $key=>$value)
{
$contentList[$value['nbid']] = $value;
}
}
}
}
foreach($List as $k=>$v)
{
$List[$k]['url'] = Url('article',array('c'=>'show','id'=>$v['id']));
$List[$k]['classurl'] = Url('article',array('c'=>'list','nid'=>$v['nid']));
$List[$k]['picurl'] = checkpic($v['newsphoto']);
if (!empty($v['starttime'])){
$List[$k]['datetime_n'] = date('Y-m-d',$v['starttime']);
}
if (!empty($groupList[$v['nid']]['name'])){
$List[$k]['name'] = $groupList[$v['nid']]['name'];
}
if (!empty($contentList[$v['id']]['content'])){
$List[$k]['content'] = $contentList[$v['id']]['content'];
}
if(!empty($v['description'])){
$List[$k]['description_n'] = mb_substr($v['description'],0,30,"utf-8");
}
$type = '';
if($data['tlen']){
$List[$k]['title'] = mb_substr($v['title'],0,$data['tlen'],"utf-8");
}
if($data['property'])
{
if($v['newsphoto'] != '')
{
$type .= " 图";
}
if($v['describe'] != "")
{
$describe = explode(",",$v['describe']);
foreach($describe as $desv)
{
$type .= " ".$propertyList[$desv];
}
}
if(trim($type)){
$List[$k]['titype'] = "[".$type."]";
}
}
}
$ListNew['list'] = $List;
}
return $ListNew;
}
/**
* 修改news_base 详情
* $whereData 修改条件数据
* $upData 修改的数据
* $data 自定义处理数组
*/
public function upBase($whereData = array(), $upData = array(), $data = array()){
$nid = 0;
if (!empty($upData) && !empty($whereData)){
$nid = $this -> update_once('news_base', $upData, $whereData);
}
return $nid;
}
/**
* $whereData 查询条件
*/
public function delNews($whereData) {
$nid = 0;
$nid = $this -> delete_all('news_base', $whereData, '');
if(isset($whereData['id'])){
$this -> delete_all('news_content', array('nbid' => $whereData['id']), '');
}
return $nid;
}
/**
* 获取news_base 详情
* $whereData 查询条件
* $data 自定义处理数组 scene 场景值,定制不同场景返回的数据
*/
public function getInfo($whereData=array(),$data=array())
{
$data['field'] = empty($data['field']) ? '*' : $data['field'];
$Info = $this -> select_once('news_base', $whereData, $data['field']);
if(!empty($Info)){
$Info['datetime_n'] = date('Y-m-d',$Info['starttime']);
$Info['author_n'] = mb_substr($Info['author'],0,30,"utf-8");
$Info['newsphoto_n'] = checkpic($Info['newsphoto']);
if($data['iscon'] == 1 && $Info['id'])
{
$news_content = $this -> select_once('news_content',array('nbid' => $Info['id']));
if(!empty($news_content['content'])){
$content = str_replace(array('"',' ','<>'), array('','',''), $news_content['content']);
$content = htmlspecialchars_decode($content);
preg_match_all('/
config['sy_ossurl'].$v,$content);
}
}
}
preg_match_all('/config['sy_weburl'].$v,$content);
}
}
}
$Info['content'] = $content;
}
}
}
return $Info;
}
/**
* 创建新闻
* $id : 新闻ID
* $iscon : 是否需要查询新闻详细内容
*
*/
function addNews($setData){
$res = array(
'errcode' => 8,
'layertype' => 0,
'msg' => '',
'data' => 0
);
if(empty($setData)){
$res['msg'] = '缺少参数!';
return $res;
}
$newsId = intval($setData['id']);
//id不为空时,判断此id是否存在
if(!empty($newsId)){
$news_base = $this -> getInfo(array('id'=>$newsId));
if(empty($news_base)){
$res['msg'] = '新闻不存在!';
return $res;
}
}
// 处理编辑器内图片
if(!empty($setData['content'])){
$content = str_replace(array('"','\''),array('',''),$setData['content']);
preg_match_all('/
]+src=(.*?)\s[^>]+>/im',$content,$match);
if(!empty($match[1])){
$realpicArr = array();
foreach($match[1] as $mk=>$mv){
if(!strstr($mv,'fileTypeImages')){
$realpicArr[]= $mv;
}
}
// 有的图片是网络路径,,\后面的截取出来需过滤掉
$mbstr = substr(strrchr($realpicArr[0], "\\"), 1);
$str = str_replace($mbstr,'',$realpicArr[0]);
$str = str_replace("\\",'',$str);
}
$contentRep = array('&',"background-color:#ffffff","background-color:#fff","white-space:nowrap;");
$contentStr = str_replace($contentRep, array('&','', '', ''), $setData['content']);
if($this->config['sy_outlinks']==1){
$contentStr = $this -> _contentProcess($contentStr);
}
$setData['content'] = $contentStr;
}
// 处理上传缩略图
if($setData['file']['tmp_name']){
include_once('upload.model.php');
$uploadM = new upload_model($this->db, $this->def);
$upArr = array(
'file' => $setData['file'],
'dir' => 'news',
'type' => 'news'
);
$pic = $uploadM->newUpload($upArr);
if (!empty($pic['msg'])){
$res['msg'] = $pic['msg'];
return $res;
}elseif (!empty($pic['picurl'])){
$pictures = $pic['picurl'];
$thumburl = $pic['thumburl'];
}
unset($setData['file']);
}
//处理缩略图
if(isset($pictures)){
$setData['newsphoto'] = $pictures;
}elseif(isset($str) && $news_base['newsphoto'] == ''){
if(strpos($str,'http:')===false && strpos($str,'https:')===false){
$setData['newsphoto'] = $str?'.'.$str:$str;
}else{
$setData['newsphoto'] = $str;
}
}
if(isset($thumburl)){
$setData['s_thumb'] = $thumburl;
}elseif(isset($str) && $news_base['s_thumb']==''){
if(strpos($str,'http:')===false && strpos($str,'https:')===false){
$setData['s_thumb'] = $str?'.'.$str:$str;
}else{
$setData['s_thumb'] = $str;
}
}
//处理传入的参数
$setData['describe'] = pylode(',', $setData['describe']);
$timeStr = time();
$setData['lastupdate'] = $timeStr;
if(empty($setData['keyword'])){
require_once(LIB_PATH."lib_splitword_class.php");
$sp = new SplitWord();
$keywordarr = $sp -> getkeyword(strip_tags($contentStr));
$setData['keyword'] = pylode(',', $keywordarr);
}
$setData['did'] = $setData['did'] == '' ? 0 : $setData['did'];
/* if($this->config['sy_outlinks']!=1){
include_once('keyword.model.php');
foreach($keyword as $key=>$val){
$keyname[] = $val['key_name'];
}
$str = htmlspecialchars_decode($setData['content']);
foreach($keyname as $key=>$val){
$str = preg_replace("/]*>(".$val.".*)<\/a>/is", "$1", $str);
}
$setData['content'] = $str;
} */
$setData['endtime'] = strtotime($setData['endtime']);//结束时间
//内容数组
$contentArr = array(
'content' => $setData['content'],
'did' => $setData['did']
);
//根据id来判断是新增还是修改
if(empty($newsId)){
$setData['datetime'] = $timeStr;
// 开始时间,添加时没有开始时间,开始时间是添加时间
$setData['starttime'] = !empty($setData['starttime']) ? strtotime($setData['starttime']) : $timeStr;
if(empty($setData['sort'])){
$setData['sort'] = 0;
}
$nbid = $this -> insert_into('news_base', $setData);
if(empty($nbid)){
$res['msg'] = '新增数据错误!';
return $res;
}
$contentArr['nbid'] = $nbid;
$cont = $this -> insert_into("news_content", $contentArr);
$res['msg'] = '新闻(ID:'.$nbid.')添加成功!';
$res['data'] = $nbid;
}else{
// 开始时间,修改时,直接按传过来的值处理
$setData['starttime'] = strtotime($setData['starttime']);
$nbid = $this -> upBase(array('id' => array('=', $newsId)), $setData);
$row = $this -> select_once('news_content', array('nbid' => $newsId), '`nbid`');
if(!empty($row)){
$cont = $this -> update_once('news_content', $contentArr, array('nbid' => array('=', $newsId)));
}else{
$contentArr['nbid'] = $newsId;
$cont = $this -> insert_into('news_content', $contentArr);
}
$res['msg'] = '新闻(ID:'.$newsId.')更新成功!';
$res['data'] = $newsId;
}
$res['errcode'] = 9;
return $res;
}
/**
* 关键词替换
*/
public function _contentProcess($content){
$hotKey = array('type' => array('=', 3), 'check' => array('=', 1));
$keyname = $this -> select_all('hot_key', $hotKey, '`key_name`');
if(empty($keyname)){
return $content;
}
/*
避免关键字这样的链接中文本被替换成 导致标签嵌套错误:
先匹配出这样的标签,记录下,并替换掉;
再执行下面的$keynamearr替换;
最后再替换回来。
*/
$aLink = array();
$aLinkFlag = array();
foreach($keyname as $val){
if(preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$val['key_name'])){
$keynamearr[] = $val['key_name'];
$tmpStr = searchListRewrite(array('type' => 'keyword', 'v' => $val['key_name']), $this->config);
$tmpaStr = '"target="_bank">';
$href[] = ']+>[^<]*{$val['key_name']}[^<]*<\/a>/u", $content, $matches);
if(is_array($matches[0])){
$aLinkTmp = array();
$aLinkTmpFlag = array();
foreach($matches[0] as $k => $v){
$index = count($aLink);
$aLink[] = $aLinkTmp[] = $v;
$aLinkFlag[] = $aLinkTmpFlag[] = "[flag]{$index}[flag]";
}
//这里先替换一遍,以防有类似这样大词套小词的两个关键词:“保安集团”、“保安”,重复匹配
$content = str_replace($aLinkTmp, $aLinkTmpFlag, $content);
}
}
}
$content = str_replace($aLink, $aLinkFlag, $content);
$content = str_replace($keynamearr, $href, $content);
$content = str_replace($aLinkFlag, $aLink, $content);
return $content;
}
function getClass($whereData=array()){
if($whereData['isson']){
$sonClass = 1;
unset($whereData['isson']);
}
$List = $this->select_all('news_group', $whereData);
if(!empty($List)){
foreach($List as $key=>$value)
{
$ListNew['list'][$value['id']] = $value;
}
}
//是否需要将新闻分类整合成子类显示
if($sonClass == 1)
{
$a = 0; $b = 0;
if(is_array($ListNew['list']))
{
foreach($ListNew['list'] as $key=>$v){
if($v['keyid']==0)
{
$one_class[$a]['id'] = $v['id'];
$one_class[$a]['name'] = $v['name'];
$a++;
}
if($v['keyid']!=0)
{
$two_class[$v['keyid']][$v['id']] = array('name' => $v['name'],'id' => $v['id']);
}
}
}
$ListNew['one_class'] = $one_class;
$ListNew['two_class'] = $two_class;
}
return $ListNew;
}
function getProperty($whereData=array()){
$List = $this->select_all('property',$whereData);
return $List;
}
function addProperty($addData,$whereData = array())
{
if(!empty($whereData))
{
$return['id'] = $this->update_once('property',$addData,$whereData);
$return['msg'] = '新闻属性(ID:'.$whereData['id'].')';
$return['msg'] = $return['id'] ? $return['msg'].'修改成功!' : $return['msg'].'修改失败!';
}else{
$return['id'] = $this->insert_into('property',$addData);
$return['msg'] = '新闻属性(ID:'.$return['id'].')';
$return['msg'] = $return['id'] ? $return['msg'].'添加成功!' : $return['msg'].'添加失败!';
}
//操作状态 9:成功 8:失败 配合原有提示函数
$return['errcode'] = $return['id'] ? '9' :'8';
return $return;
}
function delProperty($delId)
{
if($delId)
{
if(is_array($delId))
{
$delId = pylode(',',$delId);
$return['layertype'] = 1;
}else{
$return['layertype'] = 0;
}
$return['id'] = $this -> delete_all("property",array('id' => array('in',$delId)),"");
$return['msg'] = '新闻属性(ID:'.$delId.')';
$return['errcode'] = $return['id'] ? '9' :'8';
$return['msg'] = $return['id'] ? $return['msg'].'删除成功!' : $return['msg'].'删除失败!';
}else{
$return['msg'] = '请选择您要删除的新闻属性!';
$return['errcode'] = 8;
}
return $return;
}
/*
* 获取新闻数量
* $whereData 查询条件
*
*/
function getNum($whereData=array()){
$List = $this->select_num('news_base',$whereData);
return $List;
}
/*
* 获取新闻类别详情
* $whereData 查询条件 field 查询字段
*
*/
public function getGroup($whereData=array(), $data=array()){
$field = $data['field'] ? $data['field'] : '*';
$List = $this->select_once('news_group', $whereData, $field);
return $List;
}
/*
* 添加新闻类别
* $addData 添加数据
*
*/
public function addGroup($addData){
$return['id'] = $this->insert_into('news_group', $addData);
$return['msg'] = '新闻类别(ID:'.$return['id'].')';
$return['msg'] = $return['id'] ? $return['msg'].'添加成功!' : $return['msg'].'添加失败!';
//操作状态 9:成功 8:失败 配合原有提示函数
$return['errcode'] = $return['id'] ? 9 : 8;
return $return;
}
/*
* 修改新闻类别
* $upData 修改数据
*
*/
public function updGroup($whereData, $upData = array()){
$return['id'] = $this->update_once('news_group', $upData, $whereData);
$return['msg'] = '新闻类别(ID:'.$whereData['id'].')';
$return['msg'] = $return['id'] ? $return['msg'].'修改成功!' : $return['msg'].'修改失败!';
//操作状态 9:成功 8:失败 配合原有提示函数
$return['errcode'] = $return['id'] ? 9 : 8;
return $return;
}
/*
* 删除新闻类别
* $delId 删除数据
*
*/
public function delGroup($delId){
if($delId)
{
if(is_array($delId))
{
$delId = pylode(',', $delId);
$return['layertype'] = 1;
}else{
$return['layertype'] = 0;
}
$return['id'] = $this -> delete_all("news_group",array('id' => array('in',$delId)), "");
$return['msg'] = '新闻类别(ID:'.$delId.')';
$return['errcode'] = $return['id'] ? '9' :'8';
$return['msg'] = $return['id'] ? $return['msg'].'删除成功!' : $return['msg'].'删除失败!';
}else{
$return['msg'] = '请选择您要删除的新闻类别!';
$return['errcode'] = 8;
}
return $return;
}
}
?>