';
$content.=''.$row['title'].'';
$content.='
';
$dispostion = 'attachment; filename*="utf8\' \''.urlencode($row['title']).'.doc"';
$ua = $_SERVER["HTTP_USER_AGENT"];
if (preg_match("/MSIE/", $ua)) {
$dispostion = 'attachment; filename="'.urlencode($row['title']).'.doc"';
} else if (preg_match("/Firefox/", $ua)) {
$dispostion;
} else {
$dispostion = 'attachment; filename*="'.urlencode($row['title']).'.doc"';
}
$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',$dispostion)
->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);
}
/*
* 转换元数据为PDF格式
*/
public function pdfAction()
{
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender();
$uuid=$this->_request->getParam('uuid');
$review=$this->_request->getParam('review');
error_reporting(1);
if (!empty($uuid))
{
$sql="select x.data,m.title,m.citation,m.suppinfo,m.doi,m.filesize,m.fileformat,m.south,m.east,m.west,m.north,m.timebegin,m.timeend,m.title_en,m.uuid,m.description,g.id,m.projection,t.filetype,
cc.name as category, cc.name_zh as category_zh
from xml x left join metadata m on m.id=x.id left join thumbnail t on x.id=t.id
left join category c on c.id=m.id left join categorycode cc on c.code=cc.code
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 $k=>$refer)
{
$reference.=($k+1).'. '.str_replace(array("\r\n", "\n", "\r"),'',$refer['reference'])."\r\n";
}
$row['reference']=$reference;
$sql="select u.uselimit from mdlimit ml left join metadata m on ml.uuid=m.uuid left join uselimit u on ml.lid=u.id where m.uuid=?";
$sql=$this->db->quoteInto($sql,$uuid);
$limits=$this->db->fetchAll($sql);
$uselimits="";
foreach($limits as $k=>$limit)
{
//$uselimits.=($k+1).'. '.str_replace(array("\r\n", "\n", "\r"),'',$limit['uselimit'])."\r\n";
$uselimits.=($k+1).'. '.str_replace(array("\r\n", "\n", "\r"),'',$limit['uselimit'])."\r\n";
}
$row['uselimits']=$uselimits;
$sql="select ol.* from onlineresource ol left join metadata m on ol.uuid=m.uuid where m.uuid=?";
$sql=$this->db->quoteInto($sql,$uuid);
$row['resources']=$this->db->fetchAll($sql);
$sql="select r.role,s.* from role r left join responsible s on r.resid=s.id left join metadata m on m.uuid=r.uuid where m.uuid=? order by r.role,r.id";
$sql=$this->db->quoteInto($sql,$uuid);
$row['contacts']=$this->db->fetchAll($sql);
$sql="select k.keyword, k.keytype from keyword k left join metadata m on k.id=m.id where m.uuid=? order by k.keytype";
$sql=$this->db->quoteInto($sql,$uuid);
$keys=$this->db->fetchAll($sql);
$keyword=array();
foreach($keys as $key)
{
@$keyword[$key['keytype']].=$key['keyword'].',';
}
$row['keyword']=$keyword;
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)) $row['projection']=$projection;
} else
$projection='';
$dom = new DOMDocument();
$dom->loadXML($row['data']);
$xpath = new DOMXpath($dom);
$row['rfdenom']=@$dom->getElementsByTagName('rfDenom')->item(0)->nodeValue;
$row['resolution']=@$xpath->query('//scaleDist/value/Real')->item(0)->nodeValue;
$row['resolution'].=@$dom->getElementsByTagName('uomName')->item(0)->nodeValue;
//提前对表格进行预处理
/*$wiki=new WikiFormat();
$row['description']=$wiki->parseTable($row["description"]);
preg_match_all('/
[\s\S]*?<\/table>/im', $row['description'],$tables);
foreach($tables as $k=>$table)
{
$row['description']=@str_replace($tables[$k],"\n 【表格内容暂不支持,请访问网站查看,此处请忽略】\n",$row['description']);
}*/
$pdf=new MetadataPDF();
$pdf->metadata=$row;
$pdf->Draw();
$pdf->setTitle($row['title'],true);
$pdf->setAuthor('中国西部环境与生态科学数据中心',true);
$this->getResponse()->setHeader('Content-Type', 'application/pdf');
//->setHeader('Content-Disposition','inline; filename="'.$row['title'].'.pdf"');
$pdf->Output($row['title'].'.pdf','I');
//die();
}
public function odtAction()
{
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender();
$uuid=$this->_request->getParam('uuid');
$review=$this->_request->getParam('review');
//error_reporting(1);
if (!empty($uuid))
{
$sql="select x.data,m.title,m.citation,m.suppinfo,m.doi,m.filesize,m.fileformat,m.south,m.east,m.west,m.north,m.timebegin,m.timeend,m.title_en,m.uuid,m.description,g.id,m.projection,t.filetype,
cc.name as category, cc.name_zh as category_zh
from xml x left join metadata m on m.id=x.id left join thumbnail t on x.id=t.id
left join category c on c.id=m.id left join categorycode cc on c.code=cc.code
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 $k=>$refer)
{
$reference.=($k+1).'. '.str_replace(array("\r\n", "\n", "\r"),'',$refer['reference'])."\r\n";
}
$row['reference']=$reference;
$sql="select u.uselimit from mdlimit ml left join metadata m on ml.uuid=m.uuid left join uselimit u on ml.lid=u.id where m.uuid=?";
$sql=$this->db->quoteInto($sql,$uuid);
$limits=$this->db->fetchAll($sql);
$uselimits="";
foreach($limits as $k=>$limit)
{
//$uselimits.=($k+1).'. '.str_replace(array("\r\n", "\n", "\r"),'',$limit['uselimit'])."\r\n";
$uselimits.=($k+1).'. '.str_replace(array("\r\n", "\n", "\r"),'',$limit['uselimit'])."\r\n";
}
$row['uselimits']=$uselimits;
$sql="select ol.* from onlineresource ol left join metadata m on ol.uuid=m.uuid where m.uuid=?";
$sql=$this->db->quoteInto($sql,$uuid);
$res=$this->db->fetchAll($sql);
$resource="";
foreach($res as $k=>$r)
{
$resource.=($k+1).". ".$r['name'].' '.$r['linkage']."\n";
}
$row['resources']=$resource;
$sql="select r.role,s.* from role r left join responsible s on r.resid=s.id left join metadata m on m.uuid=r.uuid where m.uuid=? order by r.role,r.id";
$sql=$this->db->quoteInto($sql,$uuid);
$contact=$this->db->fetchAll($sql);
$contacts="";
$party_zh=array('resourceProvider'=>'资源提供者','custodian'=>'维护者','owner'=>'拥有者','user'=>'用户','distributor'=>'数据服务联系人','originator'=>'创建者','pointOfContact'=>'联系人','principalInvestigator'=>'数据调查与处理者','processor'=>'处理者','publisher'=>'元数据发布者','author'=>'元数据作者');
foreach($contact as $k=>$c)
{
@$contacts.=($k+1).". ".$party_zh[$c['role']]."\n";
@$contacts.=$c['individual'].' 单位:'.$c['organisation']."\n";
@$contacts.='地址:'.$c['country'].' '.$c['administractive'].' '.$c['city'].' '.$c['delivery']."\n";
@$contacts.='邮编:'.$c['postal'].' 电话:'.$c['phone'].' 邮件:'.$c['email']."\n\n";
}
$row['contacts']=$contacts;
$sql="select k.keyword, k.keytype from keyword k left join metadata m on k.id=m.id where m.uuid=? order by k.keytype";
$sql=$this->db->quoteInto($sql,$uuid);
$keys=$this->db->fetchAll($sql);
$keyword=array();
foreach($keys as $key)
{
@$keyword[$key['keytype']].=$key['keyword'].',';
}
$row['keyword']=$keyword;
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)) $row['projection']=$projection;
} else
$projection='';
$dom = new DOMDocument();
$dom->loadXML($row['data']);
$xpath = new DOMXpath($dom);
$row['rfdenom']=@$dom->getElementsByTagName('rfDenom')->item(0)->nodeValue;
$row['resolution']=@$xpath->query('//scaleDist/value/Real')->item(0)->nodeValue;
$row['resolution'].=@$dom->getElementsByTagName('uomName')->item(0)->nodeValue;
//提前对表格进行预处理
$wiki=new WikiFormat();
$row['description']=$wiki->parseTable($row["description"]);
preg_match_all('/
[\s\S]*?<\/table>/im', $row['description'],$tables);
$search=array();
$replace=array();
foreach($tables as $k=>$table)
{
/*$search[]="
';
echo $next;
}else
{
echo "暂无相关数据";
}
}//相关下载 给我推荐
function relatedAction(){
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender();
$uuid = $this->_request->getParam('uuid');
$sql="select m.id 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 where ";
$where=$this->db->quoteInto('m.uuid = ?',$uuid);
$sql.=$where;
$row=$this->db->fetchRow($sql);
if (!$row) exit("读取信息错误");
$id=$row['id'];
//相关元数据,根据同名关键词实现
$sql="select distinct(md.uuid),md.title from keyword kw left join normalmetadata md on kw.id=md.id where length(md.title)>2 and 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<>?";
$rows=$this->db->fetchAll($sql,array($id,$id));
$paginator = Zend_Paginator::factory($rows);
$paginator->setCurrentPageNumber($this->_getParam('page'));
$paginator->setItemCountPerPage(10);
$paginator->setView($this->view);
Zend_View_Helper_PaginationControl::setDefaultViewPartial('data/pagination_related.phtml');
if ($paginator)
{
foreach($paginator as $c)
{
print '
';
}
} //相关数据
function literatureAction(){
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender();
$uuid = $this->_request->getParam('uuid');
$sql="select m.id 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 where ";
$where=$this->db->quoteInto('m.uuid = ?',$uuid);
$sql.=$where;
$row=$this->db->fetchRow($sql);
if (!$row) exit("读取信息错误");
$id=$row['id'];
$keys=$this->db->fetchAll("select * from keyword where id=? order by keytype,ts_created",array($id));
$wheresql = array();
foreach ($keys as $k=>$v)
{
if($v['keytype']=="theme")
$wheresql[] = " a.title like '%".$v['keyword']."%' ";
}
$wheresql[] = " 1<>1 ";
$wheresql = join(" or ",$wheresql);
$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 ($wheresql) order by a.ts_created desc";
$rows = $this->db->fetchAll($sql);
$paginator = Zend_Paginator::factory($rows);
$paginator->setCurrentPageNumber($this->_getParam('page'));
$paginator->setItemCountPerPage(10);
$paginator->setView($this->view);
Zend_View_Helper_PaginationControl::setDefaultViewPartial('data/pagination_literature.phtml');
if ($paginator)
{
foreach($paginator as $c)
{
$u=parse_url($c['url']);
if (@$u['host']=='hdl.handle.net') $c['url'] = $this->config->seekspace->handleurl.$u['path'];
print '