_helper->viewRenderer->setNoRender(); $this->_helper->layout->disableLayout(); } function preDispatch() { $this->db=Zend_Registry::get('db'); $this->view->config = Zend_Registry::get('config'); $this->messenger=$this->_helper->getHelper('FlashMessenger'); $this->view->messages = $this->messenger->getMessages(); } /* * 返回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 thumbAction() { $id = (int)$this->_request->getParam('id'); if (empty($id)) { $uuid = $this->_request->getParam('uuid'); if (empty($uuid)) $this->_redirect('/data'); $where=$this->db->quoteInto('uuid = ?',$uuid); } else { $where=$this->db->quoteInto('id = ?',$id); } $sql="select * from thumbnail where ".$where; $thumb=$this->db->fetchRow($sql); $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); if (empty($thumb['data'])) { header("Content-Type:image/png"); header("Content-Length: " . filesize("images/nothumb.png")); $file=fopen("images/nothumb.png",'r'); fpassthru($file); exit; } else { header("Content-Type:image/".$thumb['filetype']); print base64_decode($thumb['data']); } } /* * 查看数据缩略大图 */ function bigthumbAction() { $id = (int)$this->_request->getParam('id'); 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="select g.id as gid,t.filename,t.filetype from geonetworkmetadata g left join metadata m on g.uuid=m.uuid left join thumbnail t on t.id=m.id where ".$where; $thumb=$this->db->fetchRow($sql); $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); if (empty($thumb['filename'])) { header("Content-Type:image/png"); header("Content-Length: " . filesize("images/nothumb.png")); $file=fopen("images/nothumb.png",'r'); fpassthru($file); exit; } else { $url=$this->view->config->bigthumb->path.sprintf('%05d',floor(($thumb['gid']+0.1)/100)*100).'-'.sprintf('%05d',ceil(($thumb['gid']+0.1)/100)*100-1)."/".$thumb['gid']; $url.='/public/'.str_replace('_s.','.',$thumb['filename']); header("Content-Type:image/".$thumb['filetype']); $file=fopen($url,'r'); fpassthru($file); exit; } } /* * 搜索, no page, json output */ function searchAction() { $this->view->addHelperPath('helper','Zend_View_Helper_'); $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); //$page=(int)$this->_request->getParam('page'); //if (empty($page)) $page=1; //$offset=$this->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'); $sql="select id,title,uuid,description,filesize,fileformat from metadata where east? and north?"; if (!empty($key)) { $sql.= " and (title ilike ? or description ilike ?)"; $sql.= " order by title"; $rows=$this->db->fetchAll($sql,array($e,$w,$n,$s,'%'.$key.'%','%'.$key.'%')); } else { $sql.= " order by title"; $rows=$this->db->fetchAll($sql,array($e,$w,$n,$s)); } $this->_helper->json($rows); } } /* * 产生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 metadata'.$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 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 metadata 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(); } 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 metadata"; $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 "
"; } } }