From a48f10b8a02012a02dff94663592a86817c73e9e Mon Sep 17 00:00:00 2001
From: Li Jianxuan
Date: Mon, 26 Mar 2012 07:53:08 +0000
Subject: [PATCH] =?UTF-8?q?#308=20=E4=BF=AE=E6=94=B9=E4=BA=86=E6=95=B0?=
=?UTF-8?q?=E6=8D=AE=E6=96=B0=E9=97=BB=E9=83=A8=E5=88=86=E7=9A=84=E6=B7=BB?=
=?UTF-8?q?=E5=8A=A0=E5=92=8C=E5=88=97=E8=A1=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../default/controllers/AuthorController.php | 195 ++++++++++++------
.../views/scripts/author/news-add.phtml | 23 ++-
2 files changed, 150 insertions(+), 68 deletions(-)
diff --git a/application/default/controllers/AuthorController.php b/application/default/controllers/AuthorController.php
index 1f4dde7d..f6af2f42 100644
--- a/application/default/controllers/AuthorController.php
+++ b/application/default/controllers/AuthorController.php
@@ -76,16 +76,16 @@ class AuthorController extends Zend_Controller_Action
$sql = "SELECT o.id,o.userid,o.unit,o.username,o.ts_created,o.project,m.title,m.uuid FROM onlineapp as o
LEFT JOIN metadata as m ON o.uuid=m.uuid
LEFT JOIN mdauthor as a ON a.uuid=o.uuid
- WHERE (o.id in (SELECT distinct(onlineappid) from dataorder where status>=0)) AND a.userid = ? AND a.status=1 ";
- if ($ac=="searchonline")
+ WHERE (o.id in (SELECT distinct(onlineappid) from dataorder where status>=0)) AND a.userid = ? AND a.status=1 ";
+ if ($ac=="searchonline")
{
$keywords = $this->_request->getParam('q');
if(!empty($keywords))
$this->view->q = $keywords;
- $search=new Search($keywords);
- $where=$search->sql_expr(array("m.title","m.description"));
- $sql.=' and '.$where;
- }
+ $search=new Search($keywords);
+ $where=$search->sql_expr(array("m.title","m.description"));
+ $sql.=' and '.$where;
+ }
$sql.=" ORDER BY o.id desc";
$sth = $this->db->prepare($sql);
@@ -103,7 +103,7 @@ class AuthorController extends Zend_Controller_Action
if($ac == "offline" || $ac=="searchoffline")
{
$pr = $this->_request->getParam('pr');
- $oid = $this->_request->getParam('oid');
+ $oid = $this->_request->getParam('oid');
$pdf = $this->_request->getParam('pdf');
if(!empty($pr))
@@ -124,7 +124,7 @@ class AuthorController extends Zend_Controller_Action
left join offlineapp o on o.id=d.offlineappid
left join metadata md on md.uuid=d.uuid
left join mdauthor a on a.uuid=d.uuid
- where o.ts_approved is null and o.pdflink is not null
+ where o.ts_approved is null and o.pdflink is not null
and d.uuid=? and a.userid=? and d.id=? AND a.status=1
order by o.ts_created desc";
@@ -136,11 +136,11 @@ class AuthorController extends Zend_Controller_Action
{
echo "该申请已经通过并且发放数据";
exit();
- }
- else if (empty($row) || $row['datastatus']!=4)
- {
- echo "该数据申请存在问题,请联系数据中心!";
- exit();
+ }
+ else if (empty($row) || $row['datastatus']!=4)
+ {
+ echo "该数据申请存在问题,请联系数据中心!";
+ exit();
}
//同意用户下载
@@ -179,12 +179,12 @@ class AuthorController extends Zend_Controller_Action
echo "处理中遇到错误,请刷新页面后重试";
exit();
}
- }
- else if (!empty($pdf))
- {
- $sql="select o.pdflink from dataorder d left join offlineapp o on d.offlineappid=o.id
- left join mdauthor m on d.uuid=m.uuid
- where d.id=? and m.userid=?";
+ }
+ else if (!empty($pdf))
+ {
+ $sql="select o.pdflink from dataorder d left join offlineapp o on d.offlineappid=o.id
+ left join mdauthor m on d.uuid=m.uuid
+ where d.id=? and m.userid=?";
$sth = $this->db->prepare($sql);
$sth->execute(array($pdf,$u_id));
$row = $sth->fetch();
@@ -202,15 +202,15 @@ class AuthorController extends Zend_Controller_Action
left join dataorder d on o.id=d.offlineappid
left join metadata md on md.uuid=d.uuid
left join mdauthor a on a.uuid=d.uuid
- where o.ts_approved is null and o.pdflink is not null and d.status=4 and a.userid=? AND a.status=1 ";
- if($ac == "searchoffline")
- {
+ where o.ts_approved is null and o.pdflink is not null and d.status=4 and a.userid=? AND a.status=1 ";
+ if($ac == "searchoffline")
+ {
$keywords = $this->_request->getParam('q');
if(!empty($keywords))
- $this->view->q = $keywords;
- $search=new Search($keywords);
- $where=$search->sql_expr(array("md.title","md.description"));
- $select.=' and '.$where;
+ $this->view->q = $keywords;
+ $search=new Search($keywords);
+ $where=$search->sql_expr(array("md.title","md.description"));
+ $select.=' and '.$where;
}
$select.=" order by o.ts_created desc";
@@ -262,7 +262,7 @@ class AuthorController extends Zend_Controller_Action
$sth = $this->db->prepare($sql);
$sth->execute(array($uuid,$u_id));
- $rows = $sth->fetchAll();
+ $rows = $sth->fetchAll();
@$this->view->mdtitle=$rows[0]['title'];
foreach ($rows as $k=>$v)
@@ -295,9 +295,9 @@ class AuthorController extends Zend_Controller_Action
$keywords = $this->_request->getParam('q');
if(!empty($keywords))
$this->view->q = $keywords;
- $search=new Search($keywords);
- $where=$search->sql_expr(array("md.title","md.description"));
- $sql.=' and '.$where;
+ $search=new Search($keywords);
+ $where=$search->sql_expr(array("md.title","md.description"));
+ $sql.=' and '.$where;
}
$sql.=" GROUP BY md.title,d.uuid";
@@ -1087,14 +1087,14 @@ class AuthorController extends Zend_Controller_Action
if(preg_match("/^[0-9A-Za-z]{8}-[0-9A-Za-z]{4}-[0-9A-Za-z]{4}-[0-9A-Za-z]{4}-[0-9A-Za-z]{12}$/",$uuid))
{
$sql = "SELECT c.author,c.email,c.url,c.ts_created,c.content,m.title FROM comments c
- LEFT JOIN mdauthor a ON a.uuid=c.uuid
+ LEFT JOIN mdauthor a ON a.uuid=c.uuid
left join metadata m on m.uuid=c.uuid
WHERE c.uuid=? AND a.userid=?
ORDER BY ts_created DESC";
$sth = $this->db->prepare($sql);
$sth->execute(array($uuid,$u_id));
- $rows = $sth->fetchAll();
+ $rows = $sth->fetchAll();
@$this->view->mdtitle=$rows[0]['title'];
$paginator = Zend_Paginator::factory($rows);
@@ -1154,7 +1154,11 @@ class AuthorController extends Zend_Controller_Action
if(empty($ac) || $ac=="list")
{
$keyword = $this->_request->getParam('q');
+ $uuid = $this->_request->getParam('uuid');
+
$wheresql = "";
+ $join = "";
+
if(!empty($keyword))
{
$this->view->q = $keyword;
@@ -1164,18 +1168,24 @@ class AuthorController extends Zend_Controller_Action
if(!empty($wheresql))
{
- $wheresql = " WHERE ".$wheresql;
+ $wheresql = " AND ".$wheresql;
+ }
+
+ if(!empty($uuid) && preg_match("/^[0-9A-Za-z]{8}-[0-9A-Za-z]{4}-[0-9A-Za-z]{4}-[0-9A-Za-z]{4}-[0-9A-Za-z]{12}$/",$uuid))
+ {
+ $join = "LEFT JOIN news_mdnews mdnews ON mdnews.aid=arc.id";
+ $wheresql .= " AND mdnews.uuid='$uuid'";
}
$sql = "SELECT arc.id,arc.title,arc.ts_publish,arc.description,u.realname FROM news_archives arc
LEFT JOIN users u ON arc.userid=u.id
- $wheresql
+ $join
+ WHERE arc.is_pub>0 AND arc.ts_publish<'now()' $wheresql
ORDER BY arc.ts_publish";
-
+
$sth = $this->db->prepare($sql);
$sth->execute();
-
$rows = $sth->fetchAll();
$paginator = Zend_Paginator::factory($rows);
@@ -1217,6 +1227,16 @@ class AuthorController extends Zend_Controller_Action
if($ac == "add")
{
$this->_helper->viewRenderer('news-add');
+
+ $sql = "SELECT md.title,md.uuid FROM metadata md
+ LEFT JOIN mdauthor a ON a.uuid = md.uuid
+ WHERE a.userid=?
+ ";
+ $sth = $this->db->prepare($sql);
+ $sth->execute(array($u_id));
+ $rows = $sth->fetchAll();
+
+ $this->view->md = $rows;
}// $ac == add
//新闻编辑
@@ -1231,14 +1251,16 @@ class AuthorController extends Zend_Controller_Action
$this->_redirect('/error/error');
}
- $sql = "SELECT * FROM news_archives WHERE id=?";
+ $sql = "SELECT arc.*,mdarc.uuid FROM news_archives arc
+ LEFT JOIN news_mdnews mdarc ON mdarc.aid = arc.id
+ WHERE id=?";
$sth = $this->db->prepare($sql);
$sth->execute(array($aid));
$row = $sth->fetch();
$this->view->info = $row;
- }
+ }//$ac == "edit"
//新闻发布的ajax动作
if($ac =="addnews")
@@ -1253,6 +1275,7 @@ class AuthorController extends Zend_Controller_Action
$data['title'] = trim($this->_request->getParam('title'));
$data['keyword'] = trim($this->_request->getParam('keyword'));
$data['body'] = trim($this->_request->getParam('body'));
+ $uuid = trim($this->_request->getParam('uuid'));
//对参数进行预处理
foreach($data as $k=>$v)
@@ -1283,6 +1306,14 @@ class AuthorController extends Zend_Controller_Action
return true;
}
+ if(empty($uuid))
+ {
+ $msg['status'] = 0;
+ $msg['error'] = '请选择对应数据';
+ $this->getResponse()->setHeader('Content-Type', 'application/json')->appendBody(Zend_Json::encode($msg));
+ return true;
+ }
+
if(mb_strlen($data['keyword'],"utf-8")<4)
{
$msg['status'] = 0;
@@ -1307,6 +1338,14 @@ class AuthorController extends Zend_Controller_Action
return true;
}
+ if(!preg_match("/^[0-9A-Za-z]{8}-[0-9A-Za-z]{4}-[0-9A-Za-z]{4}-[0-9A-Za-z]{4}-[0-9A-Za-z]{12}$/",$uuid))
+ {
+ $msg['status'] = 0;
+ $msg['error'] = '参数错误,请重试';
+ $this->getResponse()->setHeader('Content-Type', 'application/json')->appendBody(Zend_Json::encode($msg));
+ return true;
+ }
+
//获得描述
//删除段落及html标记
$data['description'] = mb_substr(preg_replace(array("/<(.*)>|<(.*) \/>/i","/\s/i"),array(""," "),$data['body']),0,450,"UTF-8");
@@ -1317,43 +1356,73 @@ class AuthorController extends Zend_Controller_Action
$data['userid'] = $u_id;
$data['keyword'] = str_replace(",",",",$data['keyword']);
+ //新闻添加
if(empty($aid))
{
$sql = "INSERT INTO news_archives
(userid,title,keywords,description,image,source,ts_publish,is_pub,body)
VALUES
(?,?,?,?,?,?,?,?,?)
+ RETURNING id
";
$sth = $this->db->prepare($sql);
$ex = $sth -> execute(array($data['userid'],$data['title'],$data['keyword'],$data['description'],'',$data['source'],'now()',1,$data['body']));
- }
+
+ //添加成功
+ if($ex)
+ {
+ //写入文章ID对应UUID的表
+ $archive = $sth->fetch(PDO::FETCH_ASSOC);
+ $aid = $archive['id'];
+
+ $sql = "INSERT INTO news_mdnews (aid,uuid) VALUES (?,?)";
+ $sth = $this->db->prepare($sql);
+ $uuidex = $sth->execute(array($aid,$uuid));
+
+ if($uuidex)
+ {
+ $msg['status'] = 1;
+ $msg['outstring'] = "新闻添加成功";
+ $this->getResponse()->setHeader('Content-Type', 'application/json')->appendBody(Zend_Json::encode($msg));
+ return true;
+ }else{
+ $sql = "DELETE FROM news_archives WHERE id=$aid";
+ @$this->db->exec($sql); //如果新闻添加失败就删除原新闻,否则产生重复错误
+ $msg['status'] = 0;
+ $msg['error'] = "新闻添加失败,请重试";
+ $this->getResponse()->setHeader('Content-Type', 'application/json')->appendBody(Zend_Json::encode($msg));
+ return true;
+ }
+ //添加失败
+ }else{
+ $msg['status'] = 0;
+ $msg['error'] = "新闻添加失败,请重试";
+ $this->getResponse()->setHeader('Content-Type', 'application/json')->appendBody(Zend_Json::encode($msg));
+ return true;
+ }
+ }//新闻添加 end -->
+
+ //新闻修改
else
{
$sql = "UPDATE news_archives SET title=?,keywords=?,description=?,body=? WHERE id=? AND userid=?";
$sth = $this->db->prepare($sql);
$ex = $sth -> execute(array($data['title'],$data['keyword'],$data['description'],$data['body'],$aid,$data['userid']));
- }
+
+ if($ex)
+ {
+ $msg['status'] = 1;
+ $msg['outstring'] = "新闻编辑成功";
+ $this->getResponse()->setHeader('Content-Type', 'application/json')->appendBody(Zend_Json::encode($msg));
+ return true;
+ }else{
+ $msg['status'] = 0;
+ $msg['outstring'] = "新闻编辑失败,请重试";
+ $this->getResponse()->setHeader('Content-Type', 'application/json')->appendBody(Zend_Json::encode($msg));
+ return true;
+ }
+ }//新闻修改 end -->
-
-
- if($ex)
- {
- $msg['status'] = 1;
- if(empty($aid))
- {$msg['outstring'] = "新闻添加成功";}
- else
- {$msg['outstring'] = "新闻编辑成功";}
- $this->getResponse()->setHeader('Content-Type', 'application/json')->appendBody(Zend_Json::encode($msg));
- return true;
- }else{
- $msg['status'] = 0;
- if(empty($aid))
- {$msg['error'] = "新闻添加失败,请重试";}
- else
- {$msg['outstring'] = "新闻编辑失败,请重试";}
- $this->getResponse()->setHeader('Content-Type', 'application/json')->appendBody(Zend_Json::encode($msg));
- return true;
- }
}catch(Exception $e){
if($this->debug==0)
{
@@ -1370,10 +1439,8 @@ class AuthorController extends Zend_Controller_Action
$this->getResponse()->setHeader('Content-Type', 'application/json')->appendBody(Zend_Json::encode($msg));
return true;
}
- }
-
-
- }
+ }//catch end
+ }//$ac = 'newsadd' endif;
}//newsAction() 数据新闻
diff --git a/application/default/views/scripts/author/news-add.phtml b/application/default/views/scripts/author/news-add.phtml
index 2d0b4c02..bae71c47 100644
--- a/application/default/views/scripts/author/news-add.phtml
+++ b/application/default/views/scripts/author/news-add.phtml
@@ -36,12 +36,28 @@ $this->breadcrumb()->setSeparator(' > ');
-
-
+
+
请准确概况新闻内容
-
+
+
+ 从数据中选择一条
+
+
+
使用半角逗号“,”隔开,如 (冻土,冰川)
@@ -49,7 +65,6 @@ $this->breadcrumb()->setSeparator(' > ');
-
or