更新doc格式的数据引用方式以及项目支持

This commit is contained in:
wlx 2013-06-18 02:03:32 +00:00
parent c821576353
commit c47d78e7a1
2 changed files with 65 additions and 13 deletions

View File

@ -269,9 +269,13 @@ class ServiceController extends Zend_Controller_Action
$review=$this->_request->getParam('review');
if (!empty($uuid))
{
$sql="select g.data,m.title,m.description,g.id,m.projection from metadata m left join xml x on m.id=x.id left join geonetworkmetadata g on g.uuid=m.uuid where m.uuid=".$this->db->quote($uuid);
$sql="select g.data,m.title,m.description,g.id,m.projection,m.citation,m.title_en
,m.ts_published,d.doi as datadoi,d.authors,d.author_en,d.publisher,d.publisher_en, date_part('year',d.ts_published) as publish_year
from metadata m left join thumbnail t on m.id=t.id
left join datadoi d on d.uuid=m.uuid
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="select r.* from reference r left join mdref m on m.refid=r.id where m.reftype=0 and m.uuid=? order by m.place";
$sql=$this->db->quoteInto($sql,$uuid);
$ref=$this->db->fetchAll($sql);
$reference='<ol>';
@ -286,9 +290,50 @@ class ServiceController extends Zend_Controller_Action
$rs=$this->db->fetchRow($sql,array($row['projection']));
if ($rs) $projection=$rs['proj4text'];
}
if (empty($projection)) $projection=$row['projection'];
} else
$projection='';
if (empty($projection)) $projection=$row['projection'];
//判断是否使用多篇文献引用
$sql="select r.* from reference r left join mdref m on m.refid=r.id where m.reftype=3 and m.uuid=? order by m.place";
$sql=$this->db->quoteInto($sql,$uuid);
$ref=$this->db->fetchAll($sql);
$ref1="";
foreach($ref as $k=>$refer)
{
$ref1.='<li>'.str_replace(array("\r\n", "\n", "\r"),'',$refer['reference'])."</li>";
}
$row['mcitation']=$ref1;
$citation='';
if ($row['mcitation'])
{
$citation=$row['mcitation'];
} else if ($row['citation'])
{
if (empty($row['datadoi']))
{
$citation=$row['citation'];
}
elseif (!strpos($row['citation'],$row['datadoi']))
{
$citation='<li>文章引用:'.$row['citation'].'</li>';
$citation.="<li>数据的引用:";
$citation.=substr($row['authors'],1,-1).'. '.$row['title'].'. '.$row['publisher'].', '.(empty($row['ts_published'])?$row['publish_year']:date('Y',strtotime($row['ts_published']))).'. doi:'.$row['datadoi'];
$citation.=' ['.str_replace('"','',substr($row['author_en'],1,-1)).'. '.$row['title_en'].'. '.$row['publisher_en'].', '.(empty($row['ts_published'])?$row['publish_year']:date('Y',strtotime($row['ts_published']))).'. doi:'.$row['datadoi'].']';
$citation.="</li>";
}
}
//支持项目判断
$sql="select f.* from fund f left join mdfund m on m.fid=f.id where m.uuid=? order by m.place";
$sql=$this->db->quoteInto($sql,$uuid);
$ref=$this->db->fetchAll($sql);
$fund="";
foreach($ref as $k=>$refer)
{
$fund.='<li>'.$refer['fund_type'].''.str_replace(array("\r\n", "\n", "\r"),'',$refer['title']).'(编号:'.$refer['fund_id'].")</li>";
}
if (empty($fund)) $fund=$row['suppinfo'];
}
$dom = new DOMDocument();
$dom->loadXML($row['data']);
@ -306,7 +351,9 @@ class ServiceController extends Zend_Controller_Action
$xslt->setParameter('', 'thumburl', $thumburl);
$xslt->setParameter('', 'abstract', $abs);
$xslt->setParameter('','projection',$projection);
$xslt->setParameter('','reference',$reference);
$xslt->setParameter('','reference',$reference);
$xslt->setParameter('','citation',$citation);
$xslt->setParameter('','fund',$fund);
$XSL = new DOMDocument();
$XSL->load( '../data/doc.xsl', LIBXML_NOCDATA);
$xslt->importStylesheet($XSL);
@ -319,7 +366,7 @@ class ServiceController extends Zend_Controller_Action
div{clear: both;margin: 0 auto;width:100%;vertical-align:baseline;}
#uuid{text-align: right;}
h3{font-size: 18px;}
img {border:0 none;}
img {}
a, a:visited {color:Blue;text-decoration:none;}
a:hover{text-decoration:underline;}
ul{list-style: none;margin: 0;}
@ -347,7 +394,7 @@ class ServiceController extends Zend_Controller_Action
$content.=$xslt->transformToXML($dom);
if ($review==1) $content.=file_get_contents('../data/review-table.htm',true);
$content.="</body></html>";
$content.="</body></html>";
$this->getResponse()->setHeader('Content-Type', 'application/vnd.ms-doc')
->setHeader('Content-Disposition',$dispostion)
->setHeader('Content-Length', strlen($content))

View File

@ -7,6 +7,8 @@
<xsl:param name="abstract" select="defaultstring"/>
<xsl:param name="projection" select="defaultstring"/>
<xsl:param name="reference" select="defaultstring"/>
<xsl:param name="citation" select="defaultstring"/>
<xsl:param name="fund" select="defaultstring"/>
<xsl:template match="/">
<img>
<xsl:attribute name="src">http://westdc.westgis.ac.cn/images/westdc-logo-1.png</xsl:attribute>
@ -112,10 +114,9 @@
</li>
<li><h4 style="background-color:#DEE2E4">本数据的引用</h4>
<ol>
<xsl:for-each select="//Metadata/dataIdInfo/idCitation/otherCitDet">
<li><xsl:value-of select="."/></li>
</xsl:for-each>
</ol>
<xsl:if test="$citation!=''">
<xsl:value-of select="$citation" disable-output-escaping="yes"/>
</xsl:if> </ol>
</li>
<li><h4 style="background-color:#DEE2E4">建议参考文献</h4>
<xsl:if test="$reference!=''">
@ -132,7 +133,11 @@
</xsl:if>
</li>
<li><h4 style="background-color:#DEE2E4">项目支持信息</h4>
<p><xsl:value-of select="//Metadata/dataIdInfo/suppInfo"/></p>
<ol>
<xsl:if test="$fund!=''">
<xsl:value-of select="$fund" disable-output-escaping="yes"/>
</xsl:if>
</ol>
</li>
<li><h4 style="background-color:#DEE2E4">数据使用声明</h4>
<ol><xsl:for-each select="//Metadata/dataIdInfo/resConst/Consts/useLimit">