diff --git a/application/default/controllers/DataController.php b/application/default/controllers/DataController.php index 4e683426..0ab51b1b 100755 --- a/application/default/controllers/DataController.php +++ b/application/default/controllers/DataController.php @@ -1851,95 +1851,7 @@ class DataController extends Zend_Controller_Action } } - /* - * 转换元数据为WORD DOC格式 - */ - public function docAction() - { - $this->_helper->layout->disableLayout(); - $this->_helper->viewRenderer->setNoRender(); - $uuid=$this->_request->getParam('uuid'); - $review=$this->_request->getParam('review'); - if (!empty($uuid)) - { - $sql="select x.data,m.title,m.description,g.id,m.projection from xml x left join metadata m on m.id=x.id left join geonetworkmetadata g on g.uuid=m.uuid where m.uuid=".$this->db->quote($uuid); - $row=$this->db->fetchRow($sql); - $sql="select r.* from reference r left join mdref m on m.refid=r.id where m.uuid=?"; - $sql=$this->db->quoteInto($sql,$uuid); - $ref=$this->db->fetchAll($sql); - $reference='
    '; - foreach($ref as $refer) - { - $reference.='
  1. '.$refer['reference'].'
  2. '; - } - $reference.='
'; - if (is_numeric($row['projection'])) - { - $sql="select proj4text from spatial_ref_sys where auth_srid=?"; - $rs=$this->db->fetchRow($sql,array($row['projection'])); - if ($rs) $projection=$rs['proj4text']; - } - if (empty($projection)) $projection=$row['projection']; - } else - $projection=''; - - $dom = new DOMDocument(); - $dom->loadXML($row['data']); - //提前对表格进行预处理 - $wiki=new WikiFormat(); - $abs=$wiki->parseTable($this->view->escape($row["description"])); - //处理外部链接 - $abs=preg_replace('/\[\s*(http:\/\/.+?)\s+(.*?)\]/m','$2',$abs); - $abs=str_replace(array("\r\n", "\n", "\r"),'

',$abs); - $abs=str_replace("'","'",$abs);//not needed? - $id = $row['id']; - $thumburl=sprintf('%05d',floor(($id+0.1)/100)*100).'-'.sprintf('%05d',ceil(($id+0.1)/100)*100-1)."/".$id; - $xslt = new XSLTProcessor(); - $xslt->registerPHPFunctions(); - $xslt->setParameter('', 'thumburl', $thumburl); - $xslt->setParameter('', 'abstract', $abs); - $xslt->setParameter('','projection',$projection); - $xslt->setParameter('','reference',$reference); - $XSL = new DOMDocument(); - $XSL->load( '../data/doc.xsl', LIBXML_NOCDATA); - $xslt->importStylesheet($XSL); - $content=' -'; - $content.=''.$row['title'].''; - $content.=' - - '; - $content.=$xslt->transformToXML($dom); - if ($review==1) $content.=file_get_contents('../data/review-table.htm',true); - $content.=""; - $this->getResponse()->setHeader('Content-Type', 'application/vnd.ms-doc') - ->setHeader('Content-Disposition','attachment; filename="'.$row['title'].'.doc"') - ->setHeader('Content-Length', strlen($content)) - ->setHeader('Content-Type','application/force-download') - ->setHeader('Content-Type','application/download') - ->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); - } + public function jsonexit($data){ $this->getResponse()->setHeader('Content-Type', 'application/json')->appendBody(json_encode($data,JSON_NUMERIC_CHECK)); @@ -1999,6 +1911,43 @@ class DataController extends Zend_Controller_Action $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; + + } } diff --git a/application/default/views/scripts/data/doi.phtml b/application/default/views/scripts/data/doi.phtml new file mode 100644 index 00000000..1e43d7e1 --- /dev/null +++ b/application/default/views/scripts/data/doi.phtml @@ -0,0 +1,58 @@ +headTitle($this->config->title->site); +$this->headTitle($this->config->title->data); +$this->headTitle('支持项目'); +$this->headTitle()->setSeparator(' - '); +$this->breadcrumb('首页'); +$this->breadcrumb(''.$this->config->title->data.''); +$this->breadcrumb('DOI浏览'); +$this->breadcrumb()->setSeparator(' > '); +$this->theme->AppendPlus($this,'colorbox'); +?> +

+
breadcrumb() ?>
+partial('data/tools.phtml'); ?> + +
+paginator)) : ?> +
+ +paginator as $md) : ?> +
+ + + +
+

escape($md['title']);?>

+ +

DOI: + 申请日期: + 创建日期: + + 发布日期: +

+ +

DOI:

+ + + +
',mb_strlen($md['description'])>400?$this->escape(mb_substr($md['description'],0,400,'UTF-8').'...'):$this->escape($md['description']));?>
+
+
+ + + +暂无对应信息。 + +