From 1d71ee178c578037b36f82038d37eed20b31203e Mon Sep 17 00:00:00 2001
From: wlx
Date: Tue, 27 May 2014 05:42:02 +0000
Subject: [PATCH] merge sanjiangyuan branch r4410 - r4534 to sanjiangyuan-sub
---
.../admin/controllers/DataController.php | 23 +-
.../admin/controllers/SysController.php | 151 +-
.../admin/controllers/UserController.php | 38 +-
.../admin/views/scripts/data/left.phtml | 4 +
application/admin/views/scripts/data/md.phtml | 3 +-
.../admin/views/scripts/data/visual-add.phtml | 51 +
.../admin/views/scripts/data/visual.phtml | 20 +
.../admin/views/scripts/user/adminlist.phtml | 79 +-
application/config.ini | 319 +-
.../default/controllers/DataController.php | 4589 +++++++++--------
.../default/controllers/VisualController.php | 80 +
.../default/views/scripts/data/index.phtml | 69 +-
.../default/views/scripts/index/index.phtml | 12 +-
.../default/views/scripts/visual/data.phtml | 174 +
.../default/views/scripts/visual/index.phtml | 140 +
application/layouts/layout.phtml | 26 +-
application/models/ISO19115.php | 27 +-
application/models/Search.php | 2 +-
application/models/Theme.php | 382 +-
application/module/Helpers/PDO.php | 45 +
.../Westdc/Visual/Event/RecordEvent.php | 13 +
application/module/Westdc/Visual/Factory.php | 35 +
.../Westdc/Visual/Handle/VisualHandle.php | 43 +
.../Westdc/Visual/Listener/RecordListener.php | 35 +
.../Westdc/Visual/Listener/VisualListener.php | 27 +
.../module/Westdc/Visual/Reader/Sc.php | 71 +
.../module/Westdc/Visual/Reader/Sc2009.php | 71 +
.../Westdc/Visual/Reader/SoilMoisture.php | 81 +
application/module/Westdc/Visual/Record.php | 48 +
.../module/Westdc/Visual/RecordInterface.php | 8 +
application/module/Westdc/Visual/Visual.php | 86 +
.../adapters/standalone-framework.js | 18 +
htdocs/js/lib/highstock/highcharts-3d.js | 41 +
htdocs/js/lib/highstock/highcharts-more.js | 51 +
htdocs/js/lib/highstock/highstock.js | 383 ++
.../js/lib/highstock/modules/canvas-tools.js | 133 +
htdocs/js/lib/highstock/modules/data.js | 16 +
htdocs/js/lib/highstock/modules/drilldown.js | 14 +
htdocs/js/lib/highstock/modules/exporting.js | 22 +
htdocs/js/lib/highstock/modules/funnel.js | 13 +
htdocs/js/lib/highstock/modules/heatmap.js | 21 +
.../highstock/modules/no-data-to-display.js | 12 +
.../js/lib/highstock/modules/solid-gauge.js | 13 +
htdocs/js/lib/highstock/themes/dark-blue.js | 254 +
htdocs/js/lib/highstock/themes/dark-green.js | 255 +
htdocs/js/lib/highstock/themes/dark-unica.js | 213 +
htdocs/js/lib/highstock/themes/gray.js | 257 +
htdocs/js/lib/highstock/themes/grid-light.js | 74 +
htdocs/js/lib/highstock/themes/grid.js | 103 +
.../js/lib/highstock/themes/sand-signika.js | 101 +
htdocs/js/lib/highstock/themes/skies.js | 89 +
51 files changed, 6011 insertions(+), 2824 deletions(-)
create mode 100644 application/admin/views/scripts/data/visual-add.phtml
create mode 100644 application/admin/views/scripts/data/visual.phtml
create mode 100644 application/default/controllers/VisualController.php
create mode 100644 application/default/views/scripts/visual/data.phtml
create mode 100644 application/default/views/scripts/visual/index.phtml
create mode 100644 application/module/Helpers/PDO.php
create mode 100644 application/module/Westdc/Visual/Event/RecordEvent.php
create mode 100644 application/module/Westdc/Visual/Factory.php
create mode 100644 application/module/Westdc/Visual/Handle/VisualHandle.php
create mode 100644 application/module/Westdc/Visual/Listener/RecordListener.php
create mode 100644 application/module/Westdc/Visual/Listener/VisualListener.php
create mode 100644 application/module/Westdc/Visual/Reader/Sc.php
create mode 100644 application/module/Westdc/Visual/Reader/Sc2009.php
create mode 100644 application/module/Westdc/Visual/Reader/SoilMoisture.php
create mode 100644 application/module/Westdc/Visual/Record.php
create mode 100644 application/module/Westdc/Visual/RecordInterface.php
create mode 100644 application/module/Westdc/Visual/Visual.php
create mode 100644 htdocs/js/lib/highstock/adapters/standalone-framework.js
create mode 100644 htdocs/js/lib/highstock/highcharts-3d.js
create mode 100644 htdocs/js/lib/highstock/highcharts-more.js
create mode 100644 htdocs/js/lib/highstock/highstock.js
create mode 100644 htdocs/js/lib/highstock/modules/canvas-tools.js
create mode 100644 htdocs/js/lib/highstock/modules/data.js
create mode 100644 htdocs/js/lib/highstock/modules/drilldown.js
create mode 100644 htdocs/js/lib/highstock/modules/exporting.js
create mode 100644 htdocs/js/lib/highstock/modules/funnel.js
create mode 100644 htdocs/js/lib/highstock/modules/heatmap.js
create mode 100644 htdocs/js/lib/highstock/modules/no-data-to-display.js
create mode 100644 htdocs/js/lib/highstock/modules/solid-gauge.js
create mode 100644 htdocs/js/lib/highstock/themes/dark-blue.js
create mode 100644 htdocs/js/lib/highstock/themes/dark-green.js
create mode 100644 htdocs/js/lib/highstock/themes/dark-unica.js
create mode 100644 htdocs/js/lib/highstock/themes/gray.js
create mode 100644 htdocs/js/lib/highstock/themes/grid-light.js
create mode 100644 htdocs/js/lib/highstock/themes/grid.js
create mode 100644 htdocs/js/lib/highstock/themes/sand-signika.js
create mode 100644 htdocs/js/lib/highstock/themes/skies.js
diff --git a/application/admin/controllers/DataController.php b/application/admin/controllers/DataController.php
index ed125cf4..b5fa7fab 100755
--- a/application/admin/controllers/DataController.php
+++ b/application/admin/controllers/DataController.php
@@ -2209,6 +2209,7 @@ class Admin_DataController extends Zend_Controller_Action
$ac = $this->_request->getParam('ac');
$uuid = $this->_request->getParam('uuid');
+ set_time_limit(0);
$auth = Zend_Auth::getInstance();
if($auth->hasIdentity())
@@ -2566,7 +2567,7 @@ class Admin_DataController extends Zend_Controller_Action
unset($mailtp);
//email to author
$mail=new WestdcMailer($this->view->config->smtp);
- $mail->setFrom($this->view->config->service->email,'西部数据中心服务组');
+ $mail->setFrom($this->view->config->service->email,'数据服务组');
$mailtp=new EmailText($this->db,"version-commit-author",array(
'user' => $user->username,
'uuid' => $row['uuid'],
@@ -2620,7 +2621,7 @@ class Admin_DataController extends Zend_Controller_Action
unset($mailtp);
//email to author
$mail=new WestdcMailer($this->view->config->smtp);
- $mail->setFrom($this->view->config->service->email,'西部数据中心服务组');
+ $mail->setFrom($this->view->config->service->email,'数据服务组');
$mailtp=new EmailText($this->db,"version-commit-author",array(
'user' => $user->username,
'uuid' => $row['uuid'],
@@ -2686,7 +2687,7 @@ class Admin_DataController extends Zend_Controller_Action
//email to admin & author
$mail=new WestdcMailer($this->view->config->smtp);
- $mail->setFrom($this->view->config->service->email,'西部数据中心服务组');
+ $mail->setFrom($this->view->config->service->email,'数据服务组');
$mailtp=new EmailText($this->db,"metadata-release",array(
'user' => $user->username,
'uuid' => $row['uuid'],
@@ -3837,6 +3838,22 @@ class Admin_DataController extends Zend_Controller_Action
}//fund
+ public function visualAction()
+ {
+ $uuid = $this->_getParam('uuid');
+ $submit = $this->_getParam('submit');
+
+ if(!empty($uuid))
+ {
+ $this->_helper->viewRenderer('visual-add');
+ $this->view->data = ['uuid' => $uuid];
+ if(empty($submit))
+ return true;
+
+
+ }
+ }
+
public function doiAction()
{
$ac = $this->_getParam('ac');
diff --git a/application/admin/controllers/SysController.php b/application/admin/controllers/SysController.php
index b1faf9bc..f3ae2804 100644
--- a/application/admin/controllers/SysController.php
+++ b/application/admin/controllers/SysController.php
@@ -1,4 +1,6 @@
db->query($sql);
+ view::Post($this,'模板已删除',-1);
+ return;
+
+ }
+
else if($ac=='test'&& !empty($id))
{
if(!empty($submit))
@@ -424,10 +435,10 @@ class Admin_SysController extends Zend_Controller_Action
if ($ac=='' || $ac=='online')
{
$sql = "SELECT m.title,m.uuid,ds.host,ds.path,
- floor(t.filesize/1024/1024*100)/100 as filesize,
- t.filecount from metadata m
+ floor(t.filesize/1024/1024*100)/100 as filesize,
+ t.filecount from metadata m
LEFT JOIN mdstatus s ON m.uuid=s.uuid
- LEFT JOIN dataset ds ON m.uuid=ds.uuid
+ LEFT JOIN dataset ds ON m.uuid=ds.uuid
left join (select dsid,count(id) as filecount,sum(filesize) as filesize from datafile group by dsid) as t on ds.id=t.dsid
where s.status>4 and m.datatype=0 and ds.host='ftp1.westgis.ac.cn'
ORDER BY m.id DESC";
@@ -440,15 +451,15 @@ class Admin_SysController extends Zend_Controller_Action
$paginator->setItemCountPerPage($pages);
$paginator->setView($this->view);
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination.phtml');
- $this->view->paginator=$paginator;
+ $this->view->paginator=$paginator;
$ac='online';
} else if ($ac=='heihe')
{
$sql = "SELECT m.title,m.uuid,ds.host,ds.path,
- floor(t.filesize/1024/1024*100)/100 as filesize,
- t.filecount from metadata m
+ floor(t.filesize/1024/1024*100)/100 as filesize,
+ t.filecount from metadata m
LEFT JOIN mdstatus s ON m.uuid=s.uuid
- LEFT JOIN dataset ds ON m.uuid=ds.uuid
+ LEFT JOIN dataset ds ON m.uuid=ds.uuid
left join (select dsid,count(id) as filecount,sum(filesize) as filesize from datafile group by dsid) as t on ds.id=t.dsid
left join datasource on datasource.uuid=m.uuid
left join source on datasource.sourceid=source.id
@@ -466,15 +477,15 @@ class Admin_SysController extends Zend_Controller_Action
$this->view->paginator=$paginator;
} else if ($ac=='water')
{
- $sql = "SELECT m.title,m.uuid,ds.host,ds.path,
- floor(t.filesize/1024/1024*100)/100 as filesize,
- t.filecount from metadata m
- LEFT JOIN mdstatus s ON m.uuid=s.uuid
- LEFT JOIN dataset ds ON m.uuid=ds.uuid
- left join (select dsid,count(id) as filecount,sum(filesize) as filesize from datafile group by dsid) as t on ds.id=t.dsid
- left join datasource on datasource.uuid=m.uuid
- left join source on datasource.sourceid=source.id
- where s.status>4 and m.datatype=1 and ds.host='ftp1.westgis.ac.cn' and source.code='water'
+ $sql = "SELECT m.title,m.uuid,ds.host,ds.path,
+ floor(t.filesize/1024/1024*100)/100 as filesize,
+ t.filecount from metadata m
+ LEFT JOIN mdstatus s ON m.uuid=s.uuid
+ LEFT JOIN dataset ds ON m.uuid=ds.uuid
+ left join (select dsid,count(id) as filecount,sum(filesize) as filesize from datafile group by dsid) as t on ds.id=t.dsid
+ left join datasource on datasource.uuid=m.uuid
+ left join source on datasource.sourceid=source.id
+ where s.status>4 and m.datatype=1 and ds.host='ftp1.westgis.ac.cn' and source.code='water'
ORDER BY m.title DESC";
$sth = $this->db->prepare($sql);
$sth->execute();
@@ -489,7 +500,7 @@ class Admin_SysController extends Zend_Controller_Action
} else if ($ac=='heihe1')
{
$sql = "SELECT m.title,m.uuid,ds.host,ds.path,
- floor(t.filesize/1024/1024*100)/100 as filesize,
+ floor(t.filesize/1024/1024*100)/100 as filesize,
t.filecount from metadata m
LEFT JOIN mdstatus s ON m.uuid=s.uuid
LEFT JOIN dataset ds ON m.uuid=ds.uuid
@@ -511,11 +522,11 @@ class Admin_SysController extends Zend_Controller_Action
} else if ($ac=='hiwater')
{
$sql = "SELECT m.title,m.uuid,ds.host,ds.path,
- floor(t.filesize/1024/1024*100)/100 as filesize,
+ floor(t.filesize/1024/1024*100)/100 as filesize,
t.filecount from metadata m
LEFT JOIN mdstatus s ON m.uuid=s.uuid
LEFT JOIN dataset ds ON m.uuid=ds.uuid
- left join (select dsid,count(id) as filecount,sum(filesize) as filesize from datafile group by dsid) as t on ds.id=t.dsid
+ left join (select dsid,count(id) as filecount,sum(filesize) as filesize from datafile group by dsid) as t on ds.id=t.dsid
left join datasource on datasource.uuid=m.uuid
left join source on datasource.sourceid=source.id
where ds.host='ftp1.westgis.ac.cn' and source.code='hiwater'
@@ -533,10 +544,10 @@ class Admin_SysController extends Zend_Controller_Action
}else if ($ac=='westee')
{
$sql = "SELECT m.title,m.uuid,ds.host,ds.path,
- floor(t.filesize/1024/1024*100)/100 as filesize,
+ floor(t.filesize/1024/1024*100)/100 as filesize,
t.filecount from metadata m
LEFT JOIN mdstatus s ON m.uuid=s.uuid
- LEFT JOIN dataset ds ON m.uuid=ds.uuid
+ LEFT JOIN dataset ds ON m.uuid=ds.uuid
left join (select dsid,count(id) as filecount,sum(filesize) as filesize from datafile group by dsid) as t on ds.id=t.dsid
where ds.host='ftp1.westgis.ac.cn' and m.uuid in (select uuid from westeemd)
ORDER BY m.title DESC";
@@ -553,10 +564,10 @@ class Admin_SysController extends Zend_Controller_Action
}else if ($ac=='other')
{
$sql = "SELECT m.title,m.uuid,ds.host,ds.path,
- floor(t.filesize/1024/1024*100)/100 as filesize,
+ floor(t.filesize/1024/1024*100)/100 as filesize,
t.filecount from metadata m
LEFT JOIN mdstatus s ON m.uuid=s.uuid
- LEFT JOIN dataset ds ON m.uuid=ds.uuid
+ LEFT JOIN dataset ds ON m.uuid=ds.uuid
left join (select dsid,count(id) as filecount,sum(filesize) as filesize from datafile group by dsid) as t on ds.id=t.dsid
where ds.host='ftp1.westgis.ac.cn' and m.uuid not in (select uuid from datasource) and m.uuid not in (select uuid from westeemd)
ORDER BY m.title DESC";
@@ -573,7 +584,7 @@ class Admin_SysController extends Zend_Controller_Action
}
$this->view->activeID="btn-".$ac;
}
-
+
function problemAction()
{
$pages=20;
@@ -581,7 +592,7 @@ class Admin_SysController extends Zend_Controller_Action
if ($ac=='' || $ac=='ref')
{
$sql = "SELECT m.title,m.uuid,m.citation,g.id as gid from metadata m
- LEFT JOIN mdstatus s ON m.uuid=s.uuid
+ LEFT JOIN mdstatus s ON m.uuid=s.uuid
left join geonetworkmetadata g on g.uuid=m.uuid
where s.status>4 and m.citation like '%??%'
ORDER BY m.id DESC";
@@ -594,16 +605,16 @@ class Admin_SysController extends Zend_Controller_Action
$paginator->setItemCountPerPage($pages);
$paginator->setView($this->view);
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination.phtml');
- $this->view->paginator=$paginator;
- $this->_helper->viewRenderer('problem-ref');
+ $this->view->paginator=$paginator;
+ $this->_helper->viewRenderer('problem-ref');
$ac='ref';
} else if ($ac=='file')
{
- $sql = "SELECT m.title,m.uuid,m.filesize,ds.host,ds.path from metadata m
- LEFT JOIN mdstatus s ON m.uuid=s.uuid
- LEFT JOIN dataset ds ON m.uuid=ds.uuid
- where s.status>4 and ds.id not in (select distinct dsid from datafile)
- group by m.title,m.uuid,ds.host,ds.path,m.filesize
+ $sql = "SELECT m.title,m.uuid,m.filesize,ds.host,ds.path from metadata m
+ LEFT JOIN mdstatus s ON m.uuid=s.uuid
+ LEFT JOIN dataset ds ON m.uuid=ds.uuid
+ where s.status>4 and ds.id not in (select distinct dsid from datafile)
+ group by m.title,m.uuid,ds.host,ds.path,m.filesize
ORDER BY m.title DESC;";
$sth = $this->db->prepare($sql);
$sth->execute();
@@ -617,18 +628,18 @@ class Admin_SysController extends Zend_Controller_Action
$this->view->paginator=$paginator;
} else if ($ac=='tiny')
{
- $sql = "SELECT m.title,m.uuid,ds.host,ds.path,
- floor(sum(datafile.filesize)/1024/1024*100)/100 as filesize,
- count(datafile.id) as filecount
- from metadata m
- LEFT JOIN mdstatus s ON m.uuid=s.uuid
- LEFT JOIN dataset ds ON m.uuid=ds.uuid
- left join datasource on datasource.uuid=m.uuid
- left join datafile on ds.id=datafile.dsid
- left join source on datasource.sourceid=source.id
- where s.status>4 and ds.id in (select t.dsid from (select dsid,count(id) as filecount,sum(filesize) as filesize from datafile group by dsid) as t
-where t.filesize<1024*5)
- group by m.title,m.uuid,ds.host,ds.path
+ $sql = "SELECT m.title,m.uuid,ds.host,ds.path,
+ floor(sum(datafile.filesize)/1024/1024*100)/100 as filesize,
+ count(datafile.id) as filecount
+ from metadata m
+ LEFT JOIN mdstatus s ON m.uuid=s.uuid
+ LEFT JOIN dataset ds ON m.uuid=ds.uuid
+ left join datasource on datasource.uuid=m.uuid
+ left join datafile on ds.id=datafile.dsid
+ left join source on datasource.sourceid=source.id
+ where s.status>4 and ds.id in (select t.dsid from (select dsid,count(id) as filecount,sum(filesize) as filesize from datafile group by dsid) as t
+where t.filesize<1024*5)
+ group by m.title,m.uuid,ds.host,ds.path
ORDER BY m.title DESC;";
$sth = $this->db->prepare($sql);
$sth->execute();
@@ -642,14 +653,14 @@ where t.filesize<1024*5)
$this->view->paginator=$paginator;
} else if ($ac=='heihefund')
{
- $sql = "SELECT m.title,m.uuid,g.id as gid
- from metadata m
- LEFT JOIN mdstatus s ON m.uuid=s.uuid
- left join datasource on datasource.uuid=m.uuid
- left join source on datasource.sourceid=source.id
-left join mdfund mf on mf.uuid=m.uuid
-left join geonetworkmetadata g on m.uuid=g.uuid
- where s.status>4 and source.code='heihe' and mf.fid is null
+ $sql = "SELECT m.title,m.uuid,g.id as gid
+ from metadata m
+ LEFT JOIN mdstatus s ON m.uuid=s.uuid
+ left join datasource on datasource.uuid=m.uuid
+ left join source on datasource.sourceid=source.id
+left join mdfund mf on mf.uuid=m.uuid
+left join geonetworkmetadata g on m.uuid=g.uuid
+ where s.status>4 and source.code='heihe' and mf.fid is null
ORDER BY m.title DESC;";
$sth = $this->db->prepare($sql);
$sth->execute();
@@ -660,19 +671,19 @@ left join geonetworkmetadata g on m.uuid=g.uuid
$paginator->setItemCountPerPage($pages);
$paginator->setView($this->view);
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination.phtml');
- $this->view->paginator=$paginator;
+ $this->view->paginator=$paginator;
$this->_helper->viewRenderer('problem-md');
} else if ($ac=='noemail')
{
- $sql = "SELECT distinct m.title,m.uuid,g.id as gid
- from metadata m
- LEFT JOIN mdstatus s ON m.uuid=s.uuid
-left join role on role.uuid=m.uuid
-left join geonetworkmetadata g on m.uuid=g.uuid
- where m.datatype=1 and s.status>4 and m.uuid not in (
-select role.uuid from role left join responsible res on role.resid=res.id
-where res.email is not null and role.role in ('resourceProvider','owner','pointOfContact','custodian')
-)
+ $sql = "SELECT distinct m.title,m.uuid,g.id as gid
+ from metadata m
+ LEFT JOIN mdstatus s ON m.uuid=s.uuid
+left join role on role.uuid=m.uuid
+left join geonetworkmetadata g on m.uuid=g.uuid
+ where m.datatype=1 and s.status>4 and m.uuid not in (
+select role.uuid from role left join responsible res on role.resid=res.id
+where res.email is not null and role.role in ('resourceProvider','owner','pointOfContact','custodian')
+)
ORDER BY m.title DESC;";
$sth = $this->db->prepare($sql);
$sth->execute();
@@ -683,16 +694,16 @@ where res.email is not null and role.role in ('resourceProvider','owner','pointO
$paginator->setItemCountPerPage($pages);
$paginator->setView($this->view);
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination.phtml');
- $this->view->paginator=$paginator;
+ $this->view->paginator=$paginator;
$this->_helper->viewRenderer('problem-md');
} else if ($ac=='unmoved')
{
- $sql = "SELECT distinct m.title,m.uuid,g.id as gid
- from metadata m
-LEFT JOIN mdstatus s ON m.uuid=s.uuid
-left join geonetworkmetadata g on m.uuid=g.uuid
-left join dataset ds on ds.uuid=m.uuid
- where s.status>4 and ds.path like '%upload%'
+ $sql = "SELECT distinct m.title,m.uuid,g.id as gid
+ from metadata m
+LEFT JOIN mdstatus s ON m.uuid=s.uuid
+left join geonetworkmetadata g on m.uuid=g.uuid
+left join dataset ds on ds.uuid=m.uuid
+ where s.status>4 and ds.path like '%upload%'
ORDER BY m.title DESC;";
$sth = $this->db->prepare($sql);
$sth->execute();
@@ -703,7 +714,7 @@ left join dataset ds on ds.uuid=m.uuid
$paginator->setItemCountPerPage($pages);
$paginator->setView($this->view);
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination.phtml');
- $this->view->paginator=$paginator;
+ $this->view->paginator=$paginator;
$this->_helper->viewRenderer('problem-md');
}
$this->view->activeID="btn-".$ac;
diff --git a/application/admin/controllers/UserController.php b/application/admin/controllers/UserController.php
index f5d44c7c..3b66a45f 100755
--- a/application/admin/controllers/UserController.php
+++ b/application/admin/controllers/UserController.php
@@ -1,8 +1,6 @@
from('users')
->where('usertype = ?', 'administrator')
->order('users.id desc');
+
+
$paginator = Zend_Paginator::factory($select);
$paginator->setCurrentPageNumber($this->_getParam('page'));
$paginator->setItemCountPerPage(30);
$paginator->setView($this->view);
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination.phtml');
$this->view->paginator=$paginator;
+
+ $ac = $this->_getParam('ac');
+
+ if($ac == 'sync')
+ {
+ $sql = "SELECT id FROM users WHERE usertype='administrator'";
+ $rs = $this->db->query($sql);
+ $ids = $rs->fetchAll();
+
+ $data = array();
+ foreach($ids as $v)
+ {
+ $data[] = $v['id'];
+ }
+ unset($ids);
+
+ $ids = join(",",$data);
+
+ $gn_sql = "update users set profile='Administrator' where id in ($ids)";
+ $gn_db = new PDO(array(
+ 'host'=> $this->view->config->geonetwork->params->host,
+ 'port' => 5432,
+ 'user' => $this->view->config->geonetwork->params->username,
+ 'pwd' => $this->view->config->geonetwork->params->password ,
+ 'db' => $this->view->config->geonetwork->params->dbname
+ ));
+
+ $gn_db->exec("update users set profile='Editor' where id>1 and profile='Administrator'");
+ $gn_db->exec($gn_sql);
+
+ view::Post($this,"同步成功!",-1);
+ }
}
function showAction()
diff --git a/application/admin/views/scripts/data/left.phtml b/application/admin/views/scripts/data/left.phtml
index 5e4684a6..f22e6b39 100644
--- a/application/admin/views/scripts/data/left.phtml
+++ b/application/admin/views/scripts/data/left.phtml
@@ -19,5 +19,9 @@
专题管理
汇交计划
支持项目
+<<<<<<< .working
DOI
+=======
+可视化数据
+>>>>>>> .merge-right.r4534
\ No newline at end of file
diff --git a/application/admin/views/scripts/data/md.phtml b/application/admin/views/scripts/data/md.phtml
index b44a4935..5a25f514 100644
--- a/application/admin/views/scripts/data/md.phtml
+++ b/application/admin/views/scripts/data/md.phtml
@@ -66,7 +66,8 @@
邮件通知 |
支持项目 |
- DOI
+ DOI |
+ 数据可视化
-
= $this->partial('user/left.phtml'); ?>
-
-
-
管理员列表
-
-
-
-
- 用户名 |
- 电子邮箱 |
- 用户类型 |
- 真实姓名 |
- 电话 |
- 操作 |
-
-
- paginator)): ?>
-
- paginator as $item): ?>
-
-
- = $item['username']?> |
- = $item['email']; ?> |
- = $item['usertype']; ?> |
- = $item['realname']; ?> |
- = $item['phone']; ?> |
-
- '>查看详细
- |
-
-
-
-
-
= $this->paginator; ?>
-
+
+= $this->partial('user/left.phtml'); ?>
+
+
+
管理员列表
+
+
+
+
+用户名 |
+电子邮箱 |
+用户类型 |
+真实姓名 |
+电话 |
+操作 |
+
+
+paginator)): ?>
+
+paginator as $item): ?>
+
+
+= $item['username']?> |
+= $item['email']; ?> |
+= $item['usertype']; ?> |
+= $item['realname']; ?> |
+= $item['phone']; ?> |
+
+'>查看详细
+ |
+
+
+
+
+
= $this->paginator; ?>
+
\ No newline at end of file
diff --git a/application/config.ini b/application/config.ini
index 80a24be0..a4096aca 100755
--- a/application/config.ini
+++ b/application/config.ini
@@ -1,161 +1,158 @@
-[general]
-db.adapter = PDO_PGSQL
-db.params.host = localhost
-db.params.username = gis
-db.params.password = gispassword
-db.params.dbname = sanjiangyuan
-
-geonetwork.url=http://sanjiangyuan.westgis.ac.cn/geonetwork/
-geonetwork.adapter = PDO_PGSQL
-geonetwork.params.host = localhost
-geonetwork.params.username = gis
-geonetwork.params.password = gispassword
-geonetwork.params.dbname = geonetwork
-
-google.maps.api=ABQIAAAACD-MqkkoOm60o_dvwdcKVhRBSKpgcP88GYi6r2Of16IkMX_4YhSBQsywCi4J2_fh4nBuWmK7gyRjLg
-bing.api=4BC90E1E9ED351ECE0D9FB71509BC3CC1264340C
-bigthumb.path=../geonetwork/data/
-temp.path=/tmp/
-upload=../data/upload/
-
-paths.newsletter=images/newsletter/
-logging.file = /var/www/test.westgis.ac.cn/data/logs/debug.log
-page.limit=10
-import.dir=../data/import
-title.site=三江源自然保护区数据管理中心
-title.data=数据产品与服务
-title.heihe=黑河计划数据管理中心
-title.yrnmr=黄河上游宁蒙河段综合数据平台
-title.glacier=中国冰川资源及其变化调查
-title.review=数据评审
-title.author=数据作者
-title.knowledge=知识积累
-supportemail=westdc@lzb.ac.cn
-reportemail=westdc-report-subscribe@lists.westgis.ac.cn
-
-smtp.username=westdc@lzb.ac.cn
-smtp.password=ilovewestdc
-smtp.host=smtp.cstnet.cn
-smtp.ssl=TLS
-smtp.auth=login
-smtp.name=数据中心服务组
-
-ftp.user=newwestdc
-ftp.password=westdcforsmall
-download.max=5 //最多同时申请下载个数
-page.max=10 //每页显示条目数
-offline.template=../data/offline.pdf
-offline.heihetemplate=../data/heihe.pdf
-offline.security=../data/security.pdf
-offline.water_template=../data/water_offline.pdf
-offline.font=../data/simhei.ttf
-offline.savepath=../data/offlineapp
-service.email=westdc@lzb.ac.cn
-offline.email.template=../data/offline-email.txt
-offline.email.start_template=../data/offline-start-email.txt
-offline.email.finish_template=../data/offline-finish-email.txt
-offline.email.deny_template=../data/offline-deny-email.txt
-register.email.template=../data/register-email.txt
-westdc.xsl=../data/ISO19115.xsl
-
-routes.accout.route = "account/fetchpwd/:login/:key"
-routes.accout.defaults.controller = "account"
-routes.accout.defaults.action = "fetchpwd"
-
-routes.tag.route = "data/tag/:key"
-routes.tag.defaults.controller = "data"
-routes.tag.defaults.action = "tag"
-
-routes.netkites1.type = "Zend_Controller_Router_Route_Static"
-routes.netkites1.route = "knowledge/netkites"
-routes.netkites1.defaults.controller = netkites
-routes.netkites1.defaults.action = index
-
-routes.netkites.route = "knowledge/netkites/:action/*"
-routes.netkites.defaults.controller = netkites
-
-routes.dataid.route = "data/:id"
-routes.dataid.defaults.controller = "data"
-routes.dataid.defaults.action = "view"
-routes.dataid.reqs.id = "\d+"
-
-routes.dataxmluuid.route = "data/xml/:uuid"
-routes.dataxmluuid.defaults.controller = "data"
-routes.dataxmluuid.defaults.action = "xml"
-routes.dataxmluuid.reqs.uuid = "[[:xdigit:]]{8}(-[[:xdigit:]]{4}){3}-[[:xdigit:]]{12}"
-
-routes.datauuid.route = "data/:uuid"
-routes.datauuid.defaults.controller = "data"
-routes.datauuid.defaults.action = "view"
-routes.datauuid.reqs.uuid = "[[:xdigit:]]{8}(-[[:xdigit:]]{4}){3}-[[:xdigit:]]{12}"
-
-routes.datacat.route = "data/category/:code"
-routes.datacat.defaults.controller = "data"
-routes.datacat.defaults.action = "category"
-routes.datacat.reqs.code = "\d+"
-
-routes.dataseriesplace.route = "data/series/:id/:keyword"
-routes.dataseriesplace.defaults.controller = "data"
-routes.dataseriesplace.defaults.action = "series"
-//routes.dataseries.reqs.code = "\d+"
-
-routes.dataseries.route = "data/series/:id"
-routes.dataseries.defaults.controller = "data"
-routes.dataseries.defaults.action = "series"
-
-routes.wateruuid.route = "water/:uuid"
-routes.wateruuid.defaults.controller = "water"
-routes.wateruuid.defaults.action = "view"
-routes.wateruuid.reqs.uuid = "[[:xdigit:]]{8}(-[[:xdigit:]]{4}){3}-[[:xdigit:]]{12}"
-
-routes.watertag.route = "water/tag/:key"
-routes.watertag.defaults.controller = "water"
-routes.watertag.defaults.action = "tag"
-
-routes.mddoc.route = "data/wiki/:title"
-routes.mddoc.defaults.controller = "metainfo"
-routes.mddoc.defaults.action = "index"
-
-routes.mdfile.route = "filelist/uuid/:uuid"
-routes.mdfile.defaults.controller = "filelist"
-routes.mdfile.defaults.action = "index"
-
-routes.adminofflineapp.route = admin/down/offlineapp/:page
-routes.adminofflineapp.defaults.module = admin
-routes.adminofflineapp.defaults.controller = down
-routes.adminofflineapp.defaults.action = offlineapp
-routes.adminofflineapp.defaults.page = 1
-routes.adminofflineapp.reqs.page = \d+
-
-routes.admindatasetcd.route = admin/data/datasetcd/:page
-routes.admindatasetcd.defaults.module = admin
-routes.admindatasetcd.defaults.controller = data
-routes.admindatasetcd.defaults.action = datasetcd
-routes.admindatasetcd.defaults.page = 1
-routes.admindatasetcd.reqs.page = \d+
-
-routes.adminmd.route = admin/data/md/:page
-routes.adminmd.defaults.module = admin
-routes.adminmd.defaults.controller = data
-routes.adminmd.defaults.action = md
-routes.adminmd.defaults.page = 1
-routes.adminmd.reqs.page = \d+
-
-routes.admincomment.route = admin/data/comment/:page
-routes.admincomment.defaults.module = admin
-routes.admincomment.defaults.controller = data
-routes.admincomment.defaults.action = comment
-routes.admincomment.defaults.page = 1
-routes.admincomment.reqs.page = \d+
-
-routes.adminoffline.route = admin/data/offline/:page
-routes.adminoffline.defaults.module = admin
-routes.adminoffline.defaults.controller = data
-routes.adminoffline.defaults.action = offline
-routes.adminoffline.defaults.page = 1
-routes.adminoffline.reqs.page = \d+
-
-routes.news.route = archives/:ptype/:type/:page
-routes.news.defaults.controller = archives
-routes.news.defaults.action = list
-routes.news.defaults.page = 1
+[general]
+db.adapter = PDO_PGSQL
+db.params.host = localhost
+db.params.username = gis
+db.params.password = gispassword
+db.params.dbname = metadata
+
+geonetwork.url=http://www.sanjiangyuan.org.cn/geonetwork/
+geonetwork.adapter = PDO_PGSQL
+geonetwork.params.host = localhost
+geonetwork.params.username = gis
+geonetwork.params.password = gispassword
+geonetwork.params.dbname = geonetwork
+
+google.maps.api=ABQIAAAACD-MqkkoOm60o_dvwdcKVhRBSKpgcP88GYi6r2Of16IkMX_4YhSBQsywCi4J2_fh4nBuWmK7gyRjLg
+bing.api=4BC90E1E9ED351ECE0D9FB71509BC3CC1264340C
+bigthumb.path=../geonetwork/data/
+temp.path=/tmp/
+upload=../data/upload/
+
+paths.newsletter=images/newsletter/
+logging.file = /var/www/test.westgis.ac.cn/data/logs/debug.log
+page.limit=10
+import.dir=../data/import
+title.site=三江源生态监测综合数据服务平台
+title.data=数据产品与服务
+title.review=数据评审
+title.author=数据作者
+title.knowledge=知识积累
+supportemail=sjy@mygis.org
+reportemail=westdc-report-subscribe@lists.westgis.ac.cn
+
+smtp.username=sjy@mygis.org
+smtp.password=qherc@123
+smtp.host=smtp.gmail.com
+smtp.ssl=SSL
+smtp.auth=login
+smtp.name=三江源生态监测综合数据服务平台
+
+ftp.user=newwestdc
+ftp.password=westdcforsmall
+download.max=5 //最多同时申请下载个数
+page.max=10 //每页显示条目数
+offline.template=../data/offline.pdf
+offline.heihetemplate=../data/heihe.pdf
+offline.security=../data/security.pdf
+offline.water_template=../data/water_offline.pdf
+offline.font=../data/simhei.ttf
+offline.savepath=../data/offlineapp
+service.email=sjy@mygis.org
+offline.email.template=../data/offline-email.txt
+offline.email.start_template=../data/offline-start-email.txt
+offline.email.finish_template=../data/offline-finish-email.txt
+offline.email.deny_template=../data/offline-deny-email.txt
+register.email.template=../data/register-email.txt
+westdc.xsl=../data/ISO19115.xsl
+
+routes.accout.route = "account/fetchpwd/:login/:key"
+routes.accout.defaults.controller = "account"
+routes.accout.defaults.action = "fetchpwd"
+
+routes.tag.route = "data/tag/:key"
+routes.tag.defaults.controller = "data"
+routes.tag.defaults.action = "tag"
+
+routes.netkites1.type = "Zend_Controller_Router_Route_Static"
+routes.netkites1.route = "knowledge/netkites"
+routes.netkites1.defaults.controller = netkites
+routes.netkites1.defaults.action = index
+
+routes.netkites.route = "knowledge/netkites/:action/*"
+routes.netkites.defaults.controller = netkites
+
+routes.dataid.route = "data/:id"
+routes.dataid.defaults.controller = "data"
+routes.dataid.defaults.action = "view"
+routes.dataid.reqs.id = "\d+"
+
+routes.dataxmluuid.route = "data/xml/:uuid"
+routes.dataxmluuid.defaults.controller = "data"
+routes.dataxmluuid.defaults.action = "xml"
+routes.dataxmluuid.reqs.uuid = "[[:xdigit:]]{8}(-[[:xdigit:]]{4}){3}-[[:xdigit:]]{12}"
+
+routes.datauuid.route = "data/:uuid"
+routes.datauuid.defaults.controller = "data"
+routes.datauuid.defaults.action = "view"
+routes.datauuid.reqs.uuid = "[[:xdigit:]]{8}(-[[:xdigit:]]{4}){3}-[[:xdigit:]]{12}"
+
+routes.datacat.route = "data/category/:code"
+routes.datacat.defaults.controller = "data"
+routes.datacat.defaults.action = "category"
+routes.datacat.reqs.code = "\d+"
+
+routes.dataseriesplace.route = "data/series/:id/:keyword"
+routes.dataseriesplace.defaults.controller = "data"
+routes.dataseriesplace.defaults.action = "series"
+//routes.dataseries.reqs.code = "\d+"
+
+routes.dataseries.route = "data/series/:id"
+routes.dataseries.defaults.controller = "data"
+routes.dataseries.defaults.action = "series"
+
+routes.wateruuid.route = "water/:uuid"
+routes.wateruuid.defaults.controller = "water"
+routes.wateruuid.defaults.action = "view"
+routes.wateruuid.reqs.uuid = "[[:xdigit:]]{8}(-[[:xdigit:]]{4}){3}-[[:xdigit:]]{12}"
+
+routes.watertag.route = "water/tag/:key"
+routes.watertag.defaults.controller = "water"
+routes.watertag.defaults.action = "tag"
+
+routes.mddoc.route = "data/wiki/:title"
+routes.mddoc.defaults.controller = "metainfo"
+routes.mddoc.defaults.action = "index"
+
+routes.mdfile.route = "filelist/uuid/:uuid"
+routes.mdfile.defaults.controller = "filelist"
+routes.mdfile.defaults.action = "index"
+
+routes.adminofflineapp.route = admin/down/offlineapp/:page
+routes.adminofflineapp.defaults.module = admin
+routes.adminofflineapp.defaults.controller = down
+routes.adminofflineapp.defaults.action = offlineapp
+routes.adminofflineapp.defaults.page = 1
+routes.adminofflineapp.reqs.page = \d+
+
+routes.admindatasetcd.route = admin/data/datasetcd/:page
+routes.admindatasetcd.defaults.module = admin
+routes.admindatasetcd.defaults.controller = data
+routes.admindatasetcd.defaults.action = datasetcd
+routes.admindatasetcd.defaults.page = 1
+routes.admindatasetcd.reqs.page = \d+
+
+routes.adminmd.route = admin/data/md/:page
+routes.adminmd.defaults.module = admin
+routes.adminmd.defaults.controller = data
+routes.adminmd.defaults.action = md
+routes.adminmd.defaults.page = 1
+routes.adminmd.reqs.page = \d+
+
+routes.admincomment.route = admin/data/comment/:page
+routes.admincomment.defaults.module = admin
+routes.admincomment.defaults.controller = data
+routes.admincomment.defaults.action = comment
+routes.admincomment.defaults.page = 1
+routes.admincomment.reqs.page = \d+
+
+routes.adminoffline.route = admin/data/offline/:page
+routes.adminoffline.defaults.module = admin
+routes.adminoffline.defaults.controller = data
+routes.adminoffline.defaults.action = offline
+routes.adminoffline.defaults.page = 1
+routes.adminoffline.reqs.page = \d+
+
+routes.news.route = archives/:ptype/:type/:page
+routes.news.defaults.controller = archives
+routes.news.defaults.action = list
+routes.news.defaults.page = 1
diff --git a/application/default/controllers/DataController.php b/application/default/controllers/DataController.php
index 007644fd..fe5394cb 100755
--- a/application/default/controllers/DataController.php
+++ b/application/default/controllers/DataController.php
@@ -1,2304 +1,2305 @@
-db=Zend_Registry::get('db');
- $this->view->config = Zend_Registry::get('config');
- $this->messenger=$this->_helper->getHelper('FlashMessenger');
- $this->view->messages = $this->messenger->getMessages();
- $this->view->theme = new Theme();
- $this->view->main_nav_pageID = "data";
-
- $this->view->nav = array(
- array('link'=>'/','title'=>'
'),
- array('link'=>'/data','title'=>$this->view->config->title->data),
- );
- }
- function indexAction()
- {
- //序列
- $state=$this->db->query('select s.id,s.name,count(*) as count from series s,dataseries d where d.sid=s.id and length(s.name)>2 group by s.id,s.name order by count desc limit 15');
- $this->view->serie=$state->fetchAll();
- //分类
- $state=$this->db->query('select c.code,name,name_zh,count(*) from category c,categorycode cc where c.code=cc.code group by c.code,cc.name,cc.name_zh');
- $this->view->category=$state->fetchAll();
- //关键词
- $state=$this->db->query("select keyword,count(*) from keyword right join normalmetadata on keyword.id=normalmetadata.id where keytype='place' group by keyword order by count desc limit 20");
- $k1=$state->fetchAll();
- $state=$this->db->query("select keyword,count(*) from keyword right join normalmetadata on keyword.id=normalmetadata.id where keytype='theme' group by keyword order by count desc limit 20");
- //$state=$this->db->query("select k.keyword,count(k.keyword) from keyword k left join normalmetadata m on k.id=m.id where k.keytype='theme' and (m.uuid in (select uuid from dataorder group by uuid order by count(uuid) desc limit 20)) group by k.keyword order by count(k.keyword) desc limit 20");
- $k2=$state->fetchAll();
- $state=$this->db->query("select keyword,count(*) from keyword right join normalmetadata on keyword.id=normalmetadata.id where keytype='discipline' group by keyword order by count desc limit 20");
- $k3=$state->fetchAll();
- $state=$this->db->query("select keyword,count(*) from keyword right join normalmetadata on keyword.id=normalmetadata.id where keytype='stratum' group by keyword order by count desc limit 20");
- $k4=$state->fetchAll();
- $state=$this->db->query("select keyword,count(*) from keyword right join normalmetadata on keyword.id=normalmetadata.id where keytype='temporal' group by keyword order by count desc limit 20");
- //$state=$this->db->query("select k.keyword,count(k.keyword) from keyword k left join normalmetadata m on k.id=m.id where k.keytype='temporal' and (m.uuid in (select uuid from dataorder group by uuid order by count(uuid) desc limit 20)) group by k.keyword order by count(k.keyword) desc limit 20");
- $k5=$state->fetchAll();
- $this->view->keywords=array('place'=>$k1,'theme'=>$k2,'discipline'=>$k3,'stratum'=>$k4,'temporal'=>$k5);
- //最新10个入库数据
- $state=$this->db->query('select id,uuid,title from normalmetadata order by id desc limit 10');
- $this->view->metadata = $state->fetchAll();
- //特色数据
-
- //服务
- $l=new mydir($this->view->config->paths->newsletter,"newsletter_*.pdf");
- $this->view->newsletter=$l->getLast();
- $name=basename($this->view->newsletter,'.pdf');
- list(,$this->view->newsletterno)=explode("_",$name);
-
- $this->view->addHelperPath('helper','Zend_View_Helper_');
- $form=new MaillistForm();
- $form->submit->setLabel('输入邮件地址,订阅数据通讯列表');
-
- $this->view->form=$form;
- if ($this->_request->isPost()) {
- //发送邮件
- $formData=$this->_request->getPost();
- if ($form->isValid($formData)) {
- $mail=new WestdcMailer($this->view->config->smtp);
- $mail->setFrom($formData['email']);
- $mail->setBodyText(".");
- $mail->setSubject('subscribe');
- $mail->addTo($this->view->config->reportemail);
- $mail->send();
- $this->messenger->addMessage('订阅成功,请检查您的邮件!');
- $this->_redirect('/data/');
- }
- } else {
- $auth = Zend_Auth::getInstance();
- if ($auth->hasIdentity()) {
- $user=$auth->getIdentity();
- $formData['email']=$user->email;
- $form->populate($formData);
- }
- }
- $searchform=new SearchForm();
- $this->view->searchform=$searchform;
-
- //其他连接
- }
- function onlinelistAction()
- {
- $page=(int)$this->_request->getParam('page');
- if (empty($page)) $page=1;
- $limit=30;
- $offset=$limit*($page-1);
- $state=$this->db->query('select count(*) from normalmetadata where datatype=0');
- $row=$state->fetchAll();
- $sum=$row[0]['count'];
- $select=$this->db->select();
- $select->from('normalmetadata','*')->where('datatype=0')->order('title')->limitPage($page,$limit);
- $this->view->metadata = $this->db->fetchAll($select);
- $this->view->page=new Pagination($sum,$page,$limit);
- }
- function offlinelistAction()
- {
- $page=(int)$this->_request->getParam('page');
- if (empty($page)) $page=1;
- $limit=30;
- $offset=$limit*($page-1);
- $state=$this->db->query('select count(*) from normalmetadata where datatype=1');
- $row=$state->fetchAll();
- $sum=$row[0]['count'];
- $select=$this->db->select();
- $select->from('normalmetadata','*')->where('datatype=1')->order('title')->limitPage($page,$limit);
- $this->view->metadata = $this->db->fetchAll($select);
- $this->view->page=new Pagination($sum,$page,$limit);
- }
- //展示最近20条离线神情记录情况
- function offlineappAction()
- {
- $sql="select * from offlineapp where ts_approved is not null and pdflink<>'' and status>=0 order by ts_created desc limit 20";
- $this->view->rows=$this->db->fetchAll($sql);
- }
- function requestAction()
- {
- $archives=new Archive($this->db);
- $this->view->item=$archives->getOneArchive('如何申请数据','help');
- }
- function submitAction()
- {
- $archives=new Archive($this->db);
- $this->view->item=$archives->getOneArchive('如何发布数据','help');
- }
- function serviceAction()
- {
- }
- function newsletterAction()
- {
- $l=new mydir($this->view->config->paths->newsletter,"newsletter_*.pdf");
- $this->view->newsletters=$l->toArray();
- $this->view->addHelperPath('helper','Zend_View_Helper_');
- rsort($this->view->newsletters);
- $form=new MaillistForm();
- $this->view->form=$form;
- $form->submit->setLabel('输入邮件地址,订阅数据通讯列表');
- if ($this->_request->isPost()) {
- //发送邮件
- $formData=$this->_request->getPost();
- if ($form->isValid($formData)) {
- //$mail=new Zend_Mail('utf-8');
- $mail=new WestdcMailer($this->view->config->smtp);
- $mail->setFrom($formData['email']);
- $mail->setBodyText(".");
- $mail->setSubject('subscribe');
- $mail->addTo($this->view->config->reportemail);
- /*
- $tr=new Zend_Mail_Transport_Smtp($this->view->config->smtp->host,
- array('ssl' => $this->view->config->smtp->ssl,
- 'auth'=>$this->view->config->smtp->auth,
- 'username'=>$this->view->config->smtp->username,
- 'password'=>$this->view->config->smtp->password));
- $mail->send($tr);
- */
- $mail->send();
- $this->messenger->addMessage('订阅成功,请检查您的邮件!');
- $this->_redirect('/data/newsletter');
- }
- } else {
- $auth = Zend_Auth::getInstance();
- if ($auth->hasIdentity()) {
- $user=$auth->getIdentity();
- $formData['email']=$user->email;
- $form->populate($formData);
- }
- }
- }
- function featureAction()
- {
- $sql="select * from datafeature order by id desc";
- $this->view->feature=$this->db->fetchAll($sql);
- }
-
- function datasetcdAction()
- {
- $cd=new DatasetcdTable();
- $this->view->rows=$cd->fetchAll();
- }
- /*
- * 数据浏览
- */
- function browseAction()
- {
- $page=(int)$this->_request->getParam('page');
- if (empty($page)) $page=1;
- $limit=10;
- $offset=$limit*($page-1);
- $state=$this->db->query('select count(*) from metadata');
- $row=$state->fetchAll();
- $sum=$row[0]['count'];
- $select=$this->db->select();
- $select->from('metadata','*')->order('id desc')->limitPage($page,$limit);
- $this->view->metadata = $this->db->fetchAll($select);
- $this->view->page=new Pagination($sum,$page,$limit);
- }
- function tagAction()
- {
- $id = (int)$this->_request->getParam('id');
- $key = $this->_request->getParam('key');
- $keytype = $this->_request->getParam('keytype');
- $page=(int)$this->_request->getParam('page');
- if (empty($page)) $page=1;
- $limit=10;
- $offset=$limit*($page-1);
- $sql='select keyword,count(*),keytype from keyword right join normalmetadata on keyword.id=normalmetadata.id ';
- if (!empty($keytype) && ($keytype=='place' || $keytype=='theme' || $keytype=='discipline'||$keytype=='temporal')) $sql.=" where keytype='".$keytype."'";
- $sql.=' group by keyword,keytype order by keytype,keyword,count desc';
- $state=$this->db->query($sql);
- $this->view->keywords=$state->fetchAll();
-
- if ($id>0 or !empty($key)) {
- if (empty($key)) {
- $where=$this->db->quoteInto('id = ?',$id);
- $row=$md->fetchRow($where);
- $key=$row->name;
- }
- $this->view->codename=$key;
- $sql=$this->db->quoteInto('select count(m.id) from normalmetadata m,keyword k where m.id=k.id and k.keyword=?',$key);
-
- $state=$this->db->query($sql);
- $row=$state->fetchAll();
- $sum=$row[0]['count'];
- $select=$this->db->select();
- $select->from('normalmetadata','*')->join('keyword','normalmetadata.id=keyword.id')->where('keyword.keyword=?',$key)->order('normalmetadata.title')->limitPage($page,$limit);
- //$sql=$db->quoteInto('select m.* from metadata m,keyword k where m.id=k.id and k.keyword=?',$key);
- //$state=$db->query($sql);
- $this->view->metadata=$this->db->fetchAll($select);
- $this->view->page=new Pagination($sum,$page,$limit);
- }
- }
- /*
- * 数据集序列浏览
- */
- function seriesAction()
- {
- $id = $this->_request->getParam('id');
- if (empty($id)) $id=0;
- if (!is_numeric($id))
- {
- $name=$id;
- $id='';
- }
- $keyword=$this->_request->getParam('keyword');
- if (empty($id)) {
- if (!empty($name))
- {
- $where=$this->db->quoteInto('name = ?',$name);
- $row=$this->db->fetchRow("select * from series where ".$where);
- }
- } else {
- $where=$this->db->quoteInto('id = ?',$id);
- $row=$this->db->fetchRow("select * from series where ".$where);
- }
- if (!empty($id) or !empty($name))
- {
- if (!$row) $this->_redirect('/data');
- $id=$row['id'];
- }
- $page=(int)$this->_request->getParam('page');
- if (empty($page)) $page=1;
- $limit=10;
- $offset=$limit*($page-1);
- $state=$this->db->query('select s.id,name,count(*) from series s,dataseries d where d.sid=s.id group by s.id,s.name');
- $this->view->serie=$state->fetchAll();
- if ($id>0) {
- //$where=$this->db->quoteInto('id = ?',$id);
- //$row=$this->db->fetchRow("select * from series where ".$where);
- $this->view->codename=$row['name'];
- if (!empty($keyword))
- {
- $sql='select count(m.id) as count from normalmetadata m,dataseries d,keyword k where m.id=d.id and m.id=k.id and d.sid=? and k.keyword=?';
- $row=$this->db->fetchAll($sql,array($id,$keyword));
- $this->view->codename.="【关键词:".$keyword."】";
- }else{
- $sql='select count(m.id) as count from normalmetadata m,dataseries d where m.id=d.id and d.sid=?';
- $row=$this->db->fetchAll($sql,array($id));
- }
- $sum=$row[0]['count'];
- $select=$this->db->select();
- $select->from('normalmetadata','*')->join('dataseries','normalmetadata.id=dataseries.id')->where('dataseries.sid=?',$id)->order('normalmetadata.title')->limitPage($page,$limit);
- if (!empty($keyword)) $select->join('keyword','keyword.id=normalmetadata.id')->where('keyword.keyword=?',$keyword);
- $this->view->metadata=$this->db->fetchAll($select);
- $this->view->page=new Pagination($sum,$page,$limit);
- //$this->view->showtools=($sum>$page)?true:false;
- //$this->view->form=new SearchForm();
- $sql=$this->db->quoteInto("select keyword,count(*) as count from (select t.keyword,t.id from keyword t left join dataseries d on t.id=d.id where t.keytype='place' and d.sid=?) as f group by keyword order by count desc limit 30",$id);
- $state=$this->db->query($sql);
- $row=$state->fetchAll();
- $this->view->places=$row;
- $this->view->seriesid=$id;
- } else {
- //提供全部数据集序列列表
- }
- }
- /*
- * 分类浏览模式
- */
- function categoryAction()
- {
- $page = $this->_request->getParam('page');
- $code = (int)$this->_request->getParam('code');
- $state=$this->db->query('select c.code,name,name_zh,count(*) from category c,categorycode cc where c.code=cc.code group by c.code,cc.name,cc.name_zh');
- $this->view->category=$state->fetchAll();
- if ($code>0 && $code<20) {
- $where=$this->db->quoteInto('code = ?',$code);
- $row=$this->db->fetchRow("select * from categorycode where ".$where);
- $this->view->codename=(empty($row['name_zh'])?$row['name']:$row['name_zh']);
- $sql='select count(m.id) from normalmetadata m left join category c on m.id=c.id where c.code=?';
- $row=$this->db->fetchRow($sql,array($code));
- $sum=$row['count'];
- $select=$this->db->select();
- $select->from('normalmetadata as m','*')->joinLeft('category as c','m.id=c.id')->where('c.code=?',$code)->order('m.title')->limitPage($page,$this->limit);
- $this->view->metadata=$this->db->fetchAll($select);
- $this->view->page=new Pagination($sum,$page,$this->limit);
- } else {
- //提供全部分类列表
- }
- }
- /*
- * 时间浏览方式
- * todo:实现xml的缓存,基于时间的缓存(每天)?基于元数据修改的缓存,每次导入后都重新生成一次。
- */
- function timelineAction()
- {
- $fn="time1.xml";
- $rows=$this->db->fetchAll("select ts_created from normalmetadata order by ts_created desc limit 1");
- $last_update=strtotime($rows[0]['ts_created']);
- if (!file_exists($fn) || (filemtime($fn)<$last_update))
- {
- $dateformat="M j Y";
- $md = new MetadataTable();
- $db=$md->getAdapter();
- $state=$db->query('select id,uuid,description,title,timebegin,timeend from normalmetadata where timebegin is not null order by timebegin');
- $rows=$state->fetchAll();
- $timexml='
';
- foreach($rows as $row) {
- $timexml.='';
- $desc_length=mb_strlen($row['description'],"UTF-8");
- $desc=mb_substr($row['description'],0,($desc_length>300)?300:$desc_length,"UTF-8");
- if ($desc_length>300) $desc.=" ...";
- $timexml.=htmlspecialchars($desc);
- $timexml.="\n";
- }
- $timexml.='';
- $fp=fopen($fn,'w');
- fwrite($fp,$timexml);
- fclose($fp);
- }
- //$this->_helper->layout->disableLayout();
- }
- /*
- * todo:空间浏览
- */
- function mapAction()
- {
- //use json & openlayers?
- $id=(int)$this->_request->getParam('id');
- if ($id>0) $this->view->params="/id/$id";
- }
- /*
- * 产生geojson数据
- */
- function jsonAction()
- {
- $md=new MetadataTable();
- $db=$md->getAdapter();
- $id = (int)$this->_request->getParam('id');
- $where='';
- if (!empty($id)) { $where=' where id='.$id; }
- $sql='select id,uuid,west,south,north,east,title from normalmetadata'.$where;
- $state=$db->query($sql);
- $rows=$state->fetchAll();
- $geomd=new GeoMetaData();
- foreach($rows as $row){
- if ($id)
- $box=new GeoBox($row['west'],$row['south'],$row['east'],$row['north']);
- else
- $box=new GeoBoxLine($row['west'],$row['south'],$row['east'],$row['north']);
- $feature=new Geofeature();
- $feature->id=$row['id'];
- $feature->addProperties('title',$row['title']);
- $feature->addProperties('uuid',$row['uuid']);
- $feature->addProperties('id',$row['id']);
- $feature->geometry=$box;
- $geomd->addFeature($feature);
- }
- $this->_helper->json($geomd);
- }
- /*
- * 时空动态浏览
- */
- function timemapAction()
- {
- $sql='select id,uuid,west,south,north,east,title,timebegin,timeend from normalmetadata where timebegin is not null';
- $this->view->rows=$this->db->fetchAll($sql);
- }
- /*
- * 返回XML源文件
- */
- function xmlAction()
- {
- $uuid=$this->_request->getParam('uuid');
- $row=$this->db->fetchRow("select xml.data from xml left join metadata on xml.id=metadata.id where metadata.uuid=?",array($uuid));
- $this->_helper->layout->disableLayout();
- $this->_helper->viewRenderer->setNoRender();
- $this->getResponse()->setHeader('Content-Type', 'text/xml')
- ->setBody($row['data']);
- }
- function detailAction()
- {
- $id=(int)$this->_request->getParam('id');
- $xml=new XmlTable();
- $db=$xml->getAdapter();
- $where=$db->quoteInto('id=?',$id);
- $order='id desc';
- $row=$xml->fetchRow($where,$order);
- // Load the XML source
- $xml = new DOMDocument;
- $xml->loadXML($row->data);
- $xsl = new DOMDocument;
- $xsl->load($this->view->config->westdc->xsl);
- // Configure the transformer
- $proc = new XSLTProcessor;
- $proc->importStyleSheet($xsl); // attach the xsl rules
- $this->view->xml=$proc->transformToXML($xml);
- //$this->_helper->layout->disableLayout();
- //$this->_helper->viewRenderer->setNoRender();
- //$this->getResponse()->setHeader('Content-Type', 'text/html')
- // ->setBody($proc->transformToXML($xml));
- }
- function feedAction()
- {
- $feedArray = array(
- 'title' => '中国西部环境与生态科学数据中心',
- 'link' => 'http://'.$_SERVER['SERVER_NAME'].'/data/feed',
- 'description' => '共享西部计划产生的数据',
- 'language' => 'zh-CN',
- 'charset' => 'utf-8',
- 'published' => time(),
- //'generator' => 'Zend Framework Zend_Feed',
- 'entries' => array()
- );
- $sql="select * from normalmetadata order by ts_created desc";
- $rs=$this->db->fetchAll($sql);
- $feedArray['published']=strtotime($rs[0]['ts_created']);
- foreach($rs as $r)
- {
- $feedArray['entries'][] = array(
- 'title' => $r['title'],
- 'link' => 'http://'.$_SERVER['SERVER_NAME'].'/data/' . $r['uuid'],
- 'guid' => 'http://'.$_SERVER['SERVER_NAME'].'/data/' . $r['uuid'],
- //'content'=>$r['description'],
- 'description' => $r['description'],
- 'lastUpdate' => strtotime($r['ts_created'])
- );
- }
- $feed = Zend_Feed::importArray($feedArray,'rss');
- $this->_helper->layout->disableLayout();
- $this->_helper->viewRenderer->setNoRender();
- $feed->send();
- }
- /*
- * todo: search
- */
- function searchAction()
- {
- $this->view->addHelperPath('helper','Zend_View_Helper_');
- $form=new SearchForm();
- $this->view->form=$form;
- //$form->submit->setLabel('快速搜索');
- $key=$this->_request->getParam('q');
- if (!empty($key)) {
- //$formData=$this->_request->getPost();
- //include_once("bcspamblock.php");
- //if ($form->isValid($formData)) {
- $page=@(int)$this->_request->getParam('page');
- if (empty($page)) $page=1;
- $offset=$this->limit*($page-1);
- $search=new Search($key);
- $where=$search->sql_expr(array("title","description"));
- $row=$this->db->fetchAll("select count(*) from normalmetadata where ".$where);
- $sum=$row[0]['count'];
- $sql="select uuid,title,id,description from normalmetadata where ".$where." order by title limit ? offset ?";
- $this->view->metadata=$this->db->fetchAll($sql,array($this->limit,$offset));
- $this->view->page=new Pagination($sum,$page,$this->limit);
- $this->view->key=$key;
- }
- }
- /*
- * todo: 高级搜索
- */
- function advancesearchAction()
- {
- $this->view->addHelperPath('helper','Zend_View_Helper_');
- //$form=new SearchForm();
- //$this->view->form=$form;
-
- $md=new MetadataTable();
- $db=$md->getAdapter();
- $page=(int)$this->_request->getParam('page');
- if (empty($page)) $page=1;
- $limit=10;
- $offset=$limit*($page-1);
- $key=$this->_request->getParam('q');
- $n=(int)$this->_request->getParam('n');
- $s=(int)$this->_request->getParam('s');
- $e=(int)$this->_request->getParam('e');
- $w=(int)$this->_request->getParam('w');
- if (!(empty($n) && empty($key))) {
- if (empty($n)) $n=90;
- if (empty($s)) $s=-90;
- if (empty($e)) $e=180;
- if (empty($w)) $w=-180;
- $start=$this->_request->getParam('start');
- $end=$this->_request->getParam('end');
- if (!empty($key)) {
- $sql='select count(*) from normalmetadata where east and west>? and north and south>? and (title ilike ? or description ilike ?)';
- $row=$db->fetchAll($sql,array($e,$w,$n,$s,'%'.$key.'%','%'.$key.'%'));
- } else {
- $sql='select count(*) from normalmetadata where east and west>? and north and south>?';
- $row=$db->fetchAll($sql,array($e,$w,$n,$s));
- }
- $sum=$row[0]['count'];
- $select=$db->select();
- $select->from('normalmetadata','*')->where('east',$e)->where('west>?',$w)->where('north',$n)->where('south>?',$s);
- if (!empty($key)) $select->where('(title ilike ? or description ilike ?)','%'.$key.'%');
- $select->order('title')->limit($limit,$offset);
- $this->view->metadata = $db->fetchAll($select);
- $this->view->page=new Pagination($sum,$page);
- $this->view->key=$key;
- }
- }
- /*
- * 根据id或uuid来查看元数据
- * id为一组数字,uuid为唯一标识符
- */
- function viewAction()
- {
- $id = (int)$this->_request->getParam('id');
- $sql="select m.*,s.status,g.id as gid,t.filename,i.doi as datadoi,i.authors,i.author_en,i.publisher,i.publisher_en, date_part('year',i.ts_published) as publish_year from normalmetadata m left join mdstatus s on m.uuid=s.uuid
- left join thumbnail t on t.id=m.id left join geonetworkmetadata g on m.uuid=g.uuid left join datadoi i on i.uuid=m.uuid where ";
- if (empty($id)) {
- $uuid = $this->_request->getParam('uuid');
- if (empty($uuid)) $this->_redirect('/data');
- $where=$this->db->quoteInto('m.uuid = ?',$uuid);
- } else {
- $where=$this->db->quoteInto('m.id = ?',$id);
- }
- $sql.=$where;
- $this->db->setFetchMode(Zend_Db::FETCH_OBJ);
- $row=$this->db->fetchRow($sql);
- if (!$row) $this->_redirect('/data');
- $id=$row->id;
- $uuid=$row->uuid;
- $this->view->metadata=$row;
- //提前对表格进行预处理
- $wiki=new WikiFormat();
- $this->view->metadata->description=$wiki->parseTable($this->view->escape($row->description));
- //处理外部链接
- $this->view->metadata->description=preg_replace('/\[\s*(http:\/\/.+?)\s+(.*?)\]/m','
$2',$this->view->metadata->description);
- $this->view->thumburl='/gndata/'.sprintf('%05d',floor(($row->gid+0.1)/100)*100).'-'.sprintf('%05d',ceil(($row->gid+0.1)/100)*100-1)."/".$row->gid;
- $this->view->thumburl.='/public/'.str_replace('_s.','.',$row->filename);
- if (is_numeric($row->projection))
- {
- $sql="select proj4text from spatial_ref_sys where auth_srid=?";
- $rs=$this->db->fetchRow($sql,array((int)$row->projection));
- if ($rs) $this->view->projection=$rs->proj4text;
- }
-
- $sql = "select * from keyword where id=? order by keytype,ts_created";
- $sth = $this->db->prepare($sql);
- $rs = $sth->execute(array($id));
- $this->view->keys = $sth->fetchAll(PDO::FETCH_BOTH);
-
- $sql='select c.code,cc.name,cc.name_zh from category c,categorycode cc where c.code=cc.code and c.id= ?';
- $state=$this->db->query($sql,array($id));
- $this->view->category=$state->fetchAll();
- $sql='select s.name,s.id from dataseries d, series s where d.sid=s.id and d.id= ?';
- $state=$this->db->query($sql,array($id));
- $this->view->series=$state->fetchAll();
- $sql=$this->db->quoteInto("select count(*) as count from dataorder where uuid=?",$uuid);
- $row=$this->db->fetchRow($sql);
- $this->view->downloaded=$row->count;
- //update the viewed times
- $sql="update mdstat set viewed=viewed+1 where uuid=?";
- $this->db->query($sql,array($uuid));
- $sql=$this->db->quoteInto("select viewed from mdstat where uuid=?",$uuid);
- $row=$this->db->fetchRow($sql);
- $this->view->viewed=$row->viewed;
- //数据文档
- $sql="select linkage from onlineresource where uuid=? and description='数据说明文档'";
- $sql=$this->db->quoteInto($sql,$uuid);
- $row=$this->db->fetchRow($sql);
- if ($row) $this->view->doc=$row->linkage;
- //相关资源
- $sql="select * from onlineresource where uuid=? and (linkage not like '%ftp.westgis%') and name<>'元数据地址'";
- $sql=$this->db->quoteInto($sql,$uuid);
- $this->view->resources=$this->db->fetchAll($sql);
- //建议参考文献
- $sql="select r.* from reference r left join mdref m on m.refid=r.id where m.uuid=? and m.reftype=0 order by m.place";
- $sql=$this->db->quoteInto($sql,$uuid);
+db=Zend_Registry::get('db');
+ $this->view->config = Zend_Registry::get('config');
+ $this->messenger=$this->_helper->getHelper('FlashMessenger');
+ $this->view->messages = $this->messenger->getMessages();
+ $this->view->theme = new Theme();
+ $this->view->main_nav_pageID = "data";
+
+ $this->view->nav = array(
+ array('link'=>'/','title'=>'
'),
+ array('link'=>'/data','title'=>$this->view->config->title->data),
+ );
+ }
+ function indexAction()
+ {
+ //序列
+ $state=$this->db->query('select s.id,s.name,count(*) as count from series s,dataseries d where d.sid=s.id and length(s.name)>2 group by s.id,s.name order by count desc limit 15');
+ $this->view->serie=$state->fetchAll();
+ //分类
+ $state=$this->db->query('select c.code,name,name_zh,count(*) from category c,categorycode cc where c.code=cc.code group by c.code,cc.name,cc.name_zh');
+ $this->view->category=$state->fetchAll();
+ //关键词
+ $state=$this->db->query("select keyword,count(*) from keyword right join normalmetadata on keyword.id=normalmetadata.id where keytype='place' group by keyword order by count desc limit 20");
+ $k1=$state->fetchAll();
+ $state=$this->db->query("select keyword,count(*) from keyword right join normalmetadata on keyword.id=normalmetadata.id where keytype='theme' group by keyword order by count desc limit 20");
+ //$state=$this->db->query("select k.keyword,count(k.keyword) from keyword k left join normalmetadata m on k.id=m.id where k.keytype='theme' and (m.uuid in (select uuid from dataorder group by uuid order by count(uuid) desc limit 20)) group by k.keyword order by count(k.keyword) desc limit 20");
+ $k2=$state->fetchAll();
+ $state=$this->db->query("select keyword,count(*) from keyword right join normalmetadata on keyword.id=normalmetadata.id where keytype='discipline' group by keyword order by count desc limit 20");
+ $k3=$state->fetchAll();
+ $state=$this->db->query("select keyword,count(*) from keyword right join normalmetadata on keyword.id=normalmetadata.id where keytype='stratum' group by keyword order by count desc limit 20");
+ $k4=$state->fetchAll();
+ $state=$this->db->query("select keyword,count(*) from keyword right join normalmetadata on keyword.id=normalmetadata.id where keytype='temporal' group by keyword order by count desc limit 20");
+ //$state=$this->db->query("select k.keyword,count(k.keyword) from keyword k left join normalmetadata m on k.id=m.id where k.keytype='temporal' and (m.uuid in (select uuid from dataorder group by uuid order by count(uuid) desc limit 20)) group by k.keyword order by count(k.keyword) desc limit 20");
+ $k5=$state->fetchAll();
+ $this->view->keywords=array('place'=>$k1,'theme'=>$k2,'discipline'=>$k3,'stratum'=>$k4,'temporal'=>$k5);
+ //最新10个入库数据
+ $state=$this->db->query('select id,uuid,title from normalmetadata order by id desc limit 10');
+ $this->view->metadata = $state->fetchAll();
+ //特色数据
+
+ //服务
+ $l=new mydir($this->view->config->paths->newsletter,"newsletter_*.pdf");
+ $this->view->newsletter=$l->getLast();
+ $name=basename($this->view->newsletter,'.pdf');
+ list(,$this->view->newsletterno)=explode("_",$name);
+
+ $this->view->addHelperPath('helper','Zend_View_Helper_');
+ $form=new MaillistForm();
+ $form->submit->setLabel('输入邮件地址,订阅数据通讯列表');
+
+ $this->view->form=$form;
+ if ($this->_request->isPost()) {
+ //发送邮件
+ $formData=$this->_request->getPost();
+ if ($form->isValid($formData)) {
+ $mail=new WestdcMailer($this->view->config->smtp);
+ $mail->setFrom($formData['email']);
+ $mail->setBodyText(".");
+ $mail->setSubject('subscribe');
+ $mail->addTo($this->view->config->reportemail);
+ $mail->send();
+ $this->messenger->addMessage('订阅成功,请检查您的邮件!');
+ $this->_redirect('/data/');
+ }
+ } else {
+ $auth = Zend_Auth::getInstance();
+ if ($auth->hasIdentity()) {
+ $user=$auth->getIdentity();
+ $formData['email']=$user->email;
+ $form->populate($formData);
+ }
+ }
+ $searchform=new SearchForm();
+ $this->view->searchform=$searchform;
+
+ //其他连接
+ }
+ function onlinelistAction()
+ {
+ $page=(int)$this->_request->getParam('page');
+ if (empty($page)) $page=1;
+ $limit=30;
+ $offset=$limit*($page-1);
+ $state=$this->db->query('select count(*) from normalmetadata where datatype=0');
+ $row=$state->fetchAll();
+ $sum=$row[0]['count'];
+ $select=$this->db->select();
+ $select->from('normalmetadata','*')->where('datatype=0')->order('title')->limitPage($page,$limit);
+ $this->view->metadata = $this->db->fetchAll($select);
+ $this->view->page=new Pagination($sum,$page,$limit);
+ }
+ function offlinelistAction()
+ {
+ $page=(int)$this->_request->getParam('page');
+ if (empty($page)) $page=1;
+ $limit=30;
+ $offset=$limit*($page-1);
+ $state=$this->db->query('select count(*) from normalmetadata where datatype=1');
+ $row=$state->fetchAll();
+ $sum=$row[0]['count'];
+ $select=$this->db->select();
+ $select->from('normalmetadata','*')->where('datatype=1')->order('title')->limitPage($page,$limit);
+ $this->view->metadata = $this->db->fetchAll($select);
+ $this->view->page=new Pagination($sum,$page,$limit);
+ }
+ //展示最近20条离线神情记录情况
+ function offlineappAction()
+ {
+ $sql="select * from offlineapp where ts_approved is not null and pdflink<>'' and status>=0 order by ts_created desc limit 20";
+ $this->view->rows=$this->db->fetchAll($sql);
+ }
+ function requestAction()
+ {
+ $archives=new Archive($this->db);
+ $this->view->item=$archives->getOneArchive('如何申请数据','help');
+ }
+ function submitAction()
+ {
+ $archives=new Archive($this->db);
+ $this->view->item=$archives->getOneArchive('如何发布数据','help');
+ }
+ function serviceAction()
+ {
+ }
+ function newsletterAction()
+ {
+ $l=new mydir($this->view->config->paths->newsletter,"newsletter_*.pdf");
+ $this->view->newsletters=$l->toArray();
+ $this->view->addHelperPath('helper','Zend_View_Helper_');
+ rsort($this->view->newsletters);
+ $form=new MaillistForm();
+ $this->view->form=$form;
+ $form->submit->setLabel('输入邮件地址,订阅数据通讯列表');
+ if ($this->_request->isPost()) {
+ //发送邮件
+ $formData=$this->_request->getPost();
+ if ($form->isValid($formData)) {
+ //$mail=new Zend_Mail('utf-8');
+ $mail=new WestdcMailer($this->view->config->smtp);
+ $mail->setFrom($formData['email']);
+ $mail->setBodyText(".");
+ $mail->setSubject('subscribe');
+ $mail->addTo($this->view->config->reportemail);
+ /*
+ $tr=new Zend_Mail_Transport_Smtp($this->view->config->smtp->host,
+ array('ssl' => $this->view->config->smtp->ssl,
+ 'auth'=>$this->view->config->smtp->auth,
+ 'username'=>$this->view->config->smtp->username,
+ 'password'=>$this->view->config->smtp->password));
+ $mail->send($tr);
+ */
+ $mail->send();
+ $this->messenger->addMessage('订阅成功,请检查您的邮件!');
+ $this->_redirect('/data/newsletter');
+ }
+ } else {
+ $auth = Zend_Auth::getInstance();
+ if ($auth->hasIdentity()) {
+ $user=$auth->getIdentity();
+ $formData['email']=$user->email;
+ $form->populate($formData);
+ }
+ }
+ }
+ function featureAction()
+ {
+ $sql="select * from datafeature order by id desc";
+ $this->view->feature=$this->db->fetchAll($sql);
+ }
+
+ function datasetcdAction()
+ {
+ $cd=new DatasetcdTable();
+ $this->view->rows=$cd->fetchAll();
+ }
+ /*
+ * 数据浏览
+ */
+ function browseAction()
+ {
+ $page=(int)$this->_request->getParam('page');
+ if (empty($page)) $page=1;
+ $limit=10;
+ $offset=$limit*($page-1);
+ $state=$this->db->query('select count(*) from metadata');
+ $row=$state->fetchAll();
+ $sum=$row[0]['count'];
+ $select=$this->db->select();
+ $select->from('metadata','*')->order('id desc')->limitPage($page,$limit);
+ $this->view->metadata = $this->db->fetchAll($select);
+ $this->view->page=new Pagination($sum,$page,$limit);
+ }
+ function tagAction()
+ {
+ $id = (int)$this->_request->getParam('id');
+ $key = $this->_request->getParam('key');
+ $keytype = $this->_request->getParam('keytype');
+ $page=(int)$this->_request->getParam('page');
+ if (empty($page)) $page=1;
+ $limit=10;
+ $offset=$limit*($page-1);
+ $sql='select keyword,count(*),keytype from keyword right join normalmetadata on keyword.id=normalmetadata.id ';
+ if (!empty($keytype) && ($keytype=='place' || $keytype=='theme' || $keytype=='discipline'||$keytype=='temporal')) $sql.=" where keytype='".$keytype."'";
+ $sql.=' group by keyword,keytype order by keytype,keyword,count desc';
+ $state=$this->db->query($sql);
+ $this->view->keywords=$state->fetchAll();
+
+ if ($id>0 or !empty($key)) {
+ if (empty($key)) {
+ $where=$this->db->quoteInto('id = ?',$id);
+ $row=$md->fetchRow($where);
+ $key=$row->name;
+ }
+ $this->view->codename=$key;
+ $sql=$this->db->quoteInto('select count(m.id) from normalmetadata m,keyword k where m.id=k.id and k.keyword=?',$key);
+
+ $state=$this->db->query($sql);
+ $row=$state->fetchAll();
+ $sum=$row[0]['count'];
+ $select=$this->db->select();
+ $select->from('normalmetadata','*')->join('keyword','normalmetadata.id=keyword.id')->where('keyword.keyword=?',$key)->order('normalmetadata.title')->limitPage($page,$limit);
+ //$sql=$db->quoteInto('select m.* from metadata m,keyword k where m.id=k.id and k.keyword=?',$key);
+ //$state=$db->query($sql);
+ $this->view->metadata=$this->db->fetchAll($select);
+ $this->view->page=new Pagination($sum,$page,$limit);
+ }
+ }
+ /*
+ * 数据集序列浏览
+ */
+ function seriesAction()
+ {
+ $id = $this->_request->getParam('id');
+ if (empty($id)) $id=0;
+ if (!is_numeric($id))
+ {
+ $name=$id;
+ $id='';
+ }
+ $keyword=$this->_request->getParam('keyword');
+ if (empty($id)) {
+ if (!empty($name))
+ {
+ $where=$this->db->quoteInto('name = ?',$name);
+ $row=$this->db->fetchRow("select * from series where ".$where);
+ }
+ } else {
+ $where=$this->db->quoteInto('id = ?',$id);
+ $row=$this->db->fetchRow("select * from series where ".$where);
+ }
+ if (!empty($id) or !empty($name))
+ {
+ if (!$row) $this->_redirect('/data');
+ $id=$row['id'];
+ }
+ $page=(int)$this->_request->getParam('page');
+ if (empty($page)) $page=1;
+ $limit=10;
+ $offset=$limit*($page-1);
+ $state=$this->db->query('select s.id,name,count(*) from series s,dataseries d where d.sid=s.id group by s.id,s.name');
+ $this->view->serie=$state->fetchAll();
+ if ($id>0) {
+ //$where=$this->db->quoteInto('id = ?',$id);
+ //$row=$this->db->fetchRow("select * from series where ".$where);
+ $this->view->codename=$row['name'];
+ if (!empty($keyword))
+ {
+ $sql='select count(m.id) as count from normalmetadata m,dataseries d,keyword k where m.id=d.id and m.id=k.id and d.sid=? and k.keyword=?';
+ $row=$this->db->fetchAll($sql,array($id,$keyword));
+ $this->view->codename.="【关键词:".$keyword."】";
+ }else{
+ $sql='select count(m.id) as count from normalmetadata m,dataseries d where m.id=d.id and d.sid=?';
+ $row=$this->db->fetchAll($sql,array($id));
+ }
+ $sum=$row[0]['count'];
+ $select=$this->db->select();
+ $select->from('normalmetadata','*')->join('dataseries','normalmetadata.id=dataseries.id')->where('dataseries.sid=?',$id)->order('normalmetadata.title')->limitPage($page,$limit);
+ if (!empty($keyword)) $select->join('keyword','keyword.id=normalmetadata.id')->where('keyword.keyword=?',$keyword);
+ $this->view->metadata=$this->db->fetchAll($select);
+ $this->view->page=new Pagination($sum,$page,$limit);
+ //$this->view->showtools=($sum>$page)?true:false;
+ //$this->view->form=new SearchForm();
+ $sql=$this->db->quoteInto("select keyword,count(*) as count from (select t.keyword,t.id from keyword t left join dataseries d on t.id=d.id where t.keytype='place' and d.sid=?) as f group by keyword order by count desc limit 30",$id);
+ $state=$this->db->query($sql);
+ $row=$state->fetchAll();
+ $this->view->places=$row;
+ $this->view->seriesid=$id;
+ } else {
+ //提供全部数据集序列列表
+ }
+ }
+ /*
+ * 分类浏览模式
+ */
+ function categoryAction()
+ {
+ $page = $this->_request->getParam('page');
+ $code = (int)$this->_request->getParam('code');
+ $state=$this->db->query('select c.code,name,name_zh,count(*) from category c,categorycode cc where c.code=cc.code group by c.code,cc.name,cc.name_zh');
+ $this->view->category=$state->fetchAll();
+ if ($code>0 && $code<20) {
+ $where=$this->db->quoteInto('code = ?',$code);
+ $row=$this->db->fetchRow("select * from categorycode where ".$where);
+ $this->view->codename=(empty($row['name_zh'])?$row['name']:$row['name_zh']);
+ $sql='select count(m.id) from normalmetadata m left join category c on m.id=c.id where c.code=?';
+ $row=$this->db->fetchRow($sql,array($code));
+ $sum=$row['count'];
+ $select=$this->db->select();
+ $select->from('normalmetadata as m','*')->joinLeft('category as c','m.id=c.id')->where('c.code=?',$code)->order('m.title')->limitPage($page,$this->limit);
+ $this->view->metadata=$this->db->fetchAll($select);
+ $this->view->page=new Pagination($sum,$page,$this->limit);
+ } else {
+ //提供全部分类列表
+ }
+ }
+ /*
+ * 时间浏览方式
+ * todo:实现xml的缓存,基于时间的缓存(每天)?基于元数据修改的缓存,每次导入后都重新生成一次。
+ */
+ function timelineAction()
+ {
+ $fn="time1.xml";
+ $rows=$this->db->fetchAll("select ts_created from normalmetadata order by ts_created desc limit 1");
+ $last_update=strtotime($rows[0]['ts_created']);
+ if (!file_exists($fn) || (filemtime($fn)<$last_update))
+ {
+ $dateformat="M j Y";
+ $md = new MetadataTable();
+ $db=$md->getAdapter();
+ $state=$db->query('select id,uuid,description,title,timebegin,timeend from normalmetadata where timebegin is not null order by timebegin');
+ $rows=$state->fetchAll();
+ $timexml='
';
+ foreach($rows as $row) {
+ $timexml.='';
+ $desc_length=mb_strlen($row['description'],"UTF-8");
+ $desc=mb_substr($row['description'],0,($desc_length>300)?300:$desc_length,"UTF-8");
+ if ($desc_length>300) $desc.=" ...";
+ $timexml.=htmlspecialchars($desc);
+ $timexml.="\n";
+ }
+ $timexml.='';
+ $fp=fopen($fn,'w');
+ fwrite($fp,$timexml);
+ fclose($fp);
+ }
+ //$this->_helper->layout->disableLayout();
+ }
+ /*
+ * todo:空间浏览
+ */
+ function mapAction()
+ {
+ //use json & openlayers?
+ $id=(int)$this->_request->getParam('id');
+ if ($id>0) $this->view->params="/id/$id";
+ }
+ /*
+ * 产生geojson数据
+ */
+ function jsonAction()
+ {
+ $md=new MetadataTable();
+ $db=$md->getAdapter();
+ $id = (int)$this->_request->getParam('id');
+ $where='';
+ if (!empty($id)) { $where=' where id='.$id; }
+ $sql='select id,uuid,west,south,north,east,title from normalmetadata'.$where;
+ $state=$db->query($sql);
+ $rows=$state->fetchAll();
+ $geomd=new GeoMetaData();
+ foreach($rows as $row){
+ if ($id)
+ $box=new GeoBox($row['west'],$row['south'],$row['east'],$row['north']);
+ else
+ $box=new GeoBoxLine($row['west'],$row['south'],$row['east'],$row['north']);
+ $feature=new Geofeature();
+ $feature->id=$row['id'];
+ $feature->addProperties('title',$row['title']);
+ $feature->addProperties('uuid',$row['uuid']);
+ $feature->addProperties('id',$row['id']);
+ $feature->geometry=$box;
+ $geomd->addFeature($feature);
+ }
+ $this->_helper->json($geomd);
+ }
+ /*
+ * 时空动态浏览
+ */
+ function timemapAction()
+ {
+ $sql='select id,uuid,west,south,north,east,title,timebegin,timeend from normalmetadata where timebegin is not null';
+ $this->view->rows=$this->db->fetchAll($sql);
+ }
+ /*
+ * 返回XML源文件
+ */
+ function xmlAction()
+ {
+ $uuid=$this->_request->getParam('uuid');
+ $row=$this->db->fetchRow("select xml.data from xml left join metadata on xml.id=metadata.id where metadata.uuid=?",array($uuid));
+ $this->_helper->layout->disableLayout();
+ $this->_helper->viewRenderer->setNoRender();
+ $this->getResponse()->setHeader('Content-Type', 'text/xml')
+ ->setBody($row['data']);
+ }
+ function detailAction()
+ {
+ $id=(int)$this->_request->getParam('id');
+ $xml=new XmlTable();
+ $db=$xml->getAdapter();
+ $where=$db->quoteInto('id=?',$id);
+ $order='id desc';
+ $row=$xml->fetchRow($where,$order);
+ // Load the XML source
+ $xml = new DOMDocument;
+ $xml->loadXML($row->data);
+ $xsl = new DOMDocument;
+ $xsl->load($this->view->config->westdc->xsl);
+ // Configure the transformer
+ $proc = new XSLTProcessor;
+ $proc->importStyleSheet($xsl); // attach the xsl rules
+ $this->view->xml=$proc->transformToXML($xml);
+ //$this->_helper->layout->disableLayout();
+ //$this->_helper->viewRenderer->setNoRender();
+ //$this->getResponse()->setHeader('Content-Type', 'text/html')
+ // ->setBody($proc->transformToXML($xml));
+ }
+ function feedAction()
+ {
+ $feedArray = array(
+ 'title' => '中国西部环境与生态科学数据中心',
+ 'link' => 'http://'.$_SERVER['SERVER_NAME'].'/data/feed',
+ 'description' => '共享西部计划产生的数据',
+ 'language' => 'zh-CN',
+ 'charset' => 'utf-8',
+ 'published' => time(),
+ //'generator' => 'Zend Framework Zend_Feed',
+ 'entries' => array()
+ );
+ $sql="select * from normalmetadata order by ts_created desc";
+ $rs=$this->db->fetchAll($sql);
+ $feedArray['published']=strtotime($rs[0]['ts_created']);
+ foreach($rs as $r)
+ {
+ $feedArray['entries'][] = array(
+ 'title' => $r['title'],
+ 'link' => 'http://'.$_SERVER['SERVER_NAME'].'/data/' . $r['uuid'],
+ 'guid' => 'http://'.$_SERVER['SERVER_NAME'].'/data/' . $r['uuid'],
+ //'content'=>$r['description'],
+ 'description' => $r['description'],
+ 'lastUpdate' => strtotime($r['ts_created'])
+ );
+ }
+ $feed = Zend_Feed::importArray($feedArray,'rss');
+ $this->_helper->layout->disableLayout();
+ $this->_helper->viewRenderer->setNoRender();
+ $feed->send();
+ }
+ /*
+ * todo: search
+ */
+ function searchAction()
+ {
+ $this->view->addHelperPath('helper','Zend_View_Helper_');
+ $form=new SearchForm();
+ $this->view->form=$form;
+ //$form->submit->setLabel('快速搜索');
+ $key=$this->_request->getParam('q');
+ if (!empty($key)) {
+ //$formData=$this->_request->getPost();
+ //include_once("bcspamblock.php");
+ //if ($form->isValid($formData)) {
+ $page=@(int)$this->_request->getParam('page');
+ if (empty($page)) $page=1;
+ $offset=$this->limit*($page-1);
+ $search=new Search($key);
+ $where=$search->sql_expr(array("title","description"));
+ $row=$this->db->fetchAll("select count(*) from normalmetadata where ".$where);
+ $sum=$row[0]['count'];
+ $sql="select uuid,title,id,description from normalmetadata where ".$where." order by title limit ? offset ?";
+ $this->view->metadata=$this->db->fetchAll($sql,array($this->limit,$offset));
+ $this->view->page=new Pagination($sum,$page,$this->limit);
+ $this->view->key=$key;
+ }
+ }
+ /*
+ * todo: 高级搜索
+ */
+ function advancesearchAction()
+ {
+ $this->view->addHelperPath('helper','Zend_View_Helper_');
+ //$form=new SearchForm();
+ //$this->view->form=$form;
+
+ $md=new MetadataTable();
+ $db=$md->getAdapter();
+ $page=(int)$this->_request->getParam('page');
+ if (empty($page)) $page=1;
+ $limit=10;
+ $offset=$limit*($page-1);
+ $key=$this->_request->getParam('q');
+ $n=(int)$this->_request->getParam('n');
+ $s=(int)$this->_request->getParam('s');
+ $e=(int)$this->_request->getParam('e');
+ $w=(int)$this->_request->getParam('w');
+ if (!(empty($n) && empty($key))) {
+ if (empty($n)) $n=90;
+ if (empty($s)) $s=-90;
+ if (empty($e)) $e=180;
+ if (empty($w)) $w=-180;
+ $start=$this->_request->getParam('start');
+ $end=$this->_request->getParam('end');
+ if (!empty($key)) {
+ $sql='select count(*) from normalmetadata where east and west>? and north and south>? and (title ilike ? or description ilike ?)';
+ $row=$db->fetchAll($sql,array($e,$w,$n,$s,'%'.$key.'%','%'.$key.'%'));
+ } else {
+ $sql='select count(*) from normalmetadata where east and west>? and north and south>?';
+ $row=$db->fetchAll($sql,array($e,$w,$n,$s));
+ }
+ $sum=$row[0]['count'];
+ $select=$db->select();
+ $select->from('normalmetadata','*')->where('east',$e)->where('west>?',$w)->where('north',$n)->where('south>?',$s);
+ if (!empty($key)) $select->where('(title ilike ? or description ilike ?)','%'.$key.'%');
+ $select->order('title')->limit($limit,$offset);
+ $this->view->metadata = $db->fetchAll($select);
+ $this->view->page=new Pagination($sum,$page);
+ $this->view->key=$key;
+ }
+ }
+ /*
+ * 根据id或uuid来查看元数据
+ * id为一组数字,uuid为唯一标识符
+ */
+ function viewAction()
+ {
+ $id = (int)$this->_request->getParam('id');
+ $sql="select m.*,s.status,g.id as gid,t.filename,i.doi as datadoi,i.authors,i.author_en,i.publisher,i.publisher_en, date_part('year',i.ts_published) as publish_year from normalmetadata m left join mdstatus s on m.uuid=s.uuid
+ left join thumbnail t on t.id=m.id left join geonetworkmetadata g on m.uuid=g.uuid left join datadoi i on i.uuid=m.uuid where ";
+ if (empty($id)) {
+ $uuid = $this->_request->getParam('uuid');
+ if (empty($uuid)) $this->_redirect('/data');
+ $where=$this->db->quoteInto('m.uuid = ?',$uuid);
+ } else {
+ $where=$this->db->quoteInto('m.id = ?',$id);
+ }
+ $sql.=$where;
+ $this->db->setFetchMode(Zend_Db::FETCH_OBJ);
+ $row=$this->db->fetchRow($sql);
+ if (!$row) $this->_redirect('/data');
+ $id=$row->id;
+ $uuid=$row->uuid;
+ $this->view->metadata=$row;
+ //提前对表格进行预处理
+ $wiki=new WikiFormat();
+ $this->view->metadata->description=$wiki->parseTable($this->view->escape($row->description));
+ //处理外部链接
+ $this->view->metadata->description=preg_replace('/\[\s*(http:\/\/.+?)\s+(.*?)\]/m','
$2',$this->view->metadata->description);
+ $this->view->thumburl='/gndata/'.sprintf('%05d',floor(($row->gid+0.1)/100)*100).'-'.sprintf('%05d',ceil(($row->gid+0.1)/100)*100-1)."/".$row->gid;
+ $this->view->thumburl.='/public/'.str_replace('_s.','.',$row->filename);
+ if (is_numeric($row->projection))
+ {
+ $sql="select proj4text from spatial_ref_sys where auth_srid=?";
+ $rs=$this->db->fetchRow($sql,array((int)$row->projection));
+ if ($rs) $this->view->projection=$rs->proj4text;
+ }
+
+ $sql = "select * from keyword where id=? order by keytype,ts_created";
+ $sth = $this->db->prepare($sql);
+ $rs = $sth->execute(array($id));
+ $this->view->keys = $sth->fetchAll(PDO::FETCH_BOTH);
+
+ $sql='select c.code,cc.name,cc.name_zh from category c,categorycode cc where c.code=cc.code and c.id= ?';
+ $state=$this->db->query($sql,array($id));
+ $this->view->category=$state->fetchAll();
+ $sql='select s.name,s.id from dataseries d, series s where d.sid=s.id and d.id= ?';
+ $state=$this->db->query($sql,array($id));
+ $this->view->series=$state->fetchAll();
+ $sql=$this->db->quoteInto("select count(*) as count from dataorder where uuid=?",$uuid);
+ $row=$this->db->fetchRow($sql);
+ $this->view->downloaded=$row->count;
+ //update the viewed times
+ $sql="update mdstat set viewed=viewed+1 where uuid=?";
+ $this->db->query($sql,array($uuid));
+ $sql=$this->db->quoteInto("select viewed from mdstat where uuid=?",$uuid);
+ $row=$this->db->fetchRow($sql);
+ $this->view->viewed=$row->viewed;
+ //数据文档
+ $sql="select linkage from onlineresource where uuid=? and description='数据说明文档'";
+ $sql=$this->db->quoteInto($sql,$uuid);
+ $row=$this->db->fetchRow($sql);
+ if ($row) $this->view->doc=$row->linkage;
+ //相关资源
+ $sql="select * from onlineresource where uuid=? and (linkage not like '%sanjiangyuan.org.cn%') and name<>'元数据地址'";
+ $sql=$this->db->quoteInto($sql,$uuid);
+ $this->view->resources=$this->db->fetchAll($sql);
+ //相关文献:作者建议
+ $sql="select r.* from reference r left join mdref m on m.refid=r.id where m.uuid=? and m.reftype=0 order by m.place";
+ $sql=$this->db->quoteInto($sql,$uuid);
$this->view->ref=$this->db->fetchAll($sql);
- //用户发表文献
- $sql="select r.* from reference r left join mdref m on m.refid=r.id where m.uuid=? and m.reftype=1";
- $sql=$this->db->quoteInto($sql,$uuid);
- $this->view->userref=$this->db->fetchAll($sql);
- //多篇引用形式:hiwater
- $sql="select r.* from reference r left join mdref m on m.refid=r.id where m.uuid=? and m.reftype=3 order by m.place";
- $sql=$this->db->quoteInto($sql,$uuid);
- $this->view->mcitation=$this->db->fetchAll($sql);
- //相关用户
- $sql="select p.email,p.individual,p.organisation,r.role from role r left join responsible p on r.resid=p.id where r.uuid=? order by r.role,r.id";
- $this->view->authors=$this->db->fetchAll($sql,array($uuid));
- //数据限制信息
- $sql="select u.* from uselimit u left join mdlimit m on u.id=m.lid where m.uuid=?";
- $this->view->uselimits=$this->db->fetchAll($sql,array($uuid));
- //相关下载
- $sql = "select d.uuid,count(distinct(d.userid)) as downtimes,m.title from dataorder d left join metadata m on d.uuid=m.uuid where d.userid in (
- select distinct(userid) from dataorder where uuid=? and status in (0,5)
- ) and d.uuid<>? and length(m.title)>2 group by d.uuid,m.title order by count(distinct(d.userid)) desc limit 10;";
- $this->view->downlists = $this->db->fetchAll($sql,array($uuid,$uuid));
- //相关文献
- $sql="select a.*,array_to_string(array(select author from knl_author t where t.item_id=a.item_id order by place asc),'; ') as author from knl_article a where (";
- foreach($this->view->keys as $k)
- {
- if ($k['keytype']=='theme')
- {
- $sql.=" a.title like '%".$k['keyword']."%' or ";
- }
- }
- $sql.=" 1<>1) order by a.ts_created desc limit 10";
- $this->view->literature=$this->db->fetchAll($sql);
- //相关元数据,根据同名关键词实现
- $sql="select distinct(md.uuid),md.title from keyword kw left join normalmetadata md on kw.id=md.id where kw.keyword in (select k.keyword from keyword k left join metadata m on k.id=m.id where m.id=? and k.keytype='theme') and kw.id<>? limit 10";
- $this->view->related=$this->db->fetchAll($sql,array($id,$id));
- //用户下载记录
- $sql = "select o.ts_created,m.uuid,u.realname,u.unit,oa.project as onlineproject, fa.project as offlineproject
- from dataorder as o left join metadata as m on o.uuid = m.uuid left join users as u on o.userid=u.id
- left join onlineapp oa on o.onlineappid=oa.id left join offlineapp fa on o.offlineappid=fa.id
- where m.uuid = '$uuid' and (o.status=0 or o.status=5) and u.realname IS NOT NULL order by o.ts_created desc limit 10";
- $this->view->downhistory=$this->db->fetchAll($sql);
- //数据附件
- $sql = $this->db->quoteInto("select m.id,a.realname from mdattach m left join attachments a on m.id=a.id where m.uuid=?",$uuid);
- $this->view->attachments = $this->db->fetchAll($sql);
- //数据版本
- $sql = "SELECT count(id) as c FROM mdversion WHERE uuid=? AND changelog IS NOT NULL";
- $sth = $this->db->prepare($sql);
- $sth->execute(array($uuid));
- $row = $sth->fetch();
- $this->view->version = $row;
- $archives = new Archive($this->db);
- $data_archives = $archives->getArchiveByUUID($uuid);
- if(!empty($data_archives))
- {
- foreach($data_archives as $k=>$v)
- {
- $data_archives[$k]['url'] = $archives->getArchiveUrlByCid($v['id']);
- }
- }
- $this->view->data_archives = $data_archives;
- //支持项目
- include_once("data/Fund.php");
- $fund = new Fund($this->db);
- $this->view->fund = $fund->fetch($uuid);
-
- //判断特殊数据服务
- $this->view->dataService= $this->checkDataService($uuid);
-
- //自动跳转
- $sql="select s.* from datasource d left join source s on d.sourceid=s.id where d.uuid=?";
- $row=$this->db->fetchRow($this->db->quoteInto($sql,$uuid));
- $jump=$this->_request->getParam('jump');
- if ($jump=="") $jump=1;//默认跳转
- if (@$row->has_pages && ($jump==1))
- {
- $this->_helper->viewRenderer($row->code.'/view',null,true);
- }
- } //viewAction
-
- //检查特殊数据服务是否存在
- private function checkDataService($uuid)
- {
- $order = new \Order\mount\OrderOperate();
- $service = $order->getDataService($uuid);
-
- if(empty($service))
- {
- return NULL;
- }else{
- if($order->checkOrderHas($uuid))
- {
- return NULL;
- }else{
- return $service;
- }
- }
- }//checkDataService
-
- //特殊数据服务
- public function dataserviceAction()
- {
-
- $uuid = $this->_getParam('uuid');
-
- if(empty($uuid))
- {
- $this->jsonexit(array("error"=>"参数错误"));
- }
-
- $dataservice = new \data\DataService();
- $info = $dataservice->get($uuid);
-
-
- //暂时只有wsn
- {
- $this->_helper->layout->disableLayout();
- $this->_helper->viewRenderer->setNoRender();
-
- $data = array(
- "type"=>"wsn", //服务类型
- "info"=>$info, //信息 dataservice 表中的字段
- "callback"=>"westdc.dataservice.wsn.request()", //成功后的js回调函数
- );
-
- $data['data'] = $dataservice->getWsnData("site",$uuid);
-
- if(empty($data['data']))
- {
- $this->jsonexit(array("error"=>'数据接口错误,请联系管理员'));
- return true;
- }
-
- if(!is_array($data['data']))
- {
- $this->jsonexit(array("error"=>$data['data']));
- return true;
- }
-
- $this->_helper->layout->disableLayout();
- $this->_helper->viewRenderer->setNoRender();
-
- $this->jsonexit($data);
- }
- // WSN end
-
- }
-
- public function wsnAction()
- {
- $this->_helper->layout->disableLayout();
- $this->_helper->viewRenderer->setNoRender();
-
- $type = $this->_getParam('type');
- $uuid = $this->_getParam("uuid");
-
- $dataservice = new DataService();
-
- if($type == 'var')
- {
- $sites = array(
- "chk"=>$this->_getParam("siteid")
- );
-
- $info = $dataservice->get($uuid);
-
- $data = array(
- "type"=>"wsn", //服务类型
- "info"=>$info, //信息 dataservice 表中的字段
- "callback"=>"westdc.dataservice.wsn.Submit()", //成功后的js回调函数
- );
-
+ //用户发表文献
+ $sql="select r.* from reference r left join mdref m on m.refid=r.id where m.uuid=? and m.reftype=1 order by r.language asc,r.year desc,r.ts_created desc limit 15";
+ $sql=$this->db->quoteInto($sql,$uuid);
+ $this->view->userref=$this->db->fetchAll($sql);
+ //多篇引用形式:hiwater
+ $sql="select r.* from reference r left join mdref m on m.refid=r.id where m.uuid=? and m.reftype=3 order by m.place";
+ $sql=$this->db->quoteInto($sql,$uuid);
+ $this->view->mcitation=$this->db->fetchAll($sql);
+ //相关用户
+ $sql="select p.email,p.individual,p.organisation,r.role from role r left join responsible p on r.resid=p.id where r.uuid=? order by r.role,r.id";
+ $this->view->authors=$this->db->fetchAll($sql,array($uuid));
+ //数据限制信息
+ $sql="select u.* from uselimit u left join mdlimit m on u.id=m.lid where m.uuid=?";
+ $this->view->uselimits=$this->db->fetchAll($sql,array($uuid));
+ //相关下载
+ $sql = "select d.uuid,count(distinct(d.userid)) as downtimes,m.title from dataorder d left join metadata m on d.uuid=m.uuid where d.userid in (
+ select distinct(userid) from dataorder where uuid=? and status in (0,5)
+ ) and d.uuid<>? and length(m.title)>2 group by d.uuid,m.title order by count(distinct(d.userid)) desc limit 10;";
+ $this->view->downlists = $this->db->fetchAll($sql,array($uuid,$uuid));
+ //相关文献
+ $sql="select a.*,array_to_string(array(select author from knl_author t where t.item_id=a.item_id order by place asc),'; ') as author from knl_article a where (";
+ foreach($this->view->keys as $k)
+ {
+ if ($k['keytype']=='theme')
+ {
+ $sql.=" a.title like '%".$k['keyword']."%' or ";
+ }
+ }
+ $sql.=" 1<>1) order by a.ts_created desc limit 10";
+ $this->view->literature=$this->db->fetchAll($sql);
+ //相关元数据,根据同名关键词实现
+ $sql="select distinct(md.uuid),md.title from keyword kw left join normalmetadata md on kw.id=md.id where kw.keyword in (select k.keyword from keyword k left join metadata m on k.id=m.id where m.id=? and k.keytype='theme') and kw.id<>? limit 10";
+ $this->view->related=$this->db->fetchAll($sql,array($id,$id));
+ //用户下载记录
+ $sql = "select o.ts_created,m.uuid,u.realname,u.unit,oa.project as onlineproject, fa.project as offlineproject
+ from dataorder as o left join metadata as m on o.uuid = m.uuid left join users as u on o.userid=u.id
+ left join onlineapp oa on o.onlineappid=oa.id left join offlineapp fa on o.offlineappid=fa.id
+ where m.uuid = '$uuid' and (o.status=0 or o.status=5) and u.realname IS NOT NULL order by o.ts_created desc limit 10";
+ $this->view->downhistory=$this->db->fetchAll($sql);
+ //数据附件
+ $sql = $this->db->quoteInto("select m.id,a.realname from mdattach m left join attachments a on m.id=a.id where m.uuid=?",$uuid);
+ $this->view->attachments = $this->db->fetchAll($sql);
+ //数据版本
+ $sql = "SELECT count(id) as c FROM mdversion WHERE uuid=? AND changelog IS NOT NULL";
+ $sth = $this->db->prepare($sql);
+ $sth->execute(array($uuid));
+ $row = $sth->fetch();
+ $this->view->version = $row;
+ $archives = new Archive($this->db);
+ $data_archives = $archives->getArchiveByUUID($uuid);
+ if(!empty($data_archives))
+ {
+ foreach($data_archives as $k=>$v)
+ {
+ $data_archives[$k]['url'] = $archives->getArchiveUrlByCid($v['id']);
+ }
+ }
+ $this->view->data_archives = $data_archives;
+ //支持项目
+ include_once("data/Fund.php");
+ $fund = new Fund($this->db);
+ $this->view->fund = $fund->fetch($uuid);
+
+ //判断特殊数据服务
+ $this->view->dataService= $this->checkDataService($uuid);
+
+ //自动跳转
+ $sql="select s.* from datasource d left join source s on d.sourceid=s.id where d.uuid=?";
+ $row=$this->db->fetchRow($this->db->quoteInto($sql,$uuid));
+ $jump=$this->_request->getParam('jump');
+ if ($jump=="") $jump=1;//默认跳转
+ if (@$row->has_pages && ($jump==1))
+ {
+ $this->_helper->viewRenderer($row->code.'/view',null,true);
+ }
+ } //viewAction
+
+ //检查特殊数据服务是否存在
+ private function checkDataService($uuid)
+ {
+ $order = new \Order\Mount\OrderOperate();
+ $service = $order->getDataService($uuid);
+
+ if(empty($service))
+ {
+ return NULL;
+ }else{
+ if($order->checkOrderHas($uuid))
+ {
+ return NULL;
+ }else{
+ return $service;
+ }
+ }
+ }//checkDataService
+
+ //特殊数据服务
+ public function dataserviceAction()
+ {
+
+ $uuid = $this->_getParam('uuid');
+
+ if(empty($uuid))
+ {
+ $this->jsonexit(array("error"=>"参数错误"));
+ }
+
+ $dataservice = new \data\DataService();
+ $info = $dataservice->get($uuid);
+
+
+ //暂时只有wsn
+ {
+ $this->_helper->layout->disableLayout();
+ $this->_helper->viewRenderer->setNoRender();
+
+ $data = array(
+ "type"=>"wsn", //服务类型
+ "info"=>$info, //信息 dataservice 表中的字段
+ "callback"=>"westdc.dataservice.wsn.request()", //成功后的js回调函数
+ );
+
+ $data['data'] = $dataservice->getWsnData("site",$uuid);
+
+ if(empty($data['data']))
+ {
+ $this->jsonexit(array("error"=>'数据接口错误,请联系管理员'));
+ return true;
+ }
+
+ if(!is_array($data['data']))
+ {
+ $this->jsonexit(array("error"=>$data['data']));
+ return true;
+ }
+
+ $this->_helper->layout->disableLayout();
+ $this->_helper->viewRenderer->setNoRender();
+
+ $this->jsonexit($data);
+ }
+ // WSN end
+
+ }
+
+ public function wsnAction()
+ {
+ $this->_helper->layout->disableLayout();
+ $this->_helper->viewRenderer->setNoRender();
+
+ $type = $this->_getParam('type');
+ $uuid = $this->_getParam("uuid");
+
+ $dataservice = new DataService();
+
+ if($type == 'var')
+ {
+ $sites = array(
+ "chk"=>$this->_getParam("siteid")
+ );
+
+ $info = $dataservice->get($uuid);
+
+ $data = array(
+ "type"=>"wsn", //服务类型
+ "info"=>$info, //信息 dataservice 表中的字段
+ "callback"=>"westdc.dataservice.wsn.Submit()", //成功后的js回调函数
+ );
+
$data['data'] = $dataservice->getWsnData("var",$uuid,$sites);
-
- if(empty($data['data']))
- {
- $this->jsonexit(array("error"=>'数据接口错误,请联系管理员'));
- return true;
- }
-
- if(!is_array($data['data']))
- {
- $this->jsonexit(array("error"=>$data['data']));
- return true;
- }
-
- $this->jsonexit($data);
- return true;
- }
-
- if($type == "submit")
- {
- $info = $dataservice->get($uuid);
- $param = array(
- "site" => $this->_getParam("site"),
- );
-
- $data = array(
- "type"=>"wsn", //服务类型
- "info"=>$info, //信息 dataservice 表中的字段
- "callback"=>"westdc.dataservice.wsn.Submited()", //成功后的js回调函数
- );
-
+
+ if(empty($data['data']))
+ {
+ $this->jsonexit(array("error"=>'数据接口错误,请联系管理员'));
+ return true;
+ }
+
+ if(!is_array($data['data']))
+ {
+ $this->jsonexit(array("error"=>$data['data']));
+ return true;
+ }
+
+ $this->jsonexit($data);
+ return true;
+ }
+
+ if($type == "submit")
+ {
+ $info = $dataservice->get($uuid);
+ $param = array(
+ "site" => $this->_getParam("site"),
+ );
+
+ $data = array(
+ "type"=>"wsn", //服务类型
+ "info"=>$info, //信息 dataservice 表中的字段
+ "callback"=>"westdc.dataservice.wsn.Submited()", //成功后的js回调函数
+ );
+
$data['data'] = $dataservice->getWsnData("submit",$uuid,$param);
-
-
- if(empty($data['data']))
- {
- $this->jsonexit(array("error"=>'数据接口错误,请联系管理员'));
- return true;
- }
-
- if(!is_array($data['data']))
- {
- $this->jsonexit(array("error"=>$data['data']));
- return true;
- }
-
- $order = new Order();
- $status = $order->addOrder($uuid,json_encode($data['data']['site'],JSON_NUMERIC_CHECK));
- if($status !== true)
- {
- $this->jsonexit(array("error"=>$status));
- return true;
- }
-
- $this->jsonexit($data);
- return true;
- }
- }
-
-
-
- /*
- getversionAction() 获取数据版本
- */
- function getversionAction(){
-
- $ac = $this->_getParam('ac');
- $uuid = $this->_getParam('uuid');
-
- if($ac == 'list')
- {
- $this->_helper->layout->disableLayout();
- $this->_helper->viewRenderer->setNoRender();
-
- $sql = "SELECT v.changelog,v.ts_created,u.username FROM mdversion v
- LEFT JOIN users u ON v.userid=u.id
- WHERE v.uuid=? AND v.changelog IS NOT NULL
- ORDER BY v.ts_created DESC";
-
- $sth = $this->db->prepare($sql);
- $sth->execute(array($uuid));
- $rows = $sth->fetchAll();
-
- if($rows)
- {
- foreach($rows as $k=>$v)
- {
- $rows[$k]['ts_created'] = date("Y-m-d H:i",strtotime($v['ts_created']));
- $rows[$k]['changelog'] = str_replace("\n","
",$v['changelog']);
- }
- $data = array("list"=>$rows);
- $this->jsonexit($data);
- return true;
- }else{
- $data = array("error"=>"处理中出现错误");
- $this->jsonexit($data);
- return true;
- }
- }
-
- }//getversionAction()
-
- function replace($string){
- $patterns = array("/\"/i","/\'/i");
- $replacements = array("“","‘");
- ksort($patterns);
- ksort($replacements);
- return preg_replace($patterns, $replacements, $string);
- }//引号替换
-
-
- function postcommentAction(){
- $this->_helper->layout->disableLayout();
- $this->_helper->viewRenderer->setNoRender();
- try{
- $auth = Zend_Auth::getInstance();
- if($auth->hasIdentity())
- {
- $user = $auth->getIdentity();
- $userid = $user->id;
- }else
- {
- $userid=0;
- }
-
- $author = mb_substr($this->replace(trim($this->_request->getParam('author'))),0,30,'UTF-8');
- $email = mb_substr($this->replace(trim($this->_request->getParam('email'))),0,60,'UTF-8');
- $url = mb_substr($this->replace(trim($this->_request->getParam('url'))),0,60,'UTF-8');
- $content = $this->replace(trim($this->_request->getParam('content')));
- $vdcode = mb_substr($this->replace(trim($this->_request->getParam('vdcode'))),0,4,'UTF-8');
-
- if(empty($author))
- {
- echo "请输入您的名字";
- exit();
- }
-
- if(strlen($author)<3) exit("姓名长度不得少于2个汉字 :)");
-
- if(empty($email))
- {
- echo "请输入您的电子邮箱地址";
- exit();
- }
-
- if(strlen($email)<4) exit("Email长度太短,请填写正确的Email :)");
-
- if(!preg_match("/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/i",$email))
- {
- echo "Email格式不正确";
- exit();
- }
-
- if(strlen($content)<5) exit("评论长度不得少于3个汉字 :)");
-
- if(preg_match("/script/i",$content))
- {
- $content = preg_replace("/script/i","script",$content);
- }
-
- if(preg_match("/<|>/",$content))
- {
- $data=array(
- '<'=>'<',
- '>'=>'>',
- );
-
- $patterns = array();
- $replacements = array();
- foreach($data as $k=>$v)
- {
- $patterns[]='/'.$k.'/i';
- $replacements[]=$v;
- }
- ksort($patterns);
- ksort($replacements);
- $content=preg_replace($patterns, $replacements, $content);
- if(!empty($url))
- {
- $url=preg_replace($patterns, $replacements, $url);
- }
- }
-
- if(preg_match("/script/i",$url))
- {
- $url = preg_replace("/script/i","script",$url);
- }
-
- if(!preg_match("/http:\/\//",$url))
- {
- $url = "http://".$url;
- }
-
- $uuid = trim($this->_request->getParam('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))
- {
- echo "参数错误!";
- exit();
- }
-
- if(strtolower($vdcode) != $_SESSION['vdcodes'])
- {
- echo "验证码错误,请重新输入";
- exit();
- }
-
-
- $data = array(
- 'uuid' => $uuid,
- 'uid' => $userid,
- 'author' => $author,
- 'email' => $email,
- 'url' => $url,
- 'ip' => $_SERVER['REMOTE_ADDR'],
- 'content' => $content,
- 'agent' => $_SERVER['HTTP_USER_AGENT'],
- 'type' => 'comment'
- );
-
- $sql = "INSERT INTO comments (author,email,url,ip,content,agent,type,uuid,userid) VALUES (?,?,?,?,?,?,?,?,?)";
- $sth = $this->db->prepare($sql);
- $exec = $sth->execute(array($data['author'],$data['email'],$data['url'],$data['ip'],$data['content'],$data['agent'],$data['type'],$data['uuid'],$data['uid']));
-
- if($exec)
- {
- $sql = "SELECT u.email FROM mdauthor au
- LEFT JOIN users u on au.userid=u.id
- WHERE au.uuid='$uuid'";
- $sth = $this->db->query($sql);
- $rows = $sth->fetchAll();
-
- @$mailtp=new EmailText(
- $this->db,
- 'data-comment-note',
- array(
- 'user' =>$user->username,
- 'uuid' =>$data['uuid'],
- 'title' =>$this->replace(trim($this->_request->getParam('mdtitle'))),
- 'content'=>$content
- )
- );
- @$mail=new WestdcMailer($this->view->config->smtp);
- @$mail->setBodyText($mailtp->getBody());
- @$mail->setFrom($this->view->config->service->email,'西部数据中心服务组');
- @$mail->addTo($this->view->config->service->email);
- if(is_array($rows) && count($rows)>0)
- {
- foreach($rows as $v)
- {
- @$mail->addTo($v['email']);
- }
- }
- @$mail->setSubject($mailtp->getSubject());
- @$mail->send();
- $msg = "用户".$user->username."对元数据《".$this->replace(trim($this->_request->getParam('mdtitle')))."》进行了评论,点击查看";
- include_once("message.php");
- message::post($this->db,0,-1,"收到新数据评论",$msg);
- echo "评论成功";
- exit();
- }else
- {
- echo "评论失败,请重试 :)";
- exit();
- }
- }catch(Exception $e){
- echo "出错了,请稍后再试";
- exit();
- }
- }//ajax评论
-
-
- /*
- * 数据评论,根据UUID读取
- */
- function commentAction()
- {
- $this->_helper->layout->disableLayout();
- $this->_helper->viewRenderer->setNoRender();
- $uuid=$this->_request->getParam('uuid');
- if (empty($uuid)) die();
- $sql="select * from comments where uuid=? AND reply=0 order by id desc";
- $comments=$this->db->fetchAll($sql,array($uuid));
-
- $paginator = Zend_Paginator::factory($comments);
- $paginator->setCurrentPageNumber($this->_getParam('page'));
- $paginator->setItemCountPerPage(5);
- $paginator->setView($this->view);
- Zend_View_Helper_PaginationControl::setDefaultViewPartial('data/pagination_ajax.phtml');
-
- include_once("Avatar.php");
- $avatar = new Avatar();
- if ($paginator)
- {
- foreach($paginator as $c)
- {
- //$author=$this->view->escape($c['author']);
- $sql = "SELECT cr.id,cr.content as body,cr.reply,u.username,cr.ts_created,u.usertype,u.email as email,
- (SELECT au.uuid FROM mdauthor au WHERE au.userid=u.id AND au.uuid='$uuid') as uuid
- FROM comments cr
- LEFT JOIN users u ON cr.userid=u.id
- WHERE cr.reply=?";
- $sth = $this->db->prepare($sql);
- $sth->execute(array($c['id']));
- $replys = $sth->fetchAll();
- $replyhtml = "";
- if(!empty($replys) || count($replys)>0)
- {
- foreach($replys as $v)
- {
- $usertype = "";
- $color = "";
- if($v['usertype'] == "administrator")
- {
- $usertype = "[管理员]";
- $color="#009d00";
- }
- if($v['uuid'] == $uuid)
- {
- $usertype = "[数据作者]";
- $color="#add2e9";
- }
- if(!empty($color))
- {
- $color = 'background:'.$color.';color:#FFFFFF;';
- }
- $img = $avatar->Get($v['email'],48);
- $replyhtml .='
-
- ';
-
- }
- }
-
- $img = $avatar->Get($c['email'],64);
- //$img = '
';
-
- $author = $c['author'];
- $author = ($c['url'])?'
'.$author.'':$author;
- $author = ''.$author."";
- $time = '发表于'.date('Y-m-d H:i:s',strtotime($c['ts_created'])).'';
- print '
-
- ';
- }
- echo '
'.$paginator.'
';
- }//else echo "
No comments.";
- }//评论列表
-
- /**
- * 判断用户是否填写了申请信息
- * @param string $uuid
- * @param int $userid
- */
- function todownloadAction() {
-
- $this->view->pageID = "account-dataorder";
-
- $this->_helper->viewRenderer('onlineapp-download');
-
- $this->view->uuid = $uuid = $this->_request->getParam('uuid');
-
- $auth = Zend_Auth::getInstance();
- if (!$auth->hasIdentity())
- {
- $this->view->AlertType = "alert-error";
- $this->view->msg = "请先登录您的账户后进行下载,页面将自动跳转";
- $this->view->jump_url = '/account/login/?href=/data/todownload/uuid/'.$uuid;
- return true;
- }
-
- if(empty($uuid))
- {
- $this->view->AlertType = "alert-error";
- $this->view->msg = "参数错误!";
- $this->view->jump_url = "/data";
- return true;
- }
-
- $this->view->projectType = array(
- "请选择项目类型" => "",
- "国家973计划项目课题" => "国家973计划项目课题",
- "国家863计划课题"=>"国家863计划课题",
- "国家级科技支撑课题" => "国家级科技支撑课题",
- "国家级科技重大专项" => "国家级科技重大专项",
- "国家级国家重大工程" => "国家级国家重大工程",
- "国家级国家自然科学基金" => "国家级国家自然科学基金",
- "国际合作项目"=>"国际合作项目",
- "省部级项目" => "省部级项目",
- "其他项目工程" => "其他项目工程",
- );
-
- $userid = Zend_Auth::getInstance()->getIdentity()->id;
-
- $submit = $this->_getParam('submit');
- if(!empty($submit)){
-
- $datas = array();
- $datas['realname'] = $this->_request->getParam('realname');
- $datas['unit'] = $this->_request->getParam('unit');
- $datas['phone'] = $this->_request->getParam('phone');
- $datas['address'] = $this->_request->getParam('address');
- $datas['postcode'] = $this->_request->getParam('postcode');
- $datas['email'] = $this->_request->getParam('email');
- $datas['project'] = $this->_request->getParam('project');
- $datas['project_id'] = $this->_request->getParam('project_id');
- $datas['project_type'] = $this->_request->getParam('project_type');
- $datas['project_title'] = $this->_request->getParam('project_title');
- $datas['project_leader']= $this->_request->getParam('project_leader');
-
- $this->view->info = $datas;
-
- $this->view->AlertType = "alert-error";
-
- foreach($datas as $k=>$v)
- {
- if(empty($v))
- {
- $this->view->error = "每一项内容都需要填写";
- return true;
- }
- }
-
- if(!is_numeric($datas['postcode']))
- {
- $this->view->error = "联系电话和邮政编码请填写数字";
- return true;
- }
-
- if(!preg_match("/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/i",$datas['email']))
- {
- $this->view->error = "请填写正确的email地址";
- return true;
- }
-
- if(mb_strlen($datas['project'],"utf-8")<8)
- {
- $this->view->error = "项目介绍内容不少于8个字符";
- return true;
- }
-
- if(preg_match('/^\d+$/',$datas['project']))
- {
- $this->view->error = "请输入有意义的项目介绍内容";
- return true;
- }
-
- $data = array(
- 'userid' => $userid,
- 'username' => $datas['realname'],
- 'unit' => $datas['unit'],
- 'phone' => $datas['phone'],
- 'address' => $datas['address'],
- 'postcode' => $datas['postcode'],
- 'project' => $datas['project'],
- 'uuid' =>$uuid,
- 'email' =>$datas['email'],
- 'project_id'=>$datas['project_id'],
- 'project_title'=>$datas['project_title'],
- 'project_type'=>$datas['project_type'],
- 'project_leader'=>$datas['project_leader']
- );
-
- if($this->db->insert('onlineapp',$data))
- {
- $select = "select id from onlineapp where userid='$userid' order by id desc";
- $re=$this->db->query($select);
- $row=$re->fetch();
-
- $this->view->AlertType = "alert-success";
- $this->view->jump_url = '/data/download/uuid/'.$uuid.'/onlineappid/'.$row['id'];
- $this->view->msg = "您的信息已经提交成功,可以进行下载。请等待页面自动跳转,
view->jump_url."\">或点击这里进入下载页面";
-
- $msg = "用户{$data['username']} 填写了在线数据申请表
查看详细";
- $title = "用户 {$data['username']} 申请了在线下载数据";
- include_once("message.php");
- message::post($this->db,0,-1,$title,$msg);
-
- return true;
- }
- else {
- $this->view->AlertType = "alert-error";
- $this->view->error = "申请失败,请稍后重新尝试";
- $this->view->info = $data;
- return true;
- }
-
- return true;
- }else{
-
- $testsql="select * from onlineapp where userid='$userid' and uuid='$uuid' order by id desc";
- $result=$this->db->query($testsql);
- $rows = $result->fetch();
- if (empty($rows['id']))
- {
- include_once("Users.php");
- $usr = new Users($this->db);
- $this->view->info = $usr->getUserInfo($userid);
- return true;
- }
- else
- {
- $datas['realname'] = $rows['username'];
- $datas['unit'] = $rows['unit'];
- $datas['phone'] = $rows['phone'];
- $datas['address'] = $rows['address'];
- $datas['postcode'] = $rows['postcode'];
- $datas['email'] = $rows['email'];
- $datas['project'] = $rows['project'];
- $datas['project_id'] = $rows['project_id'];
- $datas['project_type'] = $rows['project_type'];
- $datas['project_title'] = $rows['project_title'];
- $datas['project_leader'] = $rows['project_leader'];
- $this->view->info = $datas;
- return true;
- }
- }
-
- return true;
-
- $userid=Zend_Auth::getInstance()->getIdentity()->id;
-
- $datas = array();
- $submited = $this->_request->getParam('submited');
- $datas['username'] = $this->_request->getParam('username');
- $datas['unit'] = $this->_request->getParam('unit');
- $datas['phone'] = $this->_request->getParam('phone');
- $datas['address'] = $this->_request->getParam('address');
- $datas['postcode'] = $this->_request->getParam('postcode');
- $datas['email'] = $this->_request->getParam('email');
- $datas['project'] = $this->_request->getParam('project');
- $datas['project_id'] = $this->_request->getParam('projectid');
- $datas['project_type'] = $this->_request->getParam('projecttype');
- $datas['project_title'] = $this->_request->getParam('projecttitle');
- $datas['project_leader'] = $this->_request->getParam('projectleader');
-
-
-
- $form=$this->creatform($datas);
-
- if (!empty($submited) && $ft==0){
-
- foreach($datas as $k=>$v)
- {
- if($v == '')
- {
- echo $form.'';
- exit();
- }
- }
-
- if(!is_numeric($datas['postcode']))
- {
- echo $form.'';
- exit();
- }
-
- if(!preg_match("/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/i",$datas['email']))
- {
- echo $form.'';
- exit();
- }
-
- if(mb_strlen($datas['project'],"utf-8")<8)
- {
- echo $form.'';
- exit();
- }
-
- if(preg_match('/^\d+$/',$datas['project']))
- {
- echo $form.'';
- exit();
- }
-
- $data = array(
- 'userid' => $userid,
- 'username' => $datas['username'],
- 'unit' => $datas['unit'],
- 'phone' => $datas['phone'],
- 'address' => $datas['address'],
- 'postcode' => $datas['postcode'],
- 'project' => $datas['project'],
- 'uuid' =>$uuid,
- 'email' =>$datas['email'],
- 'project_id'=>$datas['project_id'],
- 'project_title'=>$datas['project_title'],
- 'project_type'=>$datas['project_type'],
- 'project_leader'=>$datas['project_leader']
- );
-
- if($this->db->insert('onlineapp',$data))
- {
- $select = "select id from onlineapp where userid='$userid' order by id desc";
- $re=$this->db->query($select);
- $row=$re->fetch();
- echo "您的信息已经提交成功,可以进行下载。
- 如果页面没有自动跳转,
请点击这里进入下载页面
- ";
- $msg = "用户{$data['username']} 填写了在线数据申请表
查看详细";
- $title = "用户 {$data['username']} 申请了在线下载数据";
- include_once("message.php");
- message::post($this->db,0,-1,$title,$msg);
- exit();
- }
- else {
- echo $form.'';
- exit();
- }
-
- }else if( $ft==1 )
- {
- $testsql="select * from onlineapp where userid='$userid' and uuid='$uuid' order by id desc";
- $result=$this->db->query($testsql);
- $rows = $result->fetch();
- if (empty($rows['id']))
- {
- $sql="select * from users where id='$userid'";
- $result=$this->db->query($sql);
- $rows = $result->fetch();
-
- $datas['username'] = $rows['realname'];
- $datas['unit'] = $rows['unit'];
- $datas['phone'] = $rows['phone'];
- $datas['address'] = $rows['address'];
- $datas['postcode'] = $rows['postcode'];
- $datas['email'] = $rows['email'];
- $datas['project'] = $rows['project'];
- $datas['project_id'] = $rows['project_id'];
- $datas['project_type'] = $rows['project_type'];
- $datas['project_title'] = $rows['project_title'];
- $datas['project_leader'] = $rows['project_leader'];
- echo $this->creatform($datas);
- exit();
- }
- else
- {
- $datas['username'] = $rows['username'];
- $datas['unit'] = $rows['unit'];
- $datas['phone'] = $rows['phone'];
- $datas['address'] = $rows['address'];
- $datas['postcode'] = $rows['postcode'];
- $datas['email'] = $rows['email'];
- $datas['project'] = $rows['project'];
- $datas['project_id'] = $rows['project_id'];
- $datas['project_type'] = $rows['project_type'];
- $datas['project_title'] = $rows['project_title'];
- $datas['project_leader'] = $rows['project_leader'];
- echo $this->creatform($datas);
- exit();
- }
- }
-
- }
-
- /*
- * 数据下载,根据UUID进行判断
- * 一次只下载一个数据(一个元数据项)
- */
- function downloadAction()
- {
- $uuid=$this->_request->getParam('uuid');
- $onlineappid=$this->_request->getParam('onlineappid');
- $this->view->pageID = "account-dataorder";
-
- if (empty($uuid)) $this->_redirect('/data');
-
- $auth = Zend_Auth::getInstance();
- if($auth->hasIdentity())
- {
- $user = $auth->getIdentity();
- $userid = $user->id;
- }
-
- $testsql="select id,has_send_mail from onlineapp where userid='$userid' and uuid='$uuid' order by id desc";
- $result=$this->db->query($testsql);
- $rows = $result->fetch();
- $has_send_mail=$rows['has_send_mail'];
- if (empty($rows['id']))
- {
- $this->_redirect('/data/'.$uuid);
- }
- else
- {
- $sql="select onlineappid,id from dataorder where status=0 and userid='$userid' and uuid='$uuid' order by id desc";
- $re=$this->db->query($sql);
- $row=$re->fetch();
- if(empty($row['onlineappid']))
- {
- $data = array(
- 'userid' => $userid,
- 'uuid' => $uuid,
- 'onlineappid'=> $onlineappid,
- 'ts_approved'=>'now()',
- );
- try {$this->db->insert('dataorder',$data);} catch (Exception $e) {}
- }else
- {
- $sql="update dataorder set onlineappid='$onlineappid',ts_approved=now() where id='{$row['id']}'";
- try {$this->db->exec($sql);} catch (Exception $e) {}
- }
- }
-
-
- $sql=$this->db->quoteInto("select * from dataset o left join metadata m on o.uuid=m.uuid left join mdstatus s on m.uuid=s.uuid where s.status>4 and m.datatype=0 and m.uuid=?",$uuid);
- $data=$this->db->fetchRow($sql);
- $updateftp=$updateftp1=false;
- $this->view->md=$data;
- $this->view->userpass=md5('westdc'.rand(1000,9999));
- $this->view->ftptime=date('Y-m-d H:i:s', strtotime('+1 week'));
- $sql=$this->db->quoteInto("select * from ftpuser where userid=?",$userid);
- $row=$this->db->fetchRow($sql);
- $datacount=$row['datacount'];
- if ($data['host']=='ftp.westgis.ac.cn')
- {
- //添加FTP帐号信息以及时间控制信息
- $updateftp=true;
- $g6=new G6ftp();
- $g6->db=$this->db;
- //不进行判断,每个元数据中的下载地址都对应一个虚拟路径
- $path[]=$data['path'];
- $this->view->username='westdc'.$userid;
- $uu=(object)array("id"=>$userid,
- "username"=>$this->view->username,
- "password"=>$this->view->userpass,
- "path"=>$path,
- "maxdata"=>$this->view->config->download->max,
- "time"=>$this->view->ftptime,
- "datacount"=>$datacount);
- if ($g6->createuser($uu)) {
- $this->view->userpass=$g6->pwd;
- $this->view->ftptime=$g6->time;
- } else {
- $this->messenger->addMessage('错误:您正在进行下载的在线数据数已经超过系统允许的最大值,请在下面点击“完成”或“取消”对应的在线数据下载!');
- $this->_redirect('/data/order');
- }
- } elseif ($data['host']=='ftp1.westgis.ac.cn')
- {
- //添加FTP1帐号信息以及时间控制信息
- $proftp=new Proftp();
- $proftp->db=$this->db;
- //proftp离线用户名和g6的用户名稍有不同
- $this->view->username='westdc_'.$userid;
- $uu=(object)array("id"=>$userid,
- "username"=>$this->view->username,
- "password"=>$this->view->userpass,
- "host"=>'ftp1.westgis.ac.cn',
- "param"=>"onlineappid=".$onlineappid,
- "maxdata"=>$this->view->config->download->max,
- "time"=>$this->view->ftptime,
- "datacount"=>$datacount);
- if ($proftp->createuser($uu))
- {
- $this->view->userpass=$proftp->pwd;
- $this->view->ftptime=$proftp->time;
- }
- } elseif ($data['host']=='ftp2.westgis.ac.cn')
- {
- //添加FTP2帐号信息以及时间控制信息
- $proftp=new Pureftp();
- $proftp->db=$this->db;
- $this->view->username='westdc_'.$userid;
- $uu=(object)array("id"=>$userid,
- "username"=>$this->view->username,
- "password"=>$this->view->userpass,
- "host"=>'ftp2.westgis.ac.cn',
- "param"=>"onlineappid=".$onlineappid,
- "maxdata"=>$this->view->config->download->max,
- "time"=>$this->view->ftptime,
- "datacount"=>$datacount);
- if ($proftp->createuser($uu))
- {
- $this->view->userpass=$proftp->pwd;
- $this->view->ftptime=$proftp->time;
- }
- }
- $ftpurl='ftp://'.$this->view->username.'@'.$data['host'];
- if ($data['host']=='ftp.westgis.ac.cn') $ftpurl.=$data['path'];
-
- //设置输出
- //if ($updateftp || $updateftp1) $this->view->userpass=$password;
- $this->view->ftpurl=$ftpurl;
- //更新下载记录
- //todo: 尝试添加一个RULE:若有对应数据存在,则不插入( userid,uuid,status=0,ts_approved:null)
- /*$sql="select * from dataorder where userid=? and uuid=? and status=0 and (ts_approved is null)";
- $u=$this->db->fetchRow($sql,array($userid,$uuid));
- if (empty($u)) {
- $sql="insert into dataorder (userid,uuid,ts_created) values(?,?,now())";
- $this->db->query($sql,array($userid,$uuid));
- }*/
- if (!empty($ftpurl) && !$has_send_mail)
- {
- $data = array(
- "uuid"=>$uuid,
- "title"=>$this->view->md['title']."(".$this->view->md['filesize']."MB)",
- "user"=>$user->username,
- "ftpuser"=>$this->view->username,
- "ftppwd"=>$this->view->userpass,
- "ftptime"=>$this->view->ftptime,
- "ftpurl"=>$this->view->ftpurl,
- "note"=>$updateftp?'BTW:请注意登陆后要手工进入对应的目录!':''
- );
- $mailtp=new EmailText($this->db,'online-download',$data);
- $mail=new WestdcMailer($this->view->config->smtp);
- $mail->setBodyText($mailtp->getBody());
- $mail->setFrom($this->view->config->service->email,'西部数据中心服务组');
- $mail->addTo($user->email);
- $mail->setSubject($mailtp->getSubject());
- @$mail->send();
- $sql="update onlineapp set has_send_mail=true where id=?";
- $sth=$this->db->prepare($sql);
- $sth->execute(array($onlineappid));
- }
- }
- /*
- * 离线申请(可以包括在线数据),在无数据参数时,则显示已有列表
- */
- function orderAction()
- {
- $this->view->pageID = "account-dataorder";
- $ac = $this->_request->getParam('ac');
-
- $uuid = $this->_request->getParam('uuid');
-
- $del = $this->_request->getParam('del');
- $apply = $this->_request->getParam('apply');
- $finish = $this->_request->getParam('finish');
- $cancel = $this->_request->getParam('cancel');
- $wsn = $this->_request->getParam('wsn');
- $pdf = $this->_request->getParam('pdf');
- $selections = $this->_request->getParam('data');
-
- //if (empty($uuid)) $this->_redirect('/data');
- $userid = view::User('id');
-
- //添加到数据篮
- if ($uuid)
- {
- //存在历史遗留问题,原来的数据并不能保证唯一
-
- $order = new Order();
- $state = $order->addOrder($uuid);
-
- if($state !== true)
- {
- if(!is_array($state))
- {
- $this->view->msg = view::Msg('alert-error',$state);
- }else{
- $service_type = $order->serviceTypeTest($state['service_type']);
- if($service_type !== false)
- {
- view::Post($this,$service_type,$state['service_url']."?href=".urlencode(view::getHostLink()."/data/order/")."&uuid=".$state['uuid']."&uid=".$userid);
- }else{
- $this->view->msg = view::Msg('alert-error',"无法申请:此元数据的数据类型未知");
- }
- }
- }else{
- $this->view->msg = view::Msg('alert-success',"添加成功!您可以继续浏览数据或是继续提交申请表");
- }
-
- if (empty($ac)) $ac='offline1';
-
- }
-
- elseif ($selections)
- {
- if(empty($uuid))
- {
- $this->view->msg = view::Msg('alert-error',"无法申请:参数出错,请通过正确的途径访问");
- }
-
- $order = new Order();
- $state = $order->addOrder($uuid,$selections);
-
- if($state !== true)
- {
- $this->view->msg = view::Msg('alert-error',$state);
- }else{
- $this->view->msg = view::Msg('alert-success',"添加成功!您可以继续浏览数据或是继续提交申请表");
- }
-
- if (empty($ac)) $ac='offline1';
- }
-
- //删除申请
- elseif ($del) {
- $order = new Order();
- $state = $order->del($del);
- if($state !== true)
- {
- $this->view->msg = view::Msg('alert-error',$state);
- }else{
- $this->view->msg = view::Msg('alert-success',"数据申请取消成功");
- }
- $this->_redirect('/data/order');
- }
-
- //提交申请
- elseif ($apply) {
- if($apply == "all" || !is_numeric($apply))
- {
- $apply = -1;
- }
- $order = new Order();
- $state = $order->apply($apply);
- if($state !== true)
- {
- $this->view->msg = view::Msg('alert-error',$state);
- }else{
- $this->view->msg = view::Msg('alert-success',"提交成功,您可以点击“提交离线申请”来生成PDF申请表");
- }
- if (empty($ac)) $ac='offline2';
- }
-
- //完成
- elseif ($finish) {
- if ($finish=='all') {
- $sql=$this->db->quoteInto("update dataorder set ts_approved=now() where status=0 and userid=?",$userid);
- $this->db->query($sql);
- $sql="update ftpuser set datacount=0 where userid=?";
- $this->db->query($sql,array($userid));
- } else {
- $sql="update dataorder set ts_approved=now() where status=0 and userid=? and id=?";
- $this->db->query($sql,array($userid,(int)$finish));
- $sql="update ftpuser set datacount=datacount-1 where userid=? and datacount>0";
- $this->db->query($sql,array($userid));
- }
- }
-
- elseif($wsn)
- {
- $this->_helper->viewRenderer('order-wsn');
-
- return true;
- }
-
- elseif ($cancel) {
- if ($cancel=='all') {
- $sql=$this->db->quoteInto("update dataorder set ts_approved=now(),status=-1 where status=0 and userid=?",$userid);
- $this->db->query($sql);
- $sql="update ftpuser set datacount=0 where userid=?";
- $this->db->query($sql,array($userid));
- } else {
- $sql="update dataorder set ts_approved=now(),status=-1 where status in (0,1,2) and userid=? and id=?";
- $this->db->query($sql,array($userid,(int)$cancel));
- $sql="update ftpuser set datacount=datacount-1 where userid=? and datacount>0";
- $this->db->query($sql,array($userid));
- }
- if (empty($ac)) $ac='offline2';
- }
-
- //生成PDF离线申请文件
- elseif ($pdf) {
-
- //用户信息可以从SESSION中读取?离线申请信息
- //$sql="select * from users where id=?";
- $order = new Order();
- $rows = $order->getOrderItemForPdf();
- $this->view->projectType = $order->projectType;
-
- if ($rows) {
- $this->_helper->viewRenderer('pdf');
-
- $this->view->data2 = $rows;
-
- if ($this->_request->isPost()) {
-
- $this->view->formData = $formData = $this->_request->getPost();
-
- $datalist='';
- foreach($rows as $i=>$row)
- {
- $datalist.=($i+1).". ".$row['title'].";";
- }
- $formData['datalist'] = $datalist;
-
- if (@$formData['save']) {
-
- $order->setPdfData($rows);
-
- $s = $order->SaveOrder($formData);
-
- if($s !== true)
- {
- $this->view->error = view::Msg('alert-error',$s);
- return true;
- }
-
- //不能修改顺序
- $this->_helper->layout->disableLayout();
- $this->_helper->viewRenderer->setNoRender();
-
- return true;
- } elseif ($formData['submit']) {
- //生成PDF
- $order->setPdfData($rows);
- $s = $order->SubmitOrder($formData);
-
- if($s !== true)
- {
- $this->view->error = view::Msg('alert-error',$s);
- return true;
- }
-
- $this->view->msg = view::Msg('alert-success','提示信息:您的离线申请已经提交,请
在线上传PDF的签字版PDF文件。',0);
- if (empty($ac)) $ac='offline3';
- }
- } else {
- $sql="select u.* from users u left join offlineapp o on u.id=o.userid where u.id=? ORDER BY o.id DESC";
- $row=$this->db->fetchRow($sql,array($userid));
- $this->view->formData = $row;
- }
- } else{
- $this->view->msg=view::Msg('alert-error',"错误:您还没有提交任何离线申请的数据,或您的数据申请已经提交(等待处理过程中)!",0);
- }
- return true;
- }//pdf
-
- if($ac == "commitapplicationform")
- {
- $offlineappid = $this->_getParam('offlineappid');
-
- if(!is_numeric($offlineappid) || $offlineappid < 1)
- {
- view::Post($this,"参数错误",-1);
- return true;
- }
-
- $order = new Order();
- $status = $order->commitApplicationForm($offlineappid);
-
- if( $status !== true)
- {
- view::Post($this,$status,-1);
- }else{
- view::Post($this,"申请已提交,请等待管理员接收并通过数据所有者审核",'/data/order/ac/offline3');
- }
-
- return true;
- }
-
- //index
- $this->view->ac = $ac;
- $this->_helper->viewRenderer('order');
- if ($ac=='' || $ac=='online')
- {
- $this->view->tabID='order-online';
- } else if ($ac=='offline1') {
- $this->view->tabID='order-offline1';
- } else if ($ac=='offline2') {
- $this->view->tabID='order-offline2';
- } else if ($ac=='offline3') {
- $this->view->tabID='order-offline3';
- } else if ($ac=='offline4') {
- $this->view->tabID='order-offline4';
- }
- //显示已经申请的数据,包括已经提交的申请和未提交的申请,还有已经处理完成的申请,正在进行的在线数据下载
- $sql="select d.*,m.title,m.datatype,off.applicationform from dataorder d
- left join metadata m on d.uuid=m.uuid
- left join offlineapp off ON off.id = d.offlineappid
- where d.userid=? order by d.status,d.ts_created desc";
- $rows=$this->db->fetchAll($sql,array($userid));
-
- $showorders = array();
- $counts = array(
- 'onlineapp' => 0,
- 'offline1' => 0,
- 'offline2' => 0,
- 'offline3' => 0,
- 'offline4' => 0
- );
-
- if(count($rows) > 0) {
- foreach($rows as $k=>$v)
- {
- switch($v['status']) {
- case 0:
- $counts['onlineapp'] ++;
- break;
- case 1:
- $counts['offline1'] ++;
- break;
- case 2:
- $counts['offline2'] ++;
- break;
- case 3:
- $counts['offline3'] ++;
- break;
- case 4:
- $counts['offline3'] ++;
- break;
- case 5:
- $counts['offline4'] ++;
- break;
- }
- switch($ac){
- default :
- if($v['status'] == 0 && !empty($v['ts_approved']))$showorders[] = $rows[$k];
- break;
- case 'online' :
- if($v['status'] == 0 && !empty($v['ts_approved']))$showorders[] = $rows[$k];
- break;
- case 'offline1' :
- if($v['status'] == 1) $showorders[] = $rows[$k];
- break;
- case 'offline2' :
+
+
+ if(empty($data['data']))
+ {
+ $this->jsonexit(array("error"=>'数据接口错误,请联系管理员'));
+ return true;
+ }
+
+ if(!is_array($data['data']))
+ {
+ $this->jsonexit(array("error"=>$data['data']));
+ return true;
+ }
+
+ $order = new Order();
+ $status = $order->addOrder($uuid,json_encode($data['data']['site'],JSON_NUMERIC_CHECK));
+ if($status !== true)
+ {
+ $this->jsonexit(array("error"=>$status));
+ return true;
+ }
+
+ $this->jsonexit($data);
+ return true;
+ }
+ }
+
+
+
+ /*
+ getversionAction() 获取数据版本
+ */
+ function getversionAction(){
+
+ $ac = $this->_getParam('ac');
+ $uuid = $this->_getParam('uuid');
+
+ if($ac == 'list')
+ {
+ $this->_helper->layout->disableLayout();
+ $this->_helper->viewRenderer->setNoRender();
+
+ $sql = "SELECT v.changelog,v.ts_created,u.username FROM mdversion v
+ LEFT JOIN users u ON v.userid=u.id
+ WHERE v.uuid=? AND v.changelog IS NOT NULL
+ ORDER BY v.ts_created DESC";
+
+ $sth = $this->db->prepare($sql);
+ $sth->execute(array($uuid));
+ $rows = $sth->fetchAll();
+
+ if($rows)
+ {
+ foreach($rows as $k=>$v)
+ {
+ $rows[$k]['ts_created'] = date("Y-m-d H:i",strtotime($v['ts_created']));
+ $rows[$k]['changelog'] = str_replace("\n","
",$v['changelog']);
+ }
+ $data = array("list"=>$rows);
+ $this->jsonexit($data);
+ return true;
+ }else{
+ $data = array("error"=>"处理中出现错误");
+ $this->jsonexit($data);
+ return true;
+ }
+ }
+
+ }//getversionAction()
+
+ function replace($string){
+ $patterns = array("/\"/i","/\'/i");
+ $replacements = array("“","‘");
+ ksort($patterns);
+ ksort($replacements);
+ return preg_replace($patterns, $replacements, $string);
+ }//引号替换
+
+
+ function postcommentAction(){
+ $this->_helper->layout->disableLayout();
+ $this->_helper->viewRenderer->setNoRender();
+ try{
+ $auth = Zend_Auth::getInstance();
+ if($auth->hasIdentity())
+ {
+ $user = $auth->getIdentity();
+ $userid = $user->id;
+ }else
+ {
+ $userid=0;
+ }
+
+ $author = mb_substr($this->replace(trim($this->_request->getParam('author'))),0,30,'UTF-8');
+ $email = mb_substr($this->replace(trim($this->_request->getParam('email'))),0,60,'UTF-8');
+ $url = mb_substr($this->replace(trim($this->_request->getParam('url'))),0,60,'UTF-8');
+ $content = $this->replace(trim($this->_request->getParam('content')));
+ $vdcode = mb_substr($this->replace(trim($this->_request->getParam('vdcode'))),0,4,'UTF-8');
+
+ if(empty($author))
+ {
+ echo "请输入您的名字";
+ exit();
+ }
+
+ if(strlen($author)<3) exit("姓名长度不得少于2个汉字 :)");
+
+ if(empty($email))
+ {
+ echo "请输入您的电子邮箱地址";
+ exit();
+ }
+
+ if(strlen($email)<4) exit("Email长度太短,请填写正确的Email :)");
+
+ if(!preg_match("/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/i",$email))
+ {
+ echo "Email格式不正确";
+ exit();
+ }
+
+ if(strlen($content)<5) exit("评论长度不得少于3个汉字 :)");
+
+ if(preg_match("/script/i",$content))
+ {
+ $content = preg_replace("/script/i","script",$content);
+ }
+
+ if(preg_match("/<|>/",$content))
+ {
+ $data=array(
+ '<'=>'<',
+ '>'=>'>',
+ );
+
+ $patterns = array();
+ $replacements = array();
+ foreach($data as $k=>$v)
+ {
+ $patterns[]='/'.$k.'/i';
+ $replacements[]=$v;
+ }
+ ksort($patterns);
+ ksort($replacements);
+ $content=preg_replace($patterns, $replacements, $content);
+ if(!empty($url))
+ {
+ $url=preg_replace($patterns, $replacements, $url);
+ }
+ }
+
+ if(preg_match("/script/i",$url))
+ {
+ $url = preg_replace("/script/i","script",$url);
+ }
+
+ if(!preg_match("/http:\/\//",$url))
+ {
+ $url = "http://".$url;
+ }
+
+ $uuid = trim($this->_request->getParam('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))
+ {
+ echo "参数错误!";
+ exit();
+ }
+
+ if(strtolower($vdcode) != $_SESSION['vdcodes'])
+ {
+ echo "验证码错误,请重新输入";
+ exit();
+ }
+
+
+ $data = array(
+ 'uuid' => $uuid,
+ 'uid' => $userid,
+ 'author' => $author,
+ 'email' => $email,
+ 'url' => $url,
+ 'ip' => $_SERVER['REMOTE_ADDR'],
+ 'content' => $content,
+ 'agent' => $_SERVER['HTTP_USER_AGENT'],
+ 'type' => 'comment'
+ );
+
+ $sql = "INSERT INTO comments (author,email,url,ip,content,agent,type,uuid,userid) VALUES (?,?,?,?,?,?,?,?,?)";
+ $sth = $this->db->prepare($sql);
+ $exec = $sth->execute(array($data['author'],$data['email'],$data['url'],$data['ip'],$data['content'],$data['agent'],$data['type'],$data['uuid'],$data['uid']));
+
+ if($exec)
+ {
+ $sql = "SELECT u.email FROM mdauthor au
+ LEFT JOIN users u on au.userid=u.id
+ WHERE au.uuid='$uuid'";
+ $sth = $this->db->query($sql);
+ $rows = $sth->fetchAll();
+
+ @$mailtp=new EmailText(
+ $this->db,
+ 'data-comment-note',
+ array(
+ 'user' =>$user->username,
+ 'uuid' =>$data['uuid'],
+ 'title' =>$this->replace(trim($this->_request->getParam('mdtitle'))),
+ 'content'=>$content
+ )
+ );
+ @$mail=new WestdcMailer($this->view->config->smtp);
+ @$mail->setBodyText($mailtp->getBody());
+ @$mail->setFrom($this->view->config->service->email,'西部数据中心服务组');
+ @$mail->addTo($this->view->config->service->email);
+ if(is_array($rows) && count($rows)>0)
+ {
+ foreach($rows as $v)
+ {
+ @$mail->addTo($v['email']);
+ }
+ }
+ @$mail->setSubject($mailtp->getSubject());
+ @$mail->send();
+ $msg = "用户".$user->username."对元数据《".$this->replace(trim($this->_request->getParam('mdtitle')))."》进行了评论,点击查看";
+ include_once("message.php");
+ message::post($this->db,0,-1,"收到新数据评论",$msg);
+ echo "评论成功";
+ exit();
+ }else
+ {
+ echo "评论失败,请重试 :)";
+ exit();
+ }
+ }catch(Exception $e){
+ echo "出错了,请稍后再试";
+ exit();
+ }
+ }//ajax评论
+
+
+ /*
+ * 数据评论,根据UUID读取
+ */
+ function commentAction()
+ {
+ $this->_helper->layout->disableLayout();
+ $this->_helper->viewRenderer->setNoRender();
+ $uuid=$this->_request->getParam('uuid');
+ if (empty($uuid)) die();
+ $sql="select * from comments where uuid=? AND reply=0 order by id desc";
+ $comments=$this->db->fetchAll($sql,array($uuid));
+
+ $paginator = Zend_Paginator::factory($comments);
+ $paginator->setCurrentPageNumber($this->_getParam('page'));
+ $paginator->setItemCountPerPage(5);
+ $paginator->setView($this->view);
+ Zend_View_Helper_PaginationControl::setDefaultViewPartial('data/pagination_ajax.phtml');
+
+ include_once("Avatar.php");
+ $avatar = new Avatar();
+ if ($paginator)
+ {
+ foreach($paginator as $c)
+ {
+ //$author=$this->view->escape($c['author']);
+ $sql = "SELECT cr.id,cr.content as body,cr.reply,u.username,cr.ts_created,u.usertype,u.email as email,
+ (SELECT au.uuid FROM mdauthor au WHERE au.userid=u.id AND au.uuid='$uuid') as uuid
+ FROM comments cr
+ LEFT JOIN users u ON cr.userid=u.id
+ WHERE cr.reply=?";
+ $sth = $this->db->prepare($sql);
+ $sth->execute(array($c['id']));
+ $replys = $sth->fetchAll();
+ $replyhtml = "";
+ if(!empty($replys) || count($replys)>0)
+ {
+ foreach($replys as $v)
+ {
+ $usertype = "";
+ $color = "";
+ if($v['usertype'] == "administrator")
+ {
+ $usertype = "[管理员]";
+ $color="#009d00";
+ }
+ if($v['uuid'] == $uuid)
+ {
+ $usertype = "[数据作者]";
+ $color="#add2e9";
+ }
+ if(!empty($color))
+ {
+ $color = 'background:'.$color.';color:#FFFFFF;';
+ }
+ $img = $avatar->Get($v['email'],48);
+ $replyhtml .='
+
+ ';
+
+ }
+ }
+
+ $img = $avatar->Get($c['email'],64);
+ //$img = '
';
+
+ $author = $c['author'];
+ $author = ($c['url'])?'
'.$author.'':$author;
+ $author = ''.$author."";
+ $time = '发表于'.date('Y-m-d H:i:s',strtotime($c['ts_created'])).'';
+ print '
+
+ ';
+ }
+ echo '
'.$paginator.'
';
+ }//else echo "
No comments.";
+ }//评论列表
+
+ /**
+ * 判断用户是否填写了申请信息
+ * @param string $uuid
+ * @param int $userid
+ */
+ function todownloadAction() {
+
+ $this->view->pageID = "account-dataorder";
+
+ $this->_helper->viewRenderer('onlineapp-download');
+
+ $this->view->uuid = $uuid = $this->_request->getParam('uuid');
+
+ $auth = Zend_Auth::getInstance();
+ if (!$auth->hasIdentity())
+ {
+ $this->view->AlertType = "alert-error";
+ $this->view->msg = "请先登录您的账户后进行下载,页面将自动跳转";
+ $this->view->jump_url = '/account/login/?href=/data/todownload/uuid/'.$uuid;
+ return true;
+ }
+
+ if(empty($uuid))
+ {
+ $this->view->AlertType = "alert-error";
+ $this->view->msg = "参数错误!";
+ $this->view->jump_url = "/data";
+ return true;
+ }
+
+ $this->view->projectType = array(
+ "请选择项目类型" => "",
+ "国家973计划项目课题" => "国家973计划项目课题",
+ "国家863计划课题"=>"国家863计划课题",
+ "国家级科技支撑课题" => "国家级科技支撑课题",
+ "国家级科技重大专项" => "国家级科技重大专项",
+ "国家级国家重大工程" => "国家级国家重大工程",
+ "国家级国家自然科学基金" => "国家级国家自然科学基金",
+ "国际合作项目"=>"国际合作项目",
+ "省部级项目" => "省部级项目",
+ "其他项目工程" => "其他项目工程",
+ );
+
+ $userid = Zend_Auth::getInstance()->getIdentity()->id;
+
+ $submit = $this->_getParam('submit');
+ if(!empty($submit)){
+
+ $datas = array();
+ $datas['realname'] = $this->_request->getParam('realname');
+ $datas['unit'] = $this->_request->getParam('unit');
+ $datas['phone'] = $this->_request->getParam('phone');
+ $datas['address'] = $this->_request->getParam('address');
+ $datas['postcode'] = $this->_request->getParam('postcode');
+ $datas['email'] = $this->_request->getParam('email');
+ $datas['project'] = $this->_request->getParam('project');
+ $datas['project_id'] = $this->_request->getParam('project_id');
+ $datas['project_type'] = $this->_request->getParam('project_type');
+ $datas['project_title'] = $this->_request->getParam('project_title');
+ $datas['project_leader']= $this->_request->getParam('project_leader');
+
+ $this->view->info = $datas;
+
+ $this->view->AlertType = "alert-error";
+
+ foreach($datas as $k=>$v)
+ {
+ if(empty($v))
+ {
+ $this->view->error = "每一项内容都需要填写";
+ return true;
+ }
+ }
+
+ if(!is_numeric($datas['postcode']))
+ {
+ $this->view->error = "联系电话和邮政编码请填写数字";
+ return true;
+ }
+
+ if(!preg_match("/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/i",$datas['email']))
+ {
+ $this->view->error = "请填写正确的email地址";
+ return true;
+ }
+
+ if(mb_strlen($datas['project'],"utf-8")<8)
+ {
+ $this->view->error = "项目介绍内容不少于8个字符";
+ return true;
+ }
+
+ if(preg_match('/^\d+$/',$datas['project']))
+ {
+ $this->view->error = "请输入有意义的项目介绍内容";
+ return true;
+ }
+
+ $data = array(
+ 'userid' => $userid,
+ 'username' => $datas['realname'],
+ 'unit' => $datas['unit'],
+ 'phone' => $datas['phone'],
+ 'address' => $datas['address'],
+ 'postcode' => $datas['postcode'],
+ 'project' => $datas['project'],
+ 'uuid' =>$uuid,
+ 'email' =>$datas['email'],
+ 'project_id'=>$datas['project_id'],
+ 'project_title'=>$datas['project_title'],
+ 'project_type'=>$datas['project_type'],
+ 'project_leader'=>$datas['project_leader']
+ );
+
+ if($this->db->insert('onlineapp',$data))
+ {
+ $select = "select id from onlineapp where userid='$userid' order by id desc";
+ $re=$this->db->query($select);
+ $row=$re->fetch();
+
+ $this->view->AlertType = "alert-success";
+ $this->view->jump_url = '/data/download/uuid/'.$uuid.'/onlineappid/'.$row['id'];
+ $this->view->msg = "您的信息已经提交成功,可以进行下载。请等待页面自动跳转,
view->jump_url."\">或点击这里进入下载页面";
+
+ $msg = "用户{$data['username']} 填写了在线数据申请表
查看详细";
+ $title = "用户 {$data['username']} 申请了在线下载数据";
+ include_once("message.php");
+ message::post($this->db,0,-1,$title,$msg);
+
+ return true;
+ }
+ else {
+ $this->view->AlertType = "alert-error";
+ $this->view->error = "申请失败,请稍后重新尝试";
+ $this->view->info = $data;
+ return true;
+ }
+
+ return true;
+ }else{
+
+ $testsql="select * from onlineapp where userid='$userid' and uuid='$uuid' order by id desc";
+ $result=$this->db->query($testsql);
+ $rows = $result->fetch();
+ if (empty($rows['id']))
+ {
+ include_once("Users.php");
+ $usr = new Users($this->db);
+ $this->view->info = $usr->getUserInfo($userid);
+ return true;
+ }
+ else
+ {
+ $datas['realname'] = $rows['username'];
+ $datas['unit'] = $rows['unit'];
+ $datas['phone'] = $rows['phone'];
+ $datas['address'] = $rows['address'];
+ $datas['postcode'] = $rows['postcode'];
+ $datas['email'] = $rows['email'];
+ $datas['project'] = $rows['project'];
+ $datas['project_id'] = $rows['project_id'];
+ $datas['project_type'] = $rows['project_type'];
+ $datas['project_title'] = $rows['project_title'];
+ $datas['project_leader'] = $rows['project_leader'];
+ $this->view->info = $datas;
+ return true;
+ }
+ }
+
+ return true;
+
+ $userid=Zend_Auth::getInstance()->getIdentity()->id;
+
+ $datas = array();
+ $submited = $this->_request->getParam('submited');
+ $datas['username'] = $this->_request->getParam('username');
+ $datas['unit'] = $this->_request->getParam('unit');
+ $datas['phone'] = $this->_request->getParam('phone');
+ $datas['address'] = $this->_request->getParam('address');
+ $datas['postcode'] = $this->_request->getParam('postcode');
+ $datas['email'] = $this->_request->getParam('email');
+ $datas['project'] = $this->_request->getParam('project');
+ $datas['project_id'] = $this->_request->getParam('projectid');
+ $datas['project_type'] = $this->_request->getParam('projecttype');
+ $datas['project_title'] = $this->_request->getParam('projecttitle');
+ $datas['project_leader'] = $this->_request->getParam('projectleader');
+
+
+
+ $form=$this->creatform($datas);
+
+ if (!empty($submited) && $ft==0){
+
+ foreach($datas as $k=>$v)
+ {
+ if($v == '')
+ {
+ echo $form.'';
+ exit();
+ }
+ }
+
+ if(!is_numeric($datas['postcode']))
+ {
+ echo $form.'';
+ exit();
+ }
+
+ if(!preg_match("/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/i",$datas['email']))
+ {
+ echo $form.'';
+ exit();
+ }
+
+ if(mb_strlen($datas['project'],"utf-8")<8)
+ {
+ echo $form.'';
+ exit();
+ }
+
+ if(preg_match('/^\d+$/',$datas['project']))
+ {
+ echo $form.'';
+ exit();
+ }
+
+ $data = array(
+ 'userid' => $userid,
+ 'username' => $datas['username'],
+ 'unit' => $datas['unit'],
+ 'phone' => $datas['phone'],
+ 'address' => $datas['address'],
+ 'postcode' => $datas['postcode'],
+ 'project' => $datas['project'],
+ 'uuid' =>$uuid,
+ 'email' =>$datas['email'],
+ 'project_id'=>$datas['project_id'],
+ 'project_title'=>$datas['project_title'],
+ 'project_type'=>$datas['project_type'],
+ 'project_leader'=>$datas['project_leader']
+ );
+
+ if($this->db->insert('onlineapp',$data))
+ {
+ $select = "select id from onlineapp where userid='$userid' order by id desc";
+ $re=$this->db->query($select);
+ $row=$re->fetch();
+ echo "您的信息已经提交成功,可以进行下载。
+ 如果页面没有自动跳转,
请点击这里进入下载页面
+ ";
+ $msg = "用户{$data['username']} 填写了在线数据申请表
查看详细";
+ $title = "用户 {$data['username']} 申请了在线下载数据";
+ include_once("message.php");
+ message::post($this->db,0,-1,$title,$msg);
+ exit();
+ }
+ else {
+ echo $form.'';
+ exit();
+ }
+
+ }else if( $ft==1 )
+ {
+ $testsql="select * from onlineapp where userid='$userid' and uuid='$uuid' order by id desc";
+ $result=$this->db->query($testsql);
+ $rows = $result->fetch();
+ if (empty($rows['id']))
+ {
+ $sql="select * from users where id='$userid'";
+ $result=$this->db->query($sql);
+ $rows = $result->fetch();
+
+ $datas['username'] = $rows['realname'];
+ $datas['unit'] = $rows['unit'];
+ $datas['phone'] = $rows['phone'];
+ $datas['address'] = $rows['address'];
+ $datas['postcode'] = $rows['postcode'];
+ $datas['email'] = $rows['email'];
+ $datas['project'] = $rows['project'];
+ $datas['project_id'] = $rows['project_id'];
+ $datas['project_type'] = $rows['project_type'];
+ $datas['project_title'] = $rows['project_title'];
+ $datas['project_leader'] = $rows['project_leader'];
+ echo $this->creatform($datas);
+ exit();
+ }
+ else
+ {
+ $datas['username'] = $rows['username'];
+ $datas['unit'] = $rows['unit'];
+ $datas['phone'] = $rows['phone'];
+ $datas['address'] = $rows['address'];
+ $datas['postcode'] = $rows['postcode'];
+ $datas['email'] = $rows['email'];
+ $datas['project'] = $rows['project'];
+ $datas['project_id'] = $rows['project_id'];
+ $datas['project_type'] = $rows['project_type'];
+ $datas['project_title'] = $rows['project_title'];
+ $datas['project_leader'] = $rows['project_leader'];
+ echo $this->creatform($datas);
+ exit();
+ }
+ }
+
+ }
+
+ /*
+ * 数据下载,根据UUID进行判断
+ * 一次只下载一个数据(一个元数据项)
+ */
+ function downloadAction()
+ {
+ $uuid=$this->_request->getParam('uuid');
+ $onlineappid=$this->_request->getParam('onlineappid');
+ $this->view->pageID = "account-dataorder";
+
+ if (empty($uuid)) $this->_redirect('/data');
+
+ $auth = Zend_Auth::getInstance();
+ if($auth->hasIdentity())
+ {
+ $user = $auth->getIdentity();
+ $userid = $user->id;
+ }
+
+ $testsql="select id,has_send_mail from onlineapp where userid='$userid' and uuid='$uuid' order by id desc";
+ $result=$this->db->query($testsql);
+ $rows = $result->fetch();
+ $has_send_mail=$rows['has_send_mail'];
+ if (empty($rows['id']))
+ {
+ $this->_redirect('/data/'.$uuid);
+ }
+ else
+ {
+ $sql="select onlineappid,id from dataorder where status=0 and userid='$userid' and uuid='$uuid' order by id desc";
+ $re=$this->db->query($sql);
+ $row=$re->fetch();
+ if(empty($row['onlineappid']))
+ {
+ $data = array(
+ 'userid' => $userid,
+ 'uuid' => $uuid,
+ 'onlineappid'=> $onlineappid,
+ 'ts_approved'=>'now()',
+ );
+ try {$this->db->insert('dataorder',$data);} catch (Exception $e) {}
+ }else
+ {
+ $sql="update dataorder set onlineappid='$onlineappid',ts_approved=now() where id='{$row['id']}'";
+ try {$this->db->exec($sql);} catch (Exception $e) {}
+ }
+ }
+
+
+ $sql=$this->db->quoteInto("select * from dataset o left join metadata m on o.uuid=m.uuid left join mdstatus s on m.uuid=s.uuid where s.status>4 and m.datatype=0 and m.uuid=?",$uuid);
+ $data=$this->db->fetchRow($sql);
+ $updateftp=$updateftp1=false;
+ $this->view->md=$data;
+ $this->view->userpass=md5('westdc'.rand(1000,9999));
+ $this->view->ftptime=date('Y-m-d H:i:s', strtotime('+1 week'));
+ $sql=$this->db->quoteInto("select * from ftpuser where userid=?",$userid);
+ $row=$this->db->fetchRow($sql);
+ $datacount=$row['datacount'];
+ if ($data['host']=='ftp.westgis.ac.cn')
+ {
+ //添加FTP帐号信息以及时间控制信息
+ $updateftp=true;
+ $g6=new G6ftp();
+ $g6->db=$this->db;
+ //不进行判断,每个元数据中的下载地址都对应一个虚拟路径
+ $path[]=$data['path'];
+ $this->view->username='westdc'.$userid;
+ $uu=(object)array("id"=>$userid,
+ "username"=>$this->view->username,
+ "password"=>$this->view->userpass,
+ "path"=>$path,
+ "maxdata"=>$this->view->config->download->max,
+ "time"=>$this->view->ftptime,
+ "datacount"=>$datacount);
+ if ($g6->createuser($uu)) {
+ $this->view->userpass=$g6->pwd;
+ $this->view->ftptime=$g6->time;
+ } else {
+ $this->messenger->addMessage('错误:您正在进行下载的在线数据数已经超过系统允许的最大值,请在下面点击“完成”或“取消”对应的在线数据下载!');
+ $this->_redirect('/data/order');
+ }
+ } elseif ($data['host']=='ftp1.westgis.ac.cn')
+ {
+ //添加FTP1帐号信息以及时间控制信息
+ $proftp=new Proftp();
+ $proftp->db=$this->db;
+ //proftp离线用户名和g6的用户名稍有不同
+ $this->view->username='westdc_'.$userid;
+ $uu=(object)array("id"=>$userid,
+ "username"=>$this->view->username,
+ "password"=>$this->view->userpass,
+ "host"=>'ftp1.westgis.ac.cn',
+ "param"=>"onlineappid=".$onlineappid,
+ "maxdata"=>$this->view->config->download->max,
+ "time"=>$this->view->ftptime,
+ "datacount"=>$datacount);
+ if ($proftp->createuser($uu))
+ {
+ $this->view->userpass=$proftp->pwd;
+ $this->view->ftptime=$proftp->time;
+ }
+ } elseif ($data['host']=='ftp.sanjiangyuan.org.cn')
+ {
+ //添加FTP2帐号信息以及时间控制信息
+ $proftp=new Pureftp();
+ $proftp->db=$this->db;
+ $this->view->username='sjy_'.$userid;
+ $uu=(object)array("id"=>$userid,
+ "username"=>$this->view->username,
+ "password"=>$this->view->userpass,
+ "host"=>'ftp.sanjiangyuan.org.cn',
+ "param"=>"onlineappid=".$onlineappid,
+ "maxdata"=>$this->view->config->download->max,
+ "time"=>$this->view->ftptime,
+ "datacount"=>$datacount);
+ if ($proftp->createuser($uu))
+ {
+ $this->view->userpass=$proftp->pwd;
+ $this->view->ftptime=$proftp->time;
+ }
+ }
+ $ftpurl='ftp://'.$this->view->username.'@'.$data['host'];
+ if ($data['host']=='ftp.westgis.ac.cn') $ftpurl.=$data['path'];
+
+ //设置输出
+ //if ($updateftp || $updateftp1) $this->view->userpass=$password;
+ $this->view->ftpurl=$ftpurl;
+ //更新下载记录
+ //todo: 尝试添加一个RULE:若有对应数据存在,则不插入( userid,uuid,status=0,ts_approved:null)
+ /*$sql="select * from dataorder where userid=? and uuid=? and status=0 and (ts_approved is null)";
+ $u=$this->db->fetchRow($sql,array($userid,$uuid));
+ if (empty($u)) {
+ $sql="insert into dataorder (userid,uuid,ts_created) values(?,?,now())";
+ $this->db->query($sql,array($userid,$uuid));
+ }*/
+ if (!empty($ftpurl) && !$has_send_mail)
+ {
+ $data = array(
+ "uuid"=>$uuid,
+ "title"=>$this->view->md['title']."(".$this->view->md['filesize']."MB)",
+ "user"=>$user->username,
+ "ftpuser"=>$this->view->username,
+ "ftppwd"=>$this->view->userpass,
+ "ftptime"=>$this->view->ftptime,
+ "ftpurl"=>$this->view->ftpurl,
+ "note"=>$updateftp?'BTW:请注意登陆后要手工进入对应的目录!':''
+ );
+ $mailtp=new EmailText($this->db,'online-download',$data);
+ $mail=new WestdcMailer($this->view->config->smtp);
+ $mail->setBodyText($mailtp->getBody());
+ $mail->setFrom($this->view->config->service->email,'西部数据中心服务组');
+ $mail->addTo($user->email);
+ $mail->setSubject($mailtp->getSubject());
+ @$mail->send();
+ $sql="update onlineapp set has_send_mail=true where id=?";
+ $sth=$this->db->prepare($sql);
+ $sth->execute(array($onlineappid));
+ }
+ }
+ /*
+ * 离线申请(可以包括在线数据),在无数据参数时,则显示已有列表
+ */
+ function orderAction()
+ {
+ $this->view->pageID = "account-dataorder";
+ $ac = $this->_request->getParam('ac');
+
+ $uuid = $this->_request->getParam('uuid');
+
+ $del = $this->_request->getParam('del');
+ $apply = $this->_request->getParam('apply');
+ $finish = $this->_request->getParam('finish');
+ $cancel = $this->_request->getParam('cancel');
+ $wsn = $this->_request->getParam('wsn');
+ $pdf = $this->_request->getParam('pdf');
+ $selections = $this->_request->getParam('data');
+
+ //if (empty($uuid)) $this->_redirect('/data');
+ $userid = view::User('id');
+
+ //添加到数据篮
+ if ($uuid)
+ {
+ //存在历史遗留问题,原来的数据并不能保证唯一
+
+ $order = new Order();
+ $state = $order->addOrder($uuid);
+
+ if($state !== true)
+ {
+ if(!is_array($state))
+ {
+ $this->view->msg = view::Msg('alert-error',$state);
+ }else{
+ $service_type = $order->serviceTypeTest($state['service_type']);
+ if($service_type !== false)
+ {
+ view::Post($this,$service_type,$state['service_url']."?href=".urlencode(view::getHostLink()."/data/order/")."&uuid=".$state['uuid']."&uid=".$userid);
+ }else{
+ $this->view->msg = view::Msg('alert-error',"无法申请:此元数据的数据类型未知");
+ }
+ }
+ }else{
+ $this->view->msg = view::Msg('alert-success',"添加成功!您可以继续浏览数据或是继续提交申请表");
+ }
+
+ if (empty($ac)) $ac='offline1';
+
+ }
+
+ elseif ($selections)
+ {
+ if(empty($uuid))
+ {
+ $this->view->msg = view::Msg('alert-error',"无法申请:参数出错,请通过正确的途径访问");
+ }
+
+ $order = new Order();
+ $state = $order->addOrder($uuid,$selections);
+
+ if($state !== true)
+ {
+ $this->view->msg = view::Msg('alert-error',$state);
+ }else{
+ $this->view->msg = view::Msg('alert-success',"添加成功!您可以继续浏览数据或是继续提交申请表");
+ }
+
+ if (empty($ac)) $ac='offline1';
+ }
+
+ //删除申请
+ elseif ($del) {
+ $order = new Order();
+ $state = $order->del($del);
+ if($state !== true)
+ {
+ $this->view->msg = view::Msg('alert-error',$state);
+ }else{
+ $this->view->msg = view::Msg('alert-success',"数据申请取消成功");
+ }
+ $this->_redirect('/data/order');
+ }
+
+ //提交申请
+ elseif ($apply) {
+ if($apply == "all" || !is_numeric($apply))
+ {
+ $apply = -1;
+ }
+ $order = new Order();
+ $state = $order->apply($apply);
+ if($state !== true)
+ {
+ $this->view->msg = view::Msg('alert-error',$state);
+ }else{
+ $this->view->msg = view::Msg('alert-success',"提交成功,您可以点击“提交离线申请”来生成PDF申请表");
+ }
+ if (empty($ac)) $ac='offline2';
+ }
+
+ //完成
+ elseif ($finish) {
+ if ($finish=='all') {
+ $sql=$this->db->quoteInto("update dataorder set ts_approved=now() where status=0 and userid=?",$userid);
+ $this->db->query($sql);
+ $sql="update ftpuser set datacount=0 where userid=?";
+ $this->db->query($sql,array($userid));
+ } else {
+ $sql="update dataorder set ts_approved=now() where status=0 and userid=? and id=?";
+ $this->db->query($sql,array($userid,(int)$finish));
+ $sql="update ftpuser set datacount=datacount-1 where userid=? and datacount>0";
+ $this->db->query($sql,array($userid));
+ }
+ }
+
+ elseif($wsn)
+ {
+ $this->_helper->viewRenderer('order-wsn');
+
+ return true;
+ }
+
+ elseif ($cancel) {
+ if ($cancel=='all') {
+ $sql=$this->db->quoteInto("update dataorder set ts_approved=now(),status=-1 where status=0 and userid=?",$userid);
+ $this->db->query($sql);
+ $sql="update ftpuser set datacount=0 where userid=?";
+ $this->db->query($sql,array($userid));
+ } else {
+ $sql="update dataorder set ts_approved=now(),status=-1 where status in (0,1,2) and userid=? and id=?";
+ $this->db->query($sql,array($userid,(int)$cancel));
+ $sql="update ftpuser set datacount=datacount-1 where userid=? and datacount>0";
+ $this->db->query($sql,array($userid));
+ }
+ if (empty($ac)) $ac='offline2';
+ }
+
+ //生成PDF离线申请文件
+ elseif ($pdf) {
+
+ //用户信息可以从SESSION中读取?离线申请信息
+ //$sql="select * from users where id=?";
+ $order = new Order();
+ $rows = $order->getOrderItemForPdf();
+ $this->view->projectType = $order->projectType;
+
+ if ($rows) {
+ $this->_helper->viewRenderer('pdf');
+
+ $this->view->data2 = $rows;
+
+ if ($this->_request->isPost()) {
+
+ $this->view->formData = $formData = $this->_request->getPost();
+
+ $datalist='';
+ foreach($rows as $i=>$row)
+ {
+ $datalist.=($i+1).". ".$row['title'].";";
+ }
+ $formData['datalist'] = $datalist;
+
+ if (@$formData['save']) {
+
+ $order->setPdfData($rows);
+
+ $s = $order->SaveOrder($formData);
+
+ if($s !== true)
+ {
+ $this->view->error = view::Msg('alert-error',$s);
+ return true;
+ }
+
+ //不能修改顺序
+ $this->_helper->layout->disableLayout();
+ $this->_helper->viewRenderer->setNoRender();
+
+ return true;
+ } elseif ($formData['submit']) {
+ //生成PDF
+ $order->setPdfData($rows);
+ $s = $order->SubmitOrder($formData);
+
+ if($s !== true)
+ {
+ $this->view->error = view::Msg('alert-error',$s);
+ return true;
+ }
+
+ $this->view->msg = view::Msg('alert-success','提示信息:您的离线申请已经提交,请
在线上传PDF的签字版PDF文件。',0);
+ if (empty($ac)) $ac='offline3';
+ }
+ } else {
+ $sql="select u.* from users u left join offlineapp o on u.id=o.userid where u.id=? ORDER BY o.id DESC";
+ $row=$this->db->fetchRow($sql,array($userid));
+ $this->view->formData = $row;
+ }
+ } else{
+ $this->view->msg=view::Msg('alert-error',"错误:您还没有提交任何离线申请的数据,或您的数据申请已经提交(等待处理过程中)!",0);
+ }
+ return true;
+ }//pdf
+
+ if($ac == "commitapplicationform")
+ {
+ $offlineappid = $this->_getParam('offlineappid');
+
+ if(!is_numeric($offlineappid) || $offlineappid < 1)
+ {
+ view::Post($this,"参数错误",-1);
+ return true;
+ }
+
+ $order = new Order();
+ $status = $order->commitApplicationForm($offlineappid);
+
+ if( $status !== true)
+ {
+ view::Post($this,$status,-1);
+ }else{
+ view::Post($this,"申请已提交,请等待管理员接收并通过数据所有者审核",'/data/order/ac/offline3');
+ }
+
+ return true;
+ }
+
+ //index
+ $this->view->ac = $ac;
+ $this->_helper->viewRenderer('order');
+ if ($ac=='' || $ac=='online')
+ {
+ $this->view->tabID='order-online';
+ } else if ($ac=='offline1') {
+ $this->view->tabID='order-offline1';
+ } else if ($ac=='offline2') {
+ $this->view->tabID='order-offline2';
+ } else if ($ac=='offline3') {
+ $this->view->tabID='order-offline3';
+ } else if ($ac=='offline4') {
+ $this->view->tabID='order-offline4';
+ }
+ //显示已经申请的数据,包括已经提交的申请和未提交的申请,还有已经处理完成的申请,正在进行的在线数据下载
+ $sql="select d.*,m.title,m.datatype,off.applicationform from dataorder d
+ left join metadata m on d.uuid=m.uuid
+ left join offlineapp off ON off.id = d.offlineappid
+ where d.userid=? order by d.status,d.ts_created desc";
+ $rows=$this->db->fetchAll($sql,array($userid));
+
+ $showorders = array();
+ $counts = array(
+ 'onlineapp' => 0,
+ 'offline1' => 0,
+ 'offline2' => 0,
+ 'offline3' => 0,
+ 'offline4' => 0
+ );
+
+ if(count($rows) > 0) {
+ foreach($rows as $k=>$v)
+ {
+ switch($v['status']) {
+ case 0:
+ $counts['onlineapp'] ++;
+ break;
+ case 1:
+ $counts['offline1'] ++;
+ break;
+ case 2:
+ $counts['offline2'] ++;
+ break;
+ case 3:
+ $counts['offline3'] ++;
+ break;
+ case 4:
+ $counts['offline3'] ++;
+ break;
+ case 5:
+ $counts['offline4'] ++;
+ break;
+ }
+ switch($ac){
+ default :
+ if($v['status'] == 0 && !empty($v['ts_approved']))$showorders[] = $rows[$k];
+ break;
+ case 'online' :
+ if($v['status'] == 0 && !empty($v['ts_approved']))$showorders[] = $rows[$k];
+ break;
+ case 'offline1' :
+ if($v['status'] == 1) $showorders[] = $rows[$k];
+ break;
+ case 'offline2' :
if($v['status'] == 2)
{
- $showorders[] = $rows[$k];
- $this->view->offlineappid = $v['offlineappid'];
- $this->view->applicationform = $v['applicationform'];
+ $showorders[] = $rows[$k];
+ $this->view->offlineappid = $v['offlineappid'];
+ $this->view->applicationform = $v['applicationform'];
$this->view->offlineappstatus = $v['status'];
- }
- break;
- case 'offline3' :
+ }
+ break;
+ case 'offline3' :
if($v['status'] == 3 || $v['status'] == 4)
{
- $showorders[] = $rows[$k];
- $this->view->offlineappid = $v['offlineappid'];
- $this->view->applicationform = $v['applicationform'];
+ $showorders[] = $rows[$k];
+ $this->view->offlineappid = $v['offlineappid'];
+ $this->view->applicationform = $v['applicationform'];
$this->view->offlineappstatus = $v['status'];
- }
- break;
- case 'offline4' :
- if($v['status'] == 5) $showorders[] = $rows[$k];
- break;
- }
- }
- }
-
- $this->view->counts = $counts;
- view::addPaginator($showorders,$this,10);
-
- }
-
- /*
- * 查看数据缩略图
- */
- function thumbAction()
- {
- $page=(int)$this->_request->getParam('page');
- if (empty($page)) $page=1;
- $offset=$this->limit*($page-1);
- $state=$this->db->query("select count(*) from normalmetadata");
- $row=$state->fetchAll();
- $sum=$row[0]['count'];
- $select=$this->db->select();
- $select->from('normalmetadata as m','m.*')
- ->order('m.title desc')->limitPage($page,9);
- $this->view->metadata = $this->db->fetchAll($select);
- $this->view->page=new Pagination($sum,$page,$this->limit);
- }
-
- /*
- *附件下载
- */
- function attachAction(){
-
- $uuid = $this->_request->getParam('uuid');
-
- if(!empty($uuid))
- {
-
- $sql="select * from mdattach m left join attachments a on m.id=a.id where m.uuid='$uuid'";
- $re=$this->db->query($sql);
- $atts = $re->fetch();
-
- if(empty($atts['id']))
- {
- $this->_redirect("/data/$uuid");
- }//没有附件
-
- $auth = Zend_Auth::getInstance();
- if($auth->hasIdentity())
- {
- /*
- $user = $auth->getIdentity();
- $userid = $user->id;
- $sql = "select d.* from dataorder d
- left join users u on u.id=d.userid
- left join metadata m on m.uuid=d.uuid
- where (d.status=5 and d.userid='$userid' and d.uuid='$uuid') or u.usertype='administrator'";
- $re= $this->db->query($sql);
- $row=$re->fetch();
- if(!empty($row['uuid']))
- {
- $this->messenger->addMessage('您没有权限下载该附件');
- $this->_redirect("/data");
- }
- else
- {*/
- //由于涉及多个文件下载,所以将附件添加到zip压缩文件再输出
-
- $sql="select * from mdattach m left join attachments a on m.id=a.id where m.uuid='$uuid'";
- $re=$this->db->query($sql);
- $atts = $re->fetchAll();
-
- $zip = new ZipArchive();
- $url=$this->view->config->upload."tmp/attachments_$uuid.zip";//创建临时文件
- $opened=$zip->open($url, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE);
- if( $opened !== true ){
- die("cannot open {$url} for writing.");
- }
-
- $updates = array(); //统计被下载的附件ID
-
- foreach ($atts as $k=>$v)
- {
- if (is_file($this->view->config->upload.$v['filename'])) {
- $updates[]=$v['id'];
- $zip->addFile($this->view->config->upload.$v['filename'],'/'.basename($v['filename']));
- }
- }
- $zip->close();
-
- //更新统计
- $ids=join(',',$updates);
- $sql = "update attachments set downtimes=downtimes+1 where id in ($ids)";
- @$this->db->exec($sql);
-
-
- //输出下载
- $content=file_get_contents($url);
- $this->_helper->layout->disableLayout();
- $this->_helper->viewRenderer->setNoRender();
- $this->getResponse()->setHeader('Content-Type', 'application/octet-stream')
- ->setHeader('Content-Disposition','attachment; filename="'.basename($url).'"')
- ->setHeader('Content-Length', strlen($content))
- ->setHeader('Content-Type','application/force-download')
- ->setHeader('Content-Type','application/download')
- ->setHeader('Content-Type','application/zip')
- ->setHeader('Content-Description','File Transfer')
- ->setHeader('Content-Transfer-Encoding','binary')
- ->setHeader('Expires',0)
- ->setHeader('Cache-Control','must-revalidate, post-check=0, pre-check=0')
- ->setHeader('Pragma','public')
- ->setBody($content);
- // }
- }//end if
- else
- {
- $this->messenger->addMessage('您没有权限下载该附件');
- $this->_redirect("/data/$uuid");
- }//未登陆
- }//end if
- else
- {
- $this->messenger->addMessage('您没有权限下载该附件');
- $this->_redirect("/data/$uuid");
- }//无权限
-
- }
-
-
- /*
- * 西部计划项目及其数据产出
- */
- public function westeeAction()
- {
- //$sql="select w.*,m.uuid from westee w left join westeemd m on w.id=m.eeid order by w.id";
- $sql="select * from westee order by id";
- $this->view->westee=$this->db->fetchAll($sql);
- $sql="select w.eeid,m.title,m.uuid from westeemd w left join metadata m on w.uuid=m.uuid order by w.eeid";
- $this->view->westeemd=$this->db->fetchAll($sql);
- }
-
- public function pingbackAction()
- {
- $this->_helper->ViewRenderer->setNoRender();
- $this->_helper->layout->disableLayout();
- $server = new Zend_XmlRpc_Server();
- $server->setClass('PingbackRpc', 'pingback');
- echo $server->handle();
- }
-
- public function pingtestAction()
- {
- $this->_helper->ViewRenderer->setNoRender();
- $this->_helper->layout->disableLayout();
- $client = new Zend_XmlRpc_Client('http://test.westgis.ac.cn/data/pingback');
- $arg1 = 'http://wlx.westgis.ac.cn/567/';
- $arg2 = 'http://test.westgis.ac.cn/data/487591d0-d437-4114-b810-cbef7c4ee4b2';
- //$result = $client->call('pingback.ping', array($arg1, $arg2));
- $test = $client->getProxy('pingback');
- $test->ping($arg1,$arg2);
- //var_dump($result);
- }
- public function outputAction()
- {
- $this->_helper->layout->disableLayout();
- $this->_helper->viewRenderer->setNoRender();
- $sql="select title,datatype,filesize,id from normalmetadata";
- $md=$this->db->fetchAll($sql);
- foreach($md as $m)
- {
- print $m["title"].",";
- print ($m["datatype"]?"内部":"公开").",";
- print ($m["filesize"]==1?" ":$m["filesize"]).",";
- $sql1="select keyword from keyword where id=".$m["id"]." and keytype='place'";
- $kd=$this->db->fetchAll($sql1);
- foreach ($kd as $p) print $p["keyword"]." ";
- print ",";
- $sql1="select keyword from keyword where id=".$m["id"]." and keytype='temporal'";
- $kd=$this->db->fetchAll($sql1);
- foreach ($kd as $p) print $p["keyword"]." ";
- print ",";
- print "
";
- }
-
- }
-
-
- public function jsonexit($data){
- $this->getResponse()->setHeader('Content-Type', 'application/json')->appendBody(json_encode($data,JSON_NUMERIC_CHECK));
- return true;
- }
- function organizationAction()
- {
- $page = $this->_request->getParam('page');
- $name = $this->_request->getParam('name');
- $state=$this->db->query("select distinct responsible.organisation from responsible left join role on role.resid=responsible.id where role.role in ('pointOfContact','resourceProvider','owner')");
- $this->view->organisation=$state->fetchAll();
- if (!empty($name)) {
- $this->view->codename=$name;
- $sql="select distinct m.* from normalmetadata m left join role r on m.uuid=r.uuid left join responsible s on r.resid=s.id where r.role in ('pointOfContact','resourceProvider','owner') and s.organisation=?";
- $sth = $this->db->prepare($sql);
- $sth->execute(array($name));
- $rows = $sth->fetchAll();
- $paginator = Zend_Paginator::factory($rows);
- $paginator->setCurrentPageNumber($this->_getParam('page'));
- $paginator->setItemCountPerPage(10);
- $paginator->setView($this->view);
- Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
- $this->view->paginator=$paginator;
- } else {
- //提供全部分类列表
- }
- }
- function fundAction()
- {
- $id = (int)$this->_request->getParam('id');
- if (!empty($id)) {
- $sql="select * from fund where id=?";
- $this->view->fund=$this->db->fetchRow($sql,array($id));
- if ($this->view->fund) {
- $sql="select distinct m.* from normalmetadata m left join mdfund mf on m.uuid=mf.uuid where mf.fid=?";
- $sth = $this->db->prepare($sql);
- $sth->execute(array($id));
- $rows = $sth->fetchAll();
- $paginator = Zend_Paginator::factory($rows);
- $paginator->setCurrentPageNumber($this->_getParam('page'));
- $paginator->setItemCountPerPage(10);
- $paginator->setView($this->view);
- Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
- $this->view->paginator=$paginator;
- }
- } else {
- //提供全部分类列表
- $sql="select f.id,f.title,f.fund_id,f.fund_type,f.ts_created,count(m.id) as datacount,sum(md.filesize) as filesize from fund f left join mdfund m on f.id=m.fid left join metadata md on m.uuid=md.uuid where m.id is not null group by f.id,f.title,f.fund_id,f.fund_type,f.ts_created order by datacount desc,f.ts_created desc";
- $sth = $this->db->prepare($sql);
- $sth->execute();
- $rows = $sth->fetchAll();
- $paginator = Zend_Paginator::factory($rows);
- $paginator->setCurrentPageNumber($this->_getParam('page'));
- $paginator->setItemCountPerPage(10);
- $paginator->setView($this->view);
- Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
- $this->view->paginator=$paginator;
- $this->_helper->viewRenderer('fund-list');
- }
- }
-
- //实现基于DOI信息的浏览
- function doiAction()
- {
- $ac = $this->_request->getParam('ac');
- if ($ac=='unready') {
- //列出没有DOI的数据
- $sql="select m.* from normalmetadata m where length(m.doi)<3 and m.uuid not in (select uuid from datadoi) order by m.ts_created desc";
- $this->view->pageID='doi-unready';
- } else if ($ac=='prepare') {
- //列出有DOI但还未进行提交申请的数据
- $sql="select m.* from normalmetadata m where length(m.doi)>3 and m.uuid not in (select uuid from datadoi) order by m.ts_created desc";
- $this->view->pageID='doi-prepare';
- } else if ($ac=='unsubmit') {
- //列出有DOI并计划提交申请的数据
- $sql="select m.*,d.doi as datadoi,date(d.ts_created) as ts_created from normalmetadata m left join datadoi d on m.uuid=d.uuid where length(m.doi)>3 and d.ts_created is not null and d.ts_submitted is null order by d.ts_created desc";
- $this->view->pageID='doi-unsubmit';
- } else if ($ac=='submit') {
- //列出有DOI并计划提交申请的数据
- $sql="select m.*,d.doi as datadoi,date(d.ts_submitted) as ts_submitted from normalmetadata m left join datadoi d on m.uuid=d.uuid where length(m.doi)>3 and d.ts_submitted is not null and d.ts_published is null order by d.ts_submitted desc,d.ts_created desc";
- $this->view->pageID='doi-submit';
- } else if ($ac=='publish' || empty($ac)) {
- //默认:列出最新发布的DOI数据
- $sql="select m.*,d.doi as datadoi,date(d.ts_submitted) as ts_submitted,date(d.ts_published) as ts_published from normalmetadata m left join datadoi d on m.uuid=d.uuid where length(m.doi)>3 and d.ts_published is not null order by d.ts_published desc,d.ts_submitted desc,d.ts_created desc";
- $this->view->pageID='doi-publish';
- }
- $sth = $this->db->prepare($sql);
- $sth->execute();
- $rows = $sth->fetchAll();
- $paginator = Zend_Paginator::factory($rows);
- $paginator->setCurrentPageNumber($this->_getParam('page'));
- $paginator->setItemCountPerPage(10);
- $paginator->setView($this->view);
- Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
- $this->view->paginator=$paginator;
- }
-
- //基于数据作者的浏览(包括认证后的数据作者以及未认证的数据作者)
- function authorAction()
- {
- $ac = $this->_request->getParam('ac');
- $id = (int)$this->_request->getParam('id');
- if ($ac=='verified') {
- //已经认证过的数据作者
- $this->view->pageID='author-verified';
- $this->view->ac='verified';
- if ($id) {
- //列出作者的数据
- $sql="select username,realname from users where id=?";
- $this->view->author=$this->db->fetchRow($sql,array($id));
- $sql="select m.* from normalmetadata m left join mdauthor a on a.uuid=m.uuid where a.userid=?";
- $sth = $this->db->prepare($sql);
- $sth->execute(array($id));
- $rows = $sth->fetchAll();
- $paginator = Zend_Paginator::factory($rows);
- $paginator->setCurrentPageNumber($this->_getParam('page'));
- $paginator->setItemCountPerPage(10);
- $paginator->setView($this->view);
- Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
- $this->view->paginator=$paginator;
- } else {
- //已经认证过的数据作者
- $sql="select u.username,u.realname,u.id,count(u.id) as count from mdauthor a left join users u on a.userid=u.id where a.status=1 and a.uuid in (select uuid from normalmetadata) group by u.id,u.username,u.realname";
- $sth = $this->db->prepare($sql);
- $sth->execute();
- $rows = $sth->fetchAll();
- $paginator = Zend_Paginator::factory($rows);
- $paginator->setCurrentPageNumber($this->_getParam('page'));
- $paginator->setItemCountPerPage(50);
- $paginator->setView($this->view);
- Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
- $this->view->paginator=$paginator;
- }
- } else if ($ac=='unverified' || empty($ac)) {
- //未认证的数据作者
- $this->view->pageID='author-unverified';
- $this->view->ac='unverified';
- if ($id) {
- //列出数据
- $sql="select individual as username from responsible where id=?";
- $this->view->author=$this->db->fetchRow($sql,array($id));
- $sql="select distinct m.* from normalmetadata m left join role r on m.uuid=r.uuid left join responsible s on r.resid=s.id where r.role in ('pointOfContact','resourceProvider','owner') and s.id=?";
- $sth = $this->db->prepare($sql);
- $sth->execute(array($id));
- $rows = $sth->fetchAll();
- $paginator = Zend_Paginator::factory($rows);
- $paginator->setCurrentPageNumber($this->_getParam('page'));
- $paginator->setItemCountPerPage(10);
- $paginator->setView($this->view);
- Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
- $this->view->paginator=$paginator;
- } else {
- //列出所有作者
- $sql="select distinct responsible.individual as username,responsible.id from responsible left join role on role.resid=responsible.id where role.role in ('pointOfContact','resourceProvider','owner')";
- $sth = $this->db->prepare($sql);
- $sth->execute();
- $rows = $sth->fetchAll();
- $paginator = Zend_Paginator::factory($rows);
- $paginator->setCurrentPageNumber($this->_getParam('page'));
- $paginator->setItemCountPerPage(50);
- $paginator->setView($this->view);
- Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
- $this->view->paginator=$paginator;
- }
- }
- }
-
- function listAction()
- {
- $sql="select m.uuid,m.title,m.citation,m.doi,d.doi as datadoi,d.ts_published,d.authors,d.publisher,date_part('year',d.ts_published) as publish_year from normalmetadata m
-left join mdstatus s on m.uuid=s.uuid
-left join datadoi d on d.uuid=m.uuid
-where s.status>4
-and m.uuid not in
-(select d.uuid from datasource d left join source s on d.sourceid=s.id
-where s.code in ('heihe','water','hiwater','westee'))
-order by m.title";
- $this->view->metadata=$this->db->fetchAll($sql);
- $sql="select m.uuid,m.title,m.citation,m.doi,d.doi as datadoi,d.ts_published,d.authors,d.publisher,date_part('year',d.ts_published) as publish_year
- from normalmetadata m left join datadoi d on d.uuid=m.uuid left join mdstatus s on m.uuid=s.uuid where s.status>4 and m.title like '黑河综合遥感联合试验%' order by title";
- $this->view->water=$this->db->fetchAll($sql);
- $sql="select m.uuid,m.title,m.citation ,m.doi,d.doi as datadoi,d.ts_published,d.authors,d.publisher,date_part('year',d.ts_published) as publish_year
- from normalmetadata m left join datadoi d on d.uuid=m.uuid left join mdstatus s on m.uuid=s.uuid where s.status>0 and m.title like '黑河生态水文遥感试验%' order by title";
- $this->view->hiwater=$this->db->fetchAll($sql);
- $sql="select m.uuid,m.title,m.citation ,m.doi,d.doi as datadoi,d.ts_published,d.authors,d.publisher,date_part('year',d.ts_published) as publish_year
- from normalmetadata m left join datadoi d on d.uuid=m.uuid left join mdstatus s on m.uuid=s.uuid left join datasource ds on ds.uuid=m.uuid left join source sr on ds.sourceid=sr.id where sr.code='heihe' and s.status>0 and m.title not like '黑河生态水文遥感试验%' order by title";
- $this->view->heihe=$this->db->fetchAll($sql);
- $sql="select m.uuid,m.title,m.citation ,m.doi,d.doi as datadoi,d.ts_published,d.authors,d.publisher,date_part('year',d.ts_published) as publish_year
- from normalmetadata m left join datadoi d on d.uuid=m.uuid left join mdstatus s on m.uuid=s.uuid left join datasource ds on ds.uuid=m.uuid left join source sr on ds.sourceid=sr.id where sr.code='westee' and s.status>4 order by title";
- $this->view->westee=$this->db->fetchAll($sql);
-
- }
-}
-
+ }
+ break;
+ case 'offline4' :
+ if($v['status'] == 5) $showorders[] = $rows[$k];
+ break;
+ }
+ }
+ }
+
+ $this->view->counts = $counts;
+ view::addPaginator($showorders,$this,10);
+
+ }
+
+ /*
+ * 查看数据缩略图
+ */
+ function thumbAction()
+ {
+ $page=(int)$this->_request->getParam('page');
+ if (empty($page)) $page=1;
+ $offset=$this->limit*($page-1);
+ $state=$this->db->query("select count(*) from normalmetadata");
+ $row=$state->fetchAll();
+ $sum=$row[0]['count'];
+ $select=$this->db->select();
+ $select->from('normalmetadata as m','m.*')
+ ->order('m.title desc')->limitPage($page,9);
+ $this->view->metadata = $this->db->fetchAll($select);
+ $this->view->page=new Pagination($sum,$page,$this->limit);
+ }
+
+ /*
+ *附件下载
+ */
+ function attachAction(){
+
+ $uuid = $this->_request->getParam('uuid');
+
+ if(!empty($uuid))
+ {
+
+ $sql="select * from mdattach m left join attachments a on m.id=a.id where m.uuid='$uuid'";
+ $re=$this->db->query($sql);
+ $atts = $re->fetch();
+
+ if(empty($atts['id']))
+ {
+ $this->_redirect("/data/$uuid");
+ }//没有附件
+
+ $auth = Zend_Auth::getInstance();
+ if($auth->hasIdentity())
+ {
+ /*
+ $user = $auth->getIdentity();
+ $userid = $user->id;
+ $sql = "select d.* from dataorder d
+ left join users u on u.id=d.userid
+ left join metadata m on m.uuid=d.uuid
+ where (d.status=5 and d.userid='$userid' and d.uuid='$uuid') or u.usertype='administrator'";
+ $re= $this->db->query($sql);
+ $row=$re->fetch();
+ if(!empty($row['uuid']))
+ {
+ $this->messenger->addMessage('您没有权限下载该附件');
+ $this->_redirect("/data");
+ }
+ else
+ {*/
+ //由于涉及多个文件下载,所以将附件添加到zip压缩文件再输出
+
+ $sql="select * from mdattach m left join attachments a on m.id=a.id where m.uuid='$uuid'";
+ $re=$this->db->query($sql);
+ $atts = $re->fetchAll();
+
+ $zip = new ZipArchive();
+ $url=$this->view->config->upload."tmp/attachments_$uuid.zip";//创建临时文件
+ $opened=$zip->open($url, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE);
+ if( $opened !== true ){
+ die("cannot open {$url} for writing.");
+ }
+
+ $updates = array(); //统计被下载的附件ID
+
+ foreach ($atts as $k=>$v)
+ {
+ if (is_file($this->view->config->upload.$v['filename'])) {
+ $updates[]=$v['id'];
+ $zip->addFile($this->view->config->upload.$v['filename'],'/'.basename($v['filename']));
+ }
+ }
+ $zip->close();
+
+ //更新统计
+ $ids=join(',',$updates);
+ $sql = "update attachments set downtimes=downtimes+1 where id in ($ids)";
+ @$this->db->exec($sql);
+
+
+ //输出下载
+ $content=file_get_contents($url);
+ $this->_helper->layout->disableLayout();
+ $this->_helper->viewRenderer->setNoRender();
+ $this->getResponse()->setHeader('Content-Type', 'application/octet-stream')
+ ->setHeader('Content-Disposition','attachment; filename="'.basename($url).'"')
+ ->setHeader('Content-Length', strlen($content))
+ ->setHeader('Content-Type','application/force-download')
+ ->setHeader('Content-Type','application/download')
+ ->setHeader('Content-Type','application/zip')
+ ->setHeader('Content-Description','File Transfer')
+ ->setHeader('Content-Transfer-Encoding','binary')
+ ->setHeader('Expires',0)
+ ->setHeader('Cache-Control','must-revalidate, post-check=0, pre-check=0')
+ ->setHeader('Pragma','public')
+ ->setBody($content);
+ // }
+ }//end if
+ else
+ {
+ $this->messenger->addMessage('您没有权限下载该附件');
+ $this->_redirect("/data/$uuid");
+ }//未登陆
+ }//end if
+ else
+ {
+ $this->messenger->addMessage('您没有权限下载该附件');
+ $this->_redirect("/data/$uuid");
+ }//无权限
+
+ }
+
+
+ /*
+ * 西部计划项目及其数据产出
+ */
+ public function westeeAction()
+ {
+ //$sql="select w.*,m.uuid from westee w left join westeemd m on w.id=m.eeid order by w.id";
+ $sql="select * from westee order by id";
+ $this->view->westee=$this->db->fetchAll($sql);
+ $sql="select w.eeid,m.title,m.uuid from westeemd w left join metadata m on w.uuid=m.uuid order by w.eeid";
+ $this->view->westeemd=$this->db->fetchAll($sql);
+ }
+
+ public function pingbackAction()
+ {
+ $this->_helper->ViewRenderer->setNoRender();
+ $this->_helper->layout->disableLayout();
+ $server = new Zend_XmlRpc_Server();
+ $server->setClass('PingbackRpc', 'pingback');
+ echo $server->handle();
+ }
+
+ public function pingtestAction()
+ {
+ $this->_helper->ViewRenderer->setNoRender();
+ $this->_helper->layout->disableLayout();
+ $client = new Zend_XmlRpc_Client('http://test.westgis.ac.cn/data/pingback');
+ $arg1 = 'http://wlx.westgis.ac.cn/567/';
+ $arg2 = 'http://test.westgis.ac.cn/data/487591d0-d437-4114-b810-cbef7c4ee4b2';
+ //$result = $client->call('pingback.ping', array($arg1, $arg2));
+ $test = $client->getProxy('pingback');
+ $test->ping($arg1,$arg2);
+ //var_dump($result);
+ }
+ public function outputAction()
+ {
+ $this->_helper->layout->disableLayout();
+ $this->_helper->viewRenderer->setNoRender();
+ $sql="select title,datatype,filesize,id from normalmetadata";
+ $md=$this->db->fetchAll($sql);
+ foreach($md as $m)
+ {
+ print $m["title"].",";
+ print ($m["datatype"]?"内部":"公开").",";
+ print ($m["filesize"]==1?" ":$m["filesize"]).",";
+ $sql1="select keyword from keyword where id=".$m["id"]." and keytype='place'";
+ $kd=$this->db->fetchAll($sql1);
+ foreach ($kd as $p) print $p["keyword"]." ";
+ print ",";
+ $sql1="select keyword from keyword where id=".$m["id"]." and keytype='temporal'";
+ $kd=$this->db->fetchAll($sql1);
+ foreach ($kd as $p) print $p["keyword"]." ";
+ print ",";
+ print "
";
+ }
+
+ }
+
+
+ public function jsonexit($data){
+ $this->getResponse()->setHeader('Content-Type', 'application/json')->appendBody(json_encode($data,JSON_NUMERIC_CHECK));
+ return true;
+ }
+
+ public function organizationAction()
+ {
+ $page = $this->_request->getParam('page');
+ $name = $this->_request->getParam('name');
+ $state=$this->db->query("select distinct responsible.organisation from responsible left join role on role.resid=responsible.id where role.role in ('pointOfContact','resourceProvider','owner')");
+ $this->view->organisation=$state->fetchAll();
+ if (!empty($name)) {
+ $this->view->codename=$name;
+ $sql="select distinct m.* from normalmetadata m left join role r on m.uuid=r.uuid left join responsible s on r.resid=s.id where r.role in ('pointOfContact','resourceProvider','owner') and s.organisation=?";
+ $sth = $this->db->prepare($sql);
+ $sth->execute(array($name));
+ $rows = $sth->fetchAll();
+ $paginator = Zend_Paginator::factory($rows);
+ $paginator->setCurrentPageNumber($this->_getParam('page'));
+ $paginator->setItemCountPerPage(10);
+ $paginator->setView($this->view);
+ Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
+ $this->view->paginator=$paginator;
+ } else {
+ //提供全部分类列表
+ }
+ }
+ function fundAction()
+ {
+ $id = (int)$this->_request->getParam('id');
+ if (!empty($id)) {
+ $sql="select * from fund where id=?";
+ $this->view->fund=$this->db->fetchRow($sql,array($id));
+ if ($this->view->fund) {
+ $sql="select distinct m.* from normalmetadata m left join mdfund mf on m.uuid=mf.uuid where mf.fid=?";
+ $sth = $this->db->prepare($sql);
+ $sth->execute(array($id));
+ $rows = $sth->fetchAll();
+ $paginator = Zend_Paginator::factory($rows);
+ $paginator->setCurrentPageNumber($this->_getParam('page'));
+ $paginator->setItemCountPerPage(10);
+ $paginator->setView($this->view);
+ Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
+ $this->view->paginator=$paginator;
+ }
+ } else {
+ //提供全部分类列表
+ $sql="select f.id,f.title,f.fund_id,f.fund_type,f.ts_created,count(m.id) as datacount,sum(md.filesize) as filesize from fund f left join mdfund m on f.id=m.fid left join metadata md on m.uuid=md.uuid where m.id is not null group by f.id,f.title,f.fund_id,f.fund_type,f.ts_created order by datacount desc,f.ts_created desc";
+ $sth = $this->db->prepare($sql);
+ $sth->execute();
+ $rows = $sth->fetchAll();
+ $paginator = Zend_Paginator::factory($rows);
+ $paginator->setCurrentPageNumber($this->_getParam('page'));
+ $paginator->setItemCountPerPage(10);
+ $paginator->setView($this->view);
+ Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
+ $this->view->paginator=$paginator;
+ $this->_helper->viewRenderer('fund-list');
+ }
+ }
+
+ //实现基于DOI信息的浏览
+ function doiAction()
+ {
+ $ac = $this->_request->getParam('ac');
+ if ($ac=='unready') {
+ //列出没有DOI的数据
+ $sql="select m.* from normalmetadata m where length(m.doi)<3 and m.uuid not in (select uuid from datadoi) order by m.ts_created desc";
+ $this->view->pageID='doi-unready';
+ } else if ($ac=='prepare') {
+ //列出有DOI但还未进行提交申请的数据
+ $sql="select m.* from normalmetadata m where length(m.doi)>3 and m.uuid not in (select uuid from datadoi) order by m.ts_created desc";
+ $this->view->pageID='doi-prepare';
+ } else if ($ac=='unsubmit') {
+ //列出有DOI并计划提交申请的数据
+ $sql="select m.*,d.doi as datadoi,date(d.ts_created) as ts_created from normalmetadata m left join datadoi d on m.uuid=d.uuid where length(m.doi)>3 and d.ts_created is not null and d.ts_submitted is null order by d.ts_created desc";
+ $this->view->pageID='doi-unsubmit';
+ } else if ($ac=='submit') {
+ //列出有DOI并计划提交申请的数据
+ $sql="select m.*,d.doi as datadoi,date(d.ts_submitted) as ts_submitted from normalmetadata m left join datadoi d on m.uuid=d.uuid where length(m.doi)>3 and d.ts_submitted is not null and d.ts_published is null order by d.ts_submitted desc,d.ts_created desc";
+ $this->view->pageID='doi-submit';
+ } else if ($ac=='publish' || empty($ac)) {
+ //默认:列出最新发布的DOI数据
+ $sql="select m.*,d.doi as datadoi,date(d.ts_submitted) as ts_submitted,date(d.ts_published) as ts_published from normalmetadata m left join datadoi d on m.uuid=d.uuid where length(m.doi)>3 and d.ts_published is not null order by d.ts_published desc,d.ts_submitted desc,d.ts_created desc";
+ $this->view->pageID='doi-publish';
+ }
+ $sth = $this->db->prepare($sql);
+ $sth->execute();
+ $rows = $sth->fetchAll();
+ $paginator = Zend_Paginator::factory($rows);
+ $paginator->setCurrentPageNumber($this->_getParam('page'));
+ $paginator->setItemCountPerPage(10);
+ $paginator->setView($this->view);
+ Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
+ $this->view->paginator=$paginator;
+ }
+
+ //基于数据作者的浏览(包括认证后的数据作者以及未认证的数据作者)
+ function authorAction()
+ {
+ $ac = $this->_request->getParam('ac');
+ $id = (int)$this->_request->getParam('id');
+ if ($ac=='verified') {
+ //已经认证过的数据作者
+ $this->view->pageID='author-verified';
+ $this->view->ac='verified';
+ if ($id) {
+ //列出作者的数据
+ $sql="select username,realname from users where id=?";
+ $this->view->author=$this->db->fetchRow($sql,array($id));
+ $sql="select m.* from normalmetadata m left join mdauthor a on a.uuid=m.uuid where a.userid=?";
+ $sth = $this->db->prepare($sql);
+ $sth->execute(array($id));
+ $rows = $sth->fetchAll();
+ $paginator = Zend_Paginator::factory($rows);
+ $paginator->setCurrentPageNumber($this->_getParam('page'));
+ $paginator->setItemCountPerPage(10);
+ $paginator->setView($this->view);
+ Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
+ $this->view->paginator=$paginator;
+ } else {
+ //已经认证过的数据作者
+ $sql="select u.username,u.realname,u.id,count(u.id) as count from mdauthor a left join users u on a.userid=u.id where a.status=1 and a.uuid in (select uuid from normalmetadata) group by u.id,u.username,u.realname";
+ $sth = $this->db->prepare($sql);
+ $sth->execute();
+ $rows = $sth->fetchAll();
+ $paginator = Zend_Paginator::factory($rows);
+ $paginator->setCurrentPageNumber($this->_getParam('page'));
+ $paginator->setItemCountPerPage(50);
+ $paginator->setView($this->view);
+ Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
+ $this->view->paginator=$paginator;
+ }
+ } else if ($ac=='unverified' || empty($ac)) {
+ //未认证的数据作者
+ $this->view->pageID='author-unverified';
+ $this->view->ac='unverified';
+ if ($id) {
+ //列出数据
+ $sql="select individual as username from responsible where id=?";
+ $this->view->author=$this->db->fetchRow($sql,array($id));
+ $sql="select distinct m.* from normalmetadata m left join role r on m.uuid=r.uuid left join responsible s on r.resid=s.id where r.role in ('pointOfContact','resourceProvider','owner') and s.id=?";
+ $sth = $this->db->prepare($sql);
+ $sth->execute(array($id));
+ $rows = $sth->fetchAll();
+ $paginator = Zend_Paginator::factory($rows);
+ $paginator->setCurrentPageNumber($this->_getParam('page'));
+ $paginator->setItemCountPerPage(10);
+ $paginator->setView($this->view);
+ Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
+ $this->view->paginator=$paginator;
+ } else {
+ //列出所有作者
+ $sql="select distinct responsible.individual as username,responsible.id from responsible left join role on role.resid=responsible.id where role.role in ('pointOfContact','resourceProvider','owner')";
+ $sth = $this->db->prepare($sql);
+ $sth->execute();
+ $rows = $sth->fetchAll();
+ $paginator = Zend_Paginator::factory($rows);
+ $paginator->setCurrentPageNumber($this->_getParam('page'));
+ $paginator->setItemCountPerPage(50);
+ $paginator->setView($this->view);
+ Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
+ $this->view->paginator=$paginator;
+ }
+ }
+ }
+
+ function listAction()
+ {
+ $sql="select m.uuid,m.title,m.citation,m.doi,d.doi as datadoi,d.ts_published,d.authors,d.publisher,date_part('year',d.ts_published) as publish_year from normalmetadata m
+left join mdstatus s on m.uuid=s.uuid
+left join datadoi d on d.uuid=m.uuid
+where s.status>4
+and m.uuid not in
+(select d.uuid from datasource d left join source s on d.sourceid=s.id
+where s.code in ('heihe','water','hiwater','westee'))
+order by m.title";
+ $this->view->metadata=$this->db->fetchAll($sql);
+ $sql="select m.uuid,m.title,m.citation,m.doi,d.doi as datadoi,d.ts_published,d.authors,d.publisher,date_part('year',d.ts_published) as publish_year
+ from normalmetadata m left join datadoi d on d.uuid=m.uuid left join mdstatus s on m.uuid=s.uuid where s.status>4 and m.title like '黑河综合遥感联合试验%' order by title";
+ $this->view->water=$this->db->fetchAll($sql);
+ $sql="select m.uuid,m.title,m.citation ,m.doi,d.doi as datadoi,d.ts_published,d.authors,d.publisher,date_part('year',d.ts_published) as publish_year
+ from normalmetadata m left join datadoi d on d.uuid=m.uuid left join mdstatus s on m.uuid=s.uuid where s.status>0 and m.title like '黑河生态水文遥感试验%' order by title";
+ $this->view->hiwater=$this->db->fetchAll($sql);
+ $sql="select m.uuid,m.title,m.citation ,m.doi,d.doi as datadoi,d.ts_published,d.authors,d.publisher,date_part('year',d.ts_published) as publish_year
+ from normalmetadata m left join datadoi d on d.uuid=m.uuid left join mdstatus s on m.uuid=s.uuid left join datasource ds on ds.uuid=m.uuid left join source sr on ds.sourceid=sr.id where sr.code='heihe' and s.status>0 and m.title not like '黑河生态水文遥感试验%' order by title";
+ $this->view->heihe=$this->db->fetchAll($sql);
+ $sql="select m.uuid,m.title,m.citation ,m.doi,d.doi as datadoi,d.ts_published,d.authors,d.publisher,date_part('year',d.ts_published) as publish_year
+ from normalmetadata m left join datadoi d on d.uuid=m.uuid left join mdstatus s on m.uuid=s.uuid left join datasource ds on ds.uuid=m.uuid left join source sr on ds.sourceid=sr.id where sr.code='westee' and s.status>4 order by title";
+ $this->view->westee=$this->db->fetchAll($sql);
+
+ }
+}
+
diff --git a/application/default/controllers/VisualController.php b/application/default/controllers/VisualController.php
new file mode 100644
index 00000000..cb3a0e11
--- /dev/null
+++ b/application/default/controllers/VisualController.php
@@ -0,0 +1,80 @@
+view->config = Zend_Registry::get('config');
+ $this->db=Zend_Registry::get('db');
+
+ $auth = Zend_Auth::getInstance();
+ if($auth->hasIdentity())
+ {
+ $user = $auth->getIdentity();
+ $this->uid = $user->id;
+ }else{
+ $this->_redirect('/account/login?href=/visual');
+ }
+ }
+
+ function indexAction()
+ {
+ $record_type = $this->_getParam("dataset");
+
+ if(empty($record_type))
+ return true;
+
+ $sc = Factory::Bootstrap($record_type);
+ }
+
+
+ //********************************************************
+
+ /*
+ * dataAction() ajax获取数据
+ *
+ * param string $ac //请求的数据类型
+ * param string $dt //请求的数据来源(气象,水文)
+ *
+ * return view
+ */
+ function dataAction()
+ {
+ $this->_helper->viewRenderer->setNoRender();
+ $this->_helper->layout->disableLayout();
+
+ $record_type = $this->_getParam("dataset");
+ $record_subset = $this->_getParam("subdataset");
+
+ if(empty($record_type))
+ return true;
+
+ $record = Factory::Bootstrap($record_type);
+
+ if(!empty($record_subset))
+ {
+ $record->subset = $record_subset;
+ }
+ $data = $record->outPut();
+
+ $this->jsonexit($data);
+ return true;
+
+ }//dataAction() Ajax获取数据
+
+
+ /*
+ * jsonexit() 退出并返回json数据
+ *
+ * param array $data 要返回的JSON数据,可以是任意数组
+ *
+ * return application/JSON
+ */
+ public function jsonexit($data){
+ $this->getResponse()->setHeader('Content-Type', 'application/json')->appendBody(json_encode($data,JSON_NUMERIC_CHECK));
+ return true;
+ }//jsonexit() 退出并返回json数据
+
+}
\ No newline at end of file
diff --git a/application/default/views/scripts/data/index.phtml b/application/default/views/scripts/data/index.phtml
index c589d345..c4ab8b53 100755
--- a/application/default/views/scripts/data/index.phtml
+++ b/application/default/views/scripts/data/index.phtml
@@ -8,81 +8,81 @@ $this->headTitle()->setSeparator(' - ');
.fieldlist ul li:hover{color:#FFF;background:#0088CC;border-radius: 6px 6px 6px 6px;}
.fieldlist ul li:hover a{color:#FFF; text-decoration:none;}
.news_list ul li{line-height:24px;}
-
-
-
-
特色导航
-
+
+
'地点关键词','theme'=>'主题关键词','discipline'=>'学科关键词','stratum'=>'地层关键词','temporal'=>'时间关键词');
+ $keytypezh=array('place'=>'地点关键词','theme'=>'主题关键词','discipline'=>'学科关键词','stratum'=>'地层关键词','temporal'=>'时间关键词');
$type='theme';
-?>
-
-
+?>
+
+
keywords[$type] as $cg) : ?>
- '>()
-
+
-
-
+
+
keywords[$type] as $cg) : ?>
- '>()
-
-
-
+
+
+
-
-
+?>
+
+
keywords[$type] as $cg) : ?>
- '>()
-
+
-
-
+
+
keywords[$type] as $cg) : ?>
- '>()
-
+
@@ -94,7 +94,7 @@ $this->headTitle()->setSeparator(' - ');
'>()
-
+
数据服务
diff --git a/application/default/views/scripts/index/index.phtml b/application/default/views/scripts/index/index.phtml
index 1867014d..84269165 100755
--- a/application/default/views/scripts/index/index.phtml
+++ b/application/default/views/scripts/index/index.phtml
@@ -83,7 +83,7 @@
-
青海省草原总站
+
@@ -110,7 +110,7 @@
-
青海省林业调查规划院
+
@@ -126,7 +126,7 @@
-
青海省水文水资源局
+
diff --git a/application/default/views/scripts/visual/data.phtml b/application/default/views/scripts/visual/data.phtml
new file mode 100644
index 00000000..5bf9f199
--- /dev/null
+++ b/application/default/views/scripts/visual/data.phtml
@@ -0,0 +1,174 @@
+headTitle($this->config->title->site);
+$this->headTitle($this->config->title->author);
+$this->headTitle()->setSeparator(' - ');
+$this->headScript()->appendFile('/js/jquery.colorbox-min.js');
+$this->headLink()->appendStylesheet('/css/colorbox.css');
+$this->headScript()->appendFile('/static/js/highcharts/highcharts.js');
+$this->headScript()->appendFile('/static/js/highcharts/modules/exporting.js');
+$this->breadcrumb('
首页');
+$this->breadcrumb('
数据可视化');
+$this->breadcrumb()->setSeparator(' > ');
+?>
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/application/default/views/scripts/visual/index.phtml b/application/default/views/scripts/visual/index.phtml
new file mode 100644
index 00000000..1e3e474b
--- /dev/null
+++ b/application/default/views/scripts/visual/index.phtml
@@ -0,0 +1,140 @@
+headTitle($this->config->title->site);
+$this->headTitle($this->config->title->data);
+$this->headTitle()->setSeparator(' - ');
+$theme = new Theme;
+$theme->appendPlus($this,'highstock');
+$this->breadcrumb('
首页');
+$this->breadcrumb('
数据与服务');
+$this->breadcrumb('数据可视化');
+$this->breadcrumb()->setSeparator(' > ');
+?>
+
+
\ No newline at end of file
diff --git a/application/layouts/layout.phtml b/application/layouts/layout.phtml
index 2b56287b..825bbf07 100755
--- a/application/layouts/layout.phtml
+++ b/application/layouts/layout.phtml
@@ -28,16 +28,20 @@
= $this->render('footer.phtml') ?>