437 lines
12 KiB
PHP
437 lines
12 KiB
PHP
<?php
|
||
class Admin_NewsController extends Zend_Controller_Action
|
||
{
|
||
function preDispatch()
|
||
{
|
||
$this->db=Zend_Registry::get('db');
|
||
$this->view->config = Zend_Registry::get('config');
|
||
$this->messenger=$this->_helper->getHelper('FlashMessenger');
|
||
$this->view->messages = $this->messenger->getMessages();
|
||
}
|
||
function postDispatch()
|
||
{
|
||
$this->view->messages = $this->messenger->getMessages();
|
||
}
|
||
function indexAction()
|
||
{
|
||
$sql = "select n.*,c.title as catlog,u.realname as author from news_archives n
|
||
left join news_category c on n.typeid=c.id
|
||
LEFT JOIN users u ON n.userid=u.id
|
||
order by n.ts_created desc limit 10";
|
||
$rs = $this->db->query($sql);
|
||
$rows = $rs->fetchAll();
|
||
$this->view->news = $rows;
|
||
|
||
$sql = "SELECT count(id) as c FROM news_archives";
|
||
$rs = $this->db->query($sql);
|
||
$row = $rs->fetch();
|
||
$this->view->totle = $row;
|
||
|
||
$sql = "SELECT count(id) as c FROM news_category";
|
||
$rs = $this->db->query($sql);
|
||
$row = $rs->fetch();
|
||
$this->view->typec = $row;
|
||
|
||
}//indexAction 首页
|
||
|
||
function newslistAction(){
|
||
|
||
$type = $this->_request->getParam('type');
|
||
|
||
if(!empty($type))
|
||
{
|
||
$sql = "select n.*,c.title as catlog,c.url,u.realname as author from news_archives n
|
||
left join news_category c on n.typeid=c.id
|
||
LEFT JOIN users u ON n.userid=u.id
|
||
WHERE n.typeid='$type' order by n.ts_created desc";
|
||
}else
|
||
{
|
||
$sql = "select n.*,c.title as catlog,c.url,u.realname as author from news_archives n
|
||
left join news_category c on n.typeid=c.id
|
||
LEFT JOIN users u ON n.userid=u.id
|
||
order by n.ts_created desc";
|
||
}
|
||
$rs = $this->db->query($sql);
|
||
$rows = $rs->fetchAll();
|
||
|
||
$paginator = Zend_Paginator::factory($rows);
|
||
$paginator->setCurrentPageNumber($this->_getParam('page'));
|
||
$paginator->setItemCountPerPage($this->view->config->page->max);
|
||
$paginator->setView($this->view);
|
||
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
|
||
$this->view->paginator=$paginator;
|
||
|
||
$sql="select * from news_category order by displayorder desc";
|
||
$re = $this->db->query($sql);
|
||
$types = $re->fetchAll();
|
||
|
||
$this->view->types=$types;
|
||
$this->view->type = $type;
|
||
}//newslistAction 新闻列表
|
||
|
||
function catlogAction()
|
||
{
|
||
$add = $this->_request->getParam('add');
|
||
$submit = $this->_request->getParam('submit');
|
||
|
||
$delete = $this->_request->getParam('delete');
|
||
|
||
$edit = $this->_request->getParam('edit');
|
||
|
||
if($add)
|
||
{
|
||
if(empty($submit))
|
||
$this->_helper->viewRenderer('category-add');
|
||
else{
|
||
$title = $this->_request->getParam('ctitle');
|
||
$url = $this->_request->getParam('url');
|
||
$keyword = $this->_request->getParam('keyword');
|
||
$description = $this->_request->getParam('description');
|
||
|
||
$sql="insert into news_category (title,keywords,description,url) values ('$title','$keyword','$description','$url')";
|
||
if($this->db->exec($sql) > 0)
|
||
{
|
||
$this->messenger->addMessage('提示信息:栏目添加成功!');
|
||
$this->_redirect('/admin/news/catlog');
|
||
}
|
||
|
||
}
|
||
|
||
}//栏目添加
|
||
if($delete>0)
|
||
{
|
||
$sql = "delete from news_category where id='$delete'";
|
||
if($this->db->exec($sql)>0)
|
||
{
|
||
$this->messenger->addMessage('提示信息:栏目删除成功!');
|
||
$this->_redirect('/admin/news/catlog');
|
||
}
|
||
|
||
}//栏目删除
|
||
if($edit>0)
|
||
{
|
||
$title = $this->_request->getParam('ctitle');
|
||
$url = $this->_request->getParam('url');
|
||
$keyword = $this->_request->getParam('keyword');
|
||
$description = $this->_request->getParam('description');
|
||
$displayorder = $this->_request->getParam('displayorder');
|
||
|
||
$sql="update news_category set title='$title',keywords='$keyword',description='$description',displayorder='$displayorder',url='$url' where id='$edit'";
|
||
if($this->db->exec($sql)>0)
|
||
{
|
||
$this->messenger->addMessage('提示信息:栏目编辑成功!');
|
||
$this->_redirect('/admin/news/catlog');
|
||
}
|
||
}//栏目编辑
|
||
else
|
||
{
|
||
|
||
$sql="select * from news_category order by displayorder asc";
|
||
$re=$this->db->query($sql);
|
||
$catlogs=$re->fetchAll();
|
||
|
||
$this->view->catlogs=$catlogs;
|
||
|
||
}//栏目列表
|
||
|
||
|
||
}//栏目管理
|
||
|
||
|
||
function newsaddAction()
|
||
{
|
||
$id = $this->_request->getParam('id');
|
||
if($id>0)
|
||
{
|
||
$sql = "SELECT arc.id,arc.title,arc.ts_published,arc.typeid,cat.url,cat.id as typeid from news_archives arc
|
||
LEFT JOIN news_category cat ON arc.typeid=cat.id
|
||
WHERE arc.id=$id";
|
||
$rs = $this->db->query($sql);
|
||
$rows = $rs->fetch();
|
||
|
||
if($rows['ts_published']>time())
|
||
{
|
||
$title = "《{$rows['title']}》将在".date('Y-m-d H:i',$rows['ts_published'])."发布";
|
||
}
|
||
else
|
||
{
|
||
$title = "《{$rows['title']}》发布成功!";
|
||
}
|
||
|
||
$this->view->title = $title;
|
||
$this->view->infos = $rows;
|
||
$this->_helper->viewRenderer('newsaddok');
|
||
}
|
||
|
||
$sql="select * from news_category order by displayorder desc";
|
||
$re = $this->db->query($sql);
|
||
$types = $re->fetchAll();
|
||
|
||
$this->view->types=$types;
|
||
|
||
}//newsadd 新闻添加
|
||
|
||
function replacehtml($html)
|
||
{
|
||
$newString = htmlentities($html, ENT_QUOTES, "UTF-8");
|
||
return $newString;
|
||
}
|
||
|
||
function archivesaddAction()
|
||
{
|
||
$this->_helper->layout->disableLayout();
|
||
$this->_helper->viewRenderer->setNoRender();
|
||
|
||
$auth = Zend_Auth::getInstance();
|
||
if($auth->hasIdentity())
|
||
{
|
||
$user = $auth->getIdentity();
|
||
$uid = $user->id;
|
||
}
|
||
|
||
$datavar = array(
|
||
'title','source','image','body','typeid','pub','pubtimer','pubtime','description','keyword'
|
||
);
|
||
foreach($_POST as $k=>$v)
|
||
{
|
||
if(in_array($k,$datavar))
|
||
{
|
||
$$k=$v;
|
||
}
|
||
}
|
||
|
||
$msg=array();
|
||
if(empty($title)) $msg[]="标题不能为空";
|
||
if(strlen($title)>200) $msg[]="标题长度不能超过200个字符";
|
||
if(strlen($keyword)>200) $msg[] = "关键词长度不能超过200个字符,现在输入了".strlen($keyword)."个字符";
|
||
if(strlen($description)>500) $msg[] = "内容描述不能超过200个字符,现在输入了".strlen($description)."个字符";
|
||
if(empty($body)) $msg[]="请填写内容";
|
||
if($typeid==0) $msg[]="请选择栏目";
|
||
|
||
if(count($msg)>0)
|
||
{
|
||
echo '<div class="box box-error">发布失败:</div>
|
||
<div class="box box-error-msg">
|
||
<ol>';
|
||
foreach ($msg as $v)
|
||
{
|
||
echo '<li>'.$v.'</li>';
|
||
}
|
||
echo'</ol>
|
||
</div>
|
||
';
|
||
}
|
||
else
|
||
{
|
||
if(!empty($pubtimer))
|
||
{
|
||
$pubtime = date("Y-m-d H:i:s",strtotime($pubtime));
|
||
}
|
||
else
|
||
{
|
||
$pubtime = date("Y-m-d H:i:s",time());
|
||
}
|
||
|
||
$date=array(
|
||
'title' => $this->db->quote($this->replacehtml($title)),
|
||
'writer' => $uid,
|
||
'keyword' => $this->db->quote($this->replacehtml($keyword)),
|
||
'description'=> $this->db->quote($this->replacehtml($description)),
|
||
'image' => $image,
|
||
'pubtime' => $pubtime,
|
||
'source' => $source,
|
||
'typeid' => $typeid,
|
||
'pub' => $pub,
|
||
'body' => $this->db->quote($body)
|
||
);
|
||
|
||
|
||
|
||
$sql = "INSERT INTO news_archives (title,userid,keywords,description,image,ts_published,source,typeid,is_pub,body)
|
||
VALUES (
|
||
".$date['title'].",
|
||
".$date['writer'].",
|
||
".$date['keyword'].",
|
||
".$date['description'].",
|
||
'{$date['image']}',
|
||
'{$date['pubtime']}',
|
||
'{$date['source']}',
|
||
'{$date['typeid']}',
|
||
'{$date['pub']}',
|
||
".$date['body']."
|
||
)
|
||
RETURNING id
|
||
";
|
||
|
||
try{
|
||
$sth = $this->db->prepare($sql);
|
||
if($sth->execute())
|
||
{
|
||
$temp = $sth->fetch(PDO::FETCH_ASSOC);
|
||
echo '<div class="box box-success">发布成功!</div><script>
|
||
setTimeout("self.location=\'/admin/news/newsadd/id/'.$temp['id'].'\'",500);
|
||
</script>';
|
||
}else{
|
||
echo '<div class="box box-success">发布失败!请重试</div>';
|
||
}
|
||
|
||
}catch(Exception $e){
|
||
echo '<div class="box box-error">文章发布失败:</div>
|
||
<div class="box box-error-msg">
|
||
<ol>
|
||
<li>'.$e->getMessage().'</li>
|
||
</ol>
|
||
</div>';
|
||
}
|
||
}
|
||
}// 文章发布
|
||
|
||
function newseditAction()
|
||
{
|
||
|
||
$id = $this->_request->getParam('id');
|
||
|
||
$sql = "select * from news_archives arc where arc.id=$id
|
||
";
|
||
$rs = $this->db->query($sql);
|
||
$row = $rs->fetch();
|
||
|
||
$this->view->ev = $row;
|
||
|
||
$sql="select * from news_category order by displayorder desc";
|
||
$re = $this->db->query($sql);
|
||
$types = $re->fetchAll();
|
||
|
||
$this->view->types=$types;
|
||
}
|
||
|
||
function archiveseditAction()
|
||
{
|
||
$this->_helper->layout->disableLayout();
|
||
$this->_helper->viewRenderer->setNoRender();
|
||
|
||
$id = $this->_request->getParam('id');
|
||
|
||
if(empty($id))
|
||
{
|
||
echo '<div class="box box-error">发布失败:</div>
|
||
<div class="box box-error-msg">
|
||
<ol>';
|
||
echo '<li>参数错误</li>'.
|
||
'</ol>
|
||
</div>
|
||
';
|
||
}
|
||
|
||
$auth = Zend_Auth::getInstance();
|
||
if($auth->hasIdentity())
|
||
{
|
||
$user = $auth->getIdentity();
|
||
$uid = $user->id;
|
||
}
|
||
|
||
$datavar = array(
|
||
'title','source','image','body','typeid','pub','pubtimer','pubtime','description','keyword'
|
||
);
|
||
|
||
|
||
foreach($_POST as $k=>$v)
|
||
{
|
||
if(in_array($k,$datavar))
|
||
{
|
||
$$k=$v;
|
||
}
|
||
}
|
||
|
||
$msg=array();
|
||
if(empty($title)) $msg[]="标题不能为空";
|
||
if(strlen($title)>200) $msg[]="标题长度不能超过200个字符";
|
||
if(strlen($keyword)>200) $msg[] = "关键词长度不能超过200个字符,现在输入了".strlen($keyword)."个字符";
|
||
if(strlen($description)>500) $msg[] = "内容描述不能超过500个字符,现在输入了".strlen($description)."个字符";
|
||
if(empty($body)) $msg[]="请填写内容";
|
||
if($typeid==0) $msg[]="请选择栏目";
|
||
|
||
if(count($msg)>0)
|
||
{
|
||
echo '<div class="box box-error">发布失败:</div>
|
||
<div class="box box-error-msg">
|
||
<ol>';
|
||
foreach ($msg as $v)
|
||
{
|
||
echo '<li>'.$v.'</li>';
|
||
}
|
||
echo'</ol>
|
||
</div>
|
||
';
|
||
}
|
||
else
|
||
{
|
||
$pubtime = date("Y-m-d H:i:s",strtotime($pubtime));
|
||
$date=array(
|
||
'title' => $this->replacehtml($title),
|
||
'writer' => $uid,
|
||
'keyword' => $this->replacehtml($keyword),
|
||
'description'=> $this->replacehtml($description),
|
||
'image' => $image,
|
||
'pubtime' => $pubtime,
|
||
'source' => $this->replacehtml($source),
|
||
'typeid' => $typeid,
|
||
'pub' => $pub,
|
||
'body' => $this->db->quote($body)
|
||
);
|
||
|
||
|
||
|
||
$sql = "UPDATE news_archives SET
|
||
title='{$date['title']}',
|
||
userid='{$date['writer']}',
|
||
keywords='{$date['keyword']}',
|
||
description='{$date['description']}',
|
||
image='{$date['image']}',
|
||
ts_published='{$date['pubtime']}',
|
||
source='{$date['source']}',
|
||
typeid='{$date['typeid']}',
|
||
is_pub='{$date['pub']}',
|
||
body=".$date['body']."
|
||
WHERE id='$id'
|
||
";
|
||
|
||
try{
|
||
$sth = $this->db->prepare($sql);
|
||
if($sth->execute())
|
||
{
|
||
echo '<div class="box box-success">发布成功!</div><script>
|
||
setTimeout("self.location=\'/admin/news/newsadd/id/'.$id.'\'",500);
|
||
</script>';
|
||
|
||
}else{
|
||
echo '<div class="box box-success">发布失败!写入附加表出错,请联系管理员</div>';
|
||
}
|
||
|
||
}catch(Exception $e){
|
||
echo '<div class="box box-error">文章发布失败:</div>
|
||
<div class="box box-error-msg">
|
||
<ol>
|
||
<li>'.$e->getMessage().'</li>
|
||
</ol>
|
||
</div>';
|
||
}
|
||
}
|
||
}// 文章编辑
|
||
|
||
function deleteAction(){
|
||
|
||
$id = $this->_request->getParam('id');
|
||
|
||
$sql = "DELETE FROM news_archives WHERE id='$id'";
|
||
|
||
$this->db->exec($sql);
|
||
|
||
$this->messenger->addMessage('提示信息:文章删除成功!');
|
||
$this->_redirect('/admin/news/newslist');
|
||
|
||
}//文章删除
|
||
|
||
}
|
||
|