diff --git a/config.php b/config.php
index 051316f..4a41cb8 100644
--- a/config.php
+++ b/config.php
@@ -7,6 +7,7 @@
//当前运行用户的id号
public $userid=3144;
public $versionTable='en.mdversion';
+ public $statusTable='en.mdstatus';
public $changelog='update the translation';
public $db=array('host'=>'localhost','user'=>'gis','password'=>'gispassword','dbname'=>'metadata');
}
\ No newline at end of file
diff --git a/update.php b/update.php
deleted file mode 100644
index e537b7b..0000000
--- a/update.php
+++ /dev/null
@@ -1,128 +0,0 @@
-db=$config->db;
- $this->versionTable=$config->versionTable;
- $this->changelog=$config->changelog;
- $this->db = pg_connect("dbname=metadata user=gis password=gispassword host=210.77.68.241");
- $this->err=array();
- $this->userid=$config->userid;
- }
-
- function __destruct()
- {
- pg_close($link);
- }
-
- //版本更新:指定versionid
- function update($uuid,$versionid,$changelog)
- {
- // 1. 保存变化记录 save changelog & userid
- $sql = "UPDATE {$this->versionTable} SET changelog='$changelog',userid=$this->userid WHERE id=$versionid and uuid='$uuid'";
- pg_query($this->db,$sql);
-
- // 2. 同步元数据
- $sql = "select xml from {$this->versionTable} where id=$versionid and uuid='$uuid'";
- $result=pg_query($this->db,$sql);
- $row = pg_fetch_row($result);
- $iso=new ISO19115();
- @$iso->loadXML($row[0]);
- if ($iso->validate())
- {
- $this->err[]="元数据: ".$uuid." 导入过程中发现错误。
".implode("
",$iso->error);
- }
- @$iso->saveDB($this->db);
-
- // 3. 移除中间版本
- $sql="delete from {$this->versionTable} where uuid='$uuid' and changelog is null";
- pg_query($this->db,$sql);
- pg_free_result($result);
- }
-
- //版本更新:以最新的一个版本进行更新
- function update($uuid,$changelog)
- {
- // 1. 保存变化记录 save changelog & userid
- $sql = "UPDATE {$this->versionTable} SET changelog='$changelog',userid=$this->userid WHERE id in (select id from {$this->versionTable} where uuid='$uuid' order by ts_created desc limit 1)";
- pg_query($this->db,$sql);
-
- // 2. 同步元数据
- $sql = "select xml from {$this->versionTable} where uuid='$uuid' order by ts_created desc limit 1";
- $result=pg_query($this->db,$sql);
- $row = pg_fetch_row($result);
- $iso=new ISO19115();
- @$iso->loadXML($row[0]);
- if ($iso->validate())
- {
- $this->err[]="元数据: ".$uuid." 导入过程中发现错误。
".implode("
",$iso->error);
- }
- @$iso->saveDB($this->db);
-
- // 3. 移除中间版本
- $sql="delete from {$this->versionTable} where uuid='$uuid' and changelog is null";
- pg_query($this->db,$sql);
- pg_free_result($result);
- }
-
- //专题更新:将指定专题的数据,全部按照最新版本进行更新
- function update_by_source($sourceid,$changelog)
- {
- // 1. 保存变化记录 save changelog & userid
- $sql = "UPDATE {$this->versionTable} SET changelog='$changelog',userid=$this->userid WHERE id in (
- select distinct on (uuid) id from {$this->versionTable} where uuid in (select uuid from datasource where sourceid=$sourceid) order by uuid,ts_created desc
- )";
- pg_query($this->db,$sql);
-
- // 2. 同步元数据
- $sql = "select xml from {$this->versionTable} WHERE id in (
- select distinct on (uuid) id from {$this->versionTable} where uuid in (select uuid from datasource where sourceid=$sourceid) order by uuid,ts_created desc
- )";
- $result=pg_query($this->db,$sql);
- while ($row = pg_fetch_row($result))
- {
- $iso=new ISO19115();
- @$iso->loadXML($row[0]);
- if ($iso->validate())
- {
- $this->err[]="元数据: ".$uuid." 导入过程中发现错误。
".implode("
",$iso->error);
- }
- @$iso->saveDB($this->db);
- }
- // 3. 移除中间版本
- $sql="delete from {$this->versionTable} where uuid in (select distinct uuid from datasource where sourceid=$sourceid) and changelog is null";
- pg_query($this->db,$sql);
- pg_free_result($result);
- }
-
- //版本删除
- function delete($uuid,$versionid)
- {
- $sql = "DELETE FROM {$this->versionTable} WHERE uuid='$uuid' and id=$versionid";
- return pg_query($this->db, $sql);
- }
-
- //todo: 版本直接发布(仅发布之前为评审状态的数据)
- function release($uuid,$versionid)
- {
- //todo
- $sql = "SELECT s.*,v.xml,m.title FROM en.mdstatus s left join en.mdversion v on s.uuid=v.uuid
- left join en.metadata m on s.uuid=m.uuid WHERE v.id=?";
- return pg_query($this->db,$sql);
- }
- function release($uuid)
- {
- //todo
- }
- function release_by_source($sourceid)
- {
- //todo
- }
- }
\ No newline at end of file
diff --git a/version.php b/version.php
index 28ee2b0..c0ecc44 100644
--- a/version.php
+++ b/version.php
@@ -12,6 +12,7 @@
{
//$this->db=$config->db;
$this->versionTable=$config->versionTable;
+ $this->statusTable=$config->statusTable;
$this->changelog=$config->changelog;
$this->db = pg_connect(http_build_query($config->db,'',' '));
$this->err=array();
@@ -81,7 +82,8 @@
if (!$changelog) $changelog=$this->changelog;
// 1. 保存变化记录 save changelog & userid
$sql = "UPDATE {$this->versionTable} SET changelog='$changelog',userid=$this->userid WHERE id in (
- select distinct on (uuid) id from {$this->versionTable} where uuid in (select uuid from datasource where sourceid=$sourceid) order by uuid,ts_created desc
+ select distinct on (uuid) id from {$this->versionTable} where uuid in (select uuid from datasource where sourceid=$sourceid)
+ and uuid in (select distinct uuid from {$this->statusTable}) order by uuid,ts_created desc
)";
pg_query($this->db,$sql);