修复版本管理中的错误

This commit is contained in:
wlx 2012-06-26 07:42:30 +00:00
parent 515fe6f505
commit 8ccac05878
1 changed files with 16 additions and 15 deletions

View File

@ -250,8 +250,8 @@ 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)) 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 md.title,d.id as doid,d.uuid,d.authorpermitted,d.status $sql = "select md.title,d.id as doid,d.uuid,d.authorpermitted,d.status
,offa.id as offa_id,offa.username as offa_name,offa.unit as offa_unit,offa.email as offa_email,offa.project as offa_project ,offa.id as offa_id,offa.username as offa_name,offa.unit as offa_unit,offa.email as offa_email,offa.project as offa_project,date(offa.ts_created) as offa_tscreated
,ona.id as ona_id,ona.username as ona_name,ona.unit as ona_unit,ona.email as ona_email,ona.project as ona_project ,ona.id as ona_id,ona.username as ona_name,ona.unit as ona_unit,ona.email as ona_email,ona.project as ona_project,date(ona.ts_created) as ona_tscreated
from dataorder d from dataorder d
left join metadata md on md.uuid=d.uuid left join metadata md on md.uuid=d.uuid
left join mdauthor a on a.uuid=d.uuid left join mdauthor a on a.uuid=d.uuid
@ -383,9 +383,10 @@ class AuthorController extends Zend_Controller_Action
//列表 //列表
if(empty($ac) || $ac=='list' || $ac=='search'){ if(empty($ac) || $ac=='list' || $ac=='search'){
$sql = "SELECT a.*,m.title,m.description,g.id as gid FROM normalmetadata m $sql = "SELECT a.*,m.title,m.description,g.id as gid,mds.status as mdstatus FROM normalmetadata m
LEFT JOIN mdauthor a ON m.uuid=a.uuid LEFT JOIN mdauthor a ON m.uuid=a.uuid
left join geonetworkmetadata g on m.uuid=g.uuid left join geonetworkmetadata g on m.uuid=g.uuid
left join mdstatus mds on m.uuid=mds.uuid
WHERE a.userid=? AND status>=0"; WHERE a.userid=? AND status>=0";
if ($ac=='search') if ($ac=='search')
{ {
@ -395,7 +396,7 @@ class AuthorController extends Zend_Controller_Action
$where=$search->sql_expr(array("m.title","m.description")); $where=$search->sql_expr(array("m.title","m.description"));
$sql.=' and '.$where; $sql.=' and '.$where;
} }
$sql.="ORDER BY status DESC,a.id DESC"; $sql.="ORDER BY a.status DESC,a.id DESC";
$sth = $this->db->prepare($sql); $sth = $this->db->prepare($sql);
$sth->execute(array($u_id)); $sth->execute(array($u_id));
@ -1784,10 +1785,10 @@ class AuthorController extends Zend_Controller_Action
$iso=new ISO19115(); $iso=new ISO19115();
$iso->saveDB($this->db,$row['xml']); $iso->saveDB($this->db,$row['xml']);
//移除中间版本 //移除中间版本
$sql="delete from mdversion where uuid in (select uuid from mdversion where v.id=?) and char_length(changelog)<3"; $sql="delete from mdversion where uuid in (select uuid from mdversion where id=?) and changelog is null";
$this->db->query($sql,array($id)); $this->db->query($sql,array($id));
//修改评审状态为发布 //修改评审状态为发布
$sql="insert into mdstatus (uuid,status,userid) select uuid,5,? from mdversion where id=?"; $sql="insert into mdstatus (uuid,status,userid) select uuid,6,? from mdversion where id=?";
$this->db->query($sql,array($u_id,$id)); $this->db->query($sql,array($u_id,$id));
//email to admin & author //email to admin & author
@ -1817,7 +1818,7 @@ class AuthorController extends Zend_Controller_Action
return true; return true;
} }
} }
else if ($row['id']==-1 || $row['id']==0 || $row['id']==1) //取消发布的数据,初始状态,已接收 else if ($row['status']==-1 || $row['status']==0 || $row['status']==1) //取消发布的数据,初始状态,已接收
{ {
//同步元数据 //同步元数据
$iso=new ISO19115(); $iso=new ISO19115();
@ -1870,7 +1871,7 @@ class AuthorController extends Zend_Controller_Action
$this->jsonexit($data); $this->jsonexit($data);
return true; return true;
} }
else if ($row['id']==2 || $row['id']==3 || $row['id']==4)//已发送过外审邮件,需由编辑告知变化信息 else if ($row['status']==2 || $row['status']==3 || $row['status']==4)//已发送过外审邮件,需由编辑告知变化信息
{ {
//email to admin //email to admin
$mail=new WestdcMailer($this->view->config->smtp); $mail=new WestdcMailer($this->view->config->smtp);
@ -1946,13 +1947,13 @@ class AuthorController extends Zend_Controller_Action
$this->jsonexit($data); $this->jsonexit($data);
return true; return true;
} }
else if ($row['id']==5)//数据已经发布,再次修改后将只通知管理员,保留发布状态 else if ($row['status']>=5)//数据已经发布,再次修改后将只通知管理员,保留发布状态
{ {
//同步元数据 //同步元数据
$iso=new ISO19115(); $iso=new ISO19115();
$iso->saveDB($this->db,$row['xml']); $iso->saveDB($this->db,$row['xml']);
//移除中间版本 //移除中间版本
$sql="delete from mdversion where uuid in (select uuid from mdversion where v.id=?) and char_length(changelog)<3"; $sql="delete from mdversion where uuid in (select uuid from mdversion where id=?) and changelog is null";
$this->db->query($sql,array($id)); $this->db->query($sql,array($id));
//email to admin & author //email to admin & author
@ -2153,7 +2154,7 @@ class AuthorController extends Zend_Controller_Action
return true; return true;
} }
$sql="select uuid from metadata where id=? and owner=?"; $sql="select uuid,data from metadata where id=? and owner=?";
$sth=$this->wdb->prepare($sql); $sth=$this->wdb->prepare($sql);
$sth->execute(array($id,$u_id)); $sth->execute(array($id,$u_id));
$row=$sth->fetch(); $row=$sth->fetch();
@ -2165,7 +2166,7 @@ class AuthorController extends Zend_Controller_Action
} }
// 保存数据作者信息 // 保存数据作者信息
$sql="insert into mdauthor (uuid,userid,ts_activated,status) values(?,?,now(),1)"; $sql="insert into mdauthor (uuid,userid,ts_activated,status) values(?,?,now(),1)";
$sth=$this->db->query($sql,array($row['uuid'],$u_id)); $this->db->query($sql,array($row['uuid'],$u_id));
// 2. 保存变化记录 save changelog & userid for the latest version // 2. 保存变化记录 save changelog & userid for the latest version
$sql = "UPDATE mdversion SET changelog=?,userid=? WHERE id in (select id from mdversion where uuid=? order by ts_created desc limit 1)"; $sql = "UPDATE mdversion SET changelog=?,userid=? WHERE id in (select id from mdversion where uuid=? order by ts_created desc limit 1)";
@ -2174,9 +2175,9 @@ class AuthorController extends Zend_Controller_Action
// 3. 保存数据评审状态 // 3. 保存数据评审状态
//导入元数据 //导入元数据
$iso=new ISO19115(); $iso=new ISO19115();
$iso->saveDB($this->db,$row['xml']); @$iso->saveDB($this->db,$row['xml']);
//进入评审库 //进入评审库
$sql="insert into mdstatus (uuid,status,userid) select uuid,0,? from mdversion where id=?"; $sql="insert into mdstatus (uuid,status,userid) select uuid,0,? from geonetworkmetadata where id=?";
$this->db->query($sql,array($u_id,$id)); $this->db->query($sql,array($u_id,$id));
//email to admin //email to admin