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; } } ?>