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