debug = 0; $acName = $this->_request->getActionName(); if(in_array($acName,array("aviation","radiometer","lidar","ccdlidar","widas",'ccdwidas',"nearvis","thermal"))) { $this->view->pageIn = "collapse1"; } else if(in_array($acName,array("airborne","demdsm","reflectance","vegtypeair","vegparam","temperature","soilmoisture"))) { $this->view->pageIn = "collapse2"; } else if(in_array($acName,array("hmon",'hmon2012','hmon2013','hmon2012up','hmon2012middle','hmon2012down','hmon2013up','hmon2013middle','hmon2013down','super','normal','prec'))) { $this->view->pageIn = "collapse3"; } else if(in_array($acName,array("cgs","calibration","ground",'sync'))) { $this->view->pageIn = "collapse4"; } else if(in_array($acName,array("wsn","waternet","soilnet","bnunet",'bnulai'))) { $this->view->pageIn = "collapse5"; } else if(in_array($acName,array("mso","autometeo","ec",'las',"cosmos","tdp","isotope"))) { $this->view->pageIn = "collapse6"; } else if(in_array($acName,array("rsproduct","dem","precipitation",'sm',"snow","vegtype","vegcov",'phenology','npp'))) { $this->view->pageIn = "collapse7"; } else if(in_array($acName,array("browse","thumb","fund","tag","timeline","timemap",'author','organization'))) { $this->view->pageIn = "collapse10"; } else if(in_array($acName,array("other"))) { $this->view->pageIn = "collapse9"; } $this->view->pageID = "hiwater-".$acName; //$this->_helper->layout->setLayout('heihe'); } function indexAction() { $sql="select m.uuid,m.title,m.id,m.description from en.normalmetadata m left join en.thumbnail t on m.id=t.id where m.uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') and length(t.data)>2 order by random() limit 3"; $this->view->meatdata=$this->db->fetchAll($sql); $archive = new Archive($this->db); $this->view->info = $archive->getOneArchive('Heihe Watershed Allied Telemetry Experimental Research (HiWATER)','about'); } /* * 数据浏览 */ function browseAction() { $page=(int)$this->_request->getParam('page'); if (empty($page)) $page=1; $offset=$this->limit*($page-1); $state=$this->db->query("select count(*) from en.normalmetadata where uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') "); $row=$state->fetchAll(); $sum=$row[0]['count']; $select=$this->db->select(); $select->from('en.normalmetadata','*')->where(" uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') ")->order('title desc')->limitPage($page,$this->limit); $this->view->metadata = $this->db->fetchAll($select); $this->view->page=new Pagination($sum,$page,$this->limit); $this->view->offset=$offset+1; } 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 en.normalmetadata where uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') "); $row=$state->fetchAll(); $sum=$row[0]['count']; $select=$this->db->select(); $select->from('en.normalmetadata as m','m.*') ->where(" uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') ") ->order('m.title desc')->limitPage($page,$this->limit); $this->view->metadata = $this->db->fetchAll($select); $this->view->page=new Pagination($sum,$page,$this->limit); } function documentAction() { $page=(int)$this->_request->getParam('page'); if (empty($page)) $page=1; $offset=$this->limit*($page-1); $row=$this->db->fetchAll("select count(*) from reference where language<>'zh' and id in (select refid from mdref where uuid in (select uuid from en.normalmetadata where uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') ))"); $sum=$row[0]['count']; $sql="select * from reference where language<>'zh' and id in (select refid from mdref where uuid in (select uuid from en.normalmetadata where uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') )) order by reference limit ? offset ?"; $this->view->refs=$this->db->fetchAll($sql,array($this->limit,$offset)); $this->view->page=new Pagination($sum,$page,$this->limit,"literatures"); $this->view->offset=$offset+1; } function aviationAction() { $this->getmdlimited(array('WiDAS','WIDAS','PLMR','LIDAR','CASI','thermal-infrared hyperspectral data'),'airborne remote sensing'); $this->_helper->viewRenderer('base'); } function radiometerAction() { $this->getmdlimited('PLMR','airborne remote sensing'); $this->_helper->viewRenderer('base'); } function lidarAction() { $this->getmdlimited('LIDAR','airborne remote sensing',array('CCD')); $this->_helper->viewRenderer('base'); } function ccdlidarAction() { $this->getmdrestricted(array('CCD','airborne remote sensing',"LIDAR")); $this->_helper->viewRenderer('base'); } function widasAction() { $this->getmdlimited('WIDAS','airborne remote sensing',array('CCD')); $this->_helper->viewRenderer('base'); } function ccdwidasAction() { $this->getmdrestricted(array('CCD','airborne remote sensing','WIDAS')); $this->_helper->viewRenderer('base'); } function nearvisAction() { $this->getmdlimited('CASI','airborne remote sensing'); $this->_helper->viewRenderer('base'); } function thermalAction() { $this->getmdlimited('thermal-infrared hyperspectral data','airborne remote sensing'); $this->_helper->viewRenderer('base'); } function airborneAction() { $this->getmdlimited(array('DEM','DSM','DOM','albedo','land use','vegetation type','Vegetation structure parameters','soil water content','land surface temperature'),'airborne remote sensing data products'); $this->_helper->viewRenderer('base'); } function demdsmAction() { $this->getmdlimited(array('DEM','DSM','DOM'),"airborne remote sensing data products"); $this->_helper->viewRenderer('base'); } function reflectanceAction() { $this->getmdlimited(array('albedo'),"airborne remote sensing data products"); $this->_helper->viewRenderer('base'); } function vegtypeairAction() { $this->getmdlimited(array('vegetation type','land use'),'airborne remote sensing data products'); $this->_helper->viewRenderer('base'); } function vegparamAction() { $this->getmdlimited(array("",'Vegetation structure parameters'),"airborne remote sensing data products"); $this->_helper->viewRenderer('base'); } function soilmoistureAction() { $this->getmdlimited(array('','soil water content'),"airborne remote sensing data products"); $this->_helper->viewRenderer('base'); } function temperatureAction() { $this->getmdlimited(array('','land surface temperature'),"airborne remote sensing data products"); $this->_helper->viewRenderer('base'); } function hmonAction() { $this->getmd(array('Hydrometeorology observation network')); $archive = new Archive($this->db); $this->view->info = $archive->getOneArchive('HiWATER-HMon','about'); $this->_helper->viewRenderer('base'); } function superAction() { $this->getmdlimited(array('阿柔超级站','大满超级站','四道桥超级站'),'水文气象'); $this->_helper->viewRenderer('base'); } function normalAction() { $this->getmdlimited(array('景阳岭站','峨堡站','黄草沟站','阿柔阴坡站','阿柔阳坡站','黄藏寺站','大沙龙站','寺大隆站','排露沟林前气象站','水源涵养林研究院观测站','巴吉滩戈壁站','神沙窝沙漠站','张掖湿地站', '花寒子荒漠站','五里墩气象站','四道桥混合林站','四道桥胡杨林站','四道桥裸地站','四道桥农田站','黑河上游生态-水文试验研究站','临泽内陆河流域研究站','阿拉善荒漠生态-水文实验研究站'),'水文气象'); $this->_helper->viewRenderer('base'); } function autometeoAction() { $this->getmdlimited(array('','automatic weather station'),'flux observation matrix'); $this->_helper->viewRenderer('base'); $archive = new Archive($this->db); $this->view->info = $archive->getOneArchive('HiWATER-MSO','about'); } function ecAction() { $this->getmdlimited(array('','eddy covariance system'),'flux observation matrix'); $this->_helper->viewRenderer('base'); $archive = new Archive($this->db); $this->view->info = $archive->getOneArchive('HiWATER-MSO','about'); } function lasAction() { $this->getmdlimited(array('','large aperture scintillometer'),'flux observation matrix'); $this->_helper->viewRenderer('base'); $archive = new Archive($this->db); $this->view->info = $archive->getOneArchive('HiWATER-MSO','about'); } function precAction() { $this->getmd(array('','河川径流观测')); $this->_helper->viewRenderer('base'); } function cgsAction() { $this->getmd(array('calibration measurement','ground measurement','synchronous observation')); $this->_helper->viewRenderer('base'); } function calibrationAction() { $this->getmd(array('','calibration measurement')); $this->_helper->viewRenderer('base'); } function groundAction() { $this->getmd(array('','ground measurement')); $this->_helper->viewRenderer('base'); } function syncAction() { $this->getmd(array('','synchronous observation')); $this->_helper->viewRenderer('base'); } function wsnAction() { $this->getmdlimited(array('WATERNET','SoilNET','BNUNET','LAI'),'Eco-hydrological Wireless Sensor Network'); $this->_helper->viewRenderer('base'); } function waternetAction() { $this->getmd(array('','WATERNET')); $this->_helper->viewRenderer('base'); } function soilnetAction() { $this->getmd(array('','SoilNET')); $this->_helper->viewRenderer('base'); } function bnunetAction() { $this->getmd(array('','BNUNET')); $this->_helper->viewRenderer('base'); } function bnulaiAction() { $this->getmdlimited('LAI','Eco-hydrological Wireless Sensor Network'); $this->_helper->viewRenderer('base'); } function satelliteAction() { $this->getmd(array('','satellite remote sensing')); $this->_helper->viewRenderer('base'); } function soilAction() { $this->getmd(array('','卫星遥感')); $this->_helper->viewRenderer('base'); } function meteoAction() { $this->getmd('气象','theme'); } function hydroAction() { $this->getmd('水文观测','theme'); } function irragationAction() { $this->getmd('灌溉','theme'); } function obsAction() { $this->getmd('试验','theme'); } function msoAction() { $this->getmdlimited(array('automatic weather station','eddy covariance system','large aperture scintillometer','stable isotope','TDP','cosmic-ray soil moisture observing system'),'flux observation matrix'); $this->_helper->viewRenderer('base'); $archive = new Archive($this->db); $this->view->info = $archive->getOneArchive('HiWATER-MSO','about'); } function isotopeAction() { $this->getmdlimited(array('','stable isotope'),'flux observation matrix'); $this->_helper->viewRenderer('base'); } function tdpAction() { $this->getmdlimited(array('','TDP'),'flux observation matrix'); $this->_helper->viewRenderer('base'); } function cosmosAction() { $this->getmdlimited(array('','cosmic-ray soil moisture observing system'),'flux observation matrix'); $this->_helper->viewRenderer('base'); } function rsproductAction() { $this->getmdlimited(array('DEM','DOM','降水','soil moisture','snow','vegetation type','vegetation cover','crop phenology','NPP'),'satellite remote sensing data products'); $this->_helper->viewRenderer('base'); } function demAction() { $this->getmdlimited(array('DEM','DOM'),'数据产品'); $this->_helper->viewRenderer('base'); } function precipitationAction() { $this->getmdlimited(array('降水',''),'数据产品'); $this->_helper->viewRenderer('base'); } function smAction() { $this->getmdlimited(array('soil moisture',""),'satellite remote sensing data products'); $this->_helper->viewRenderer('base'); } function snowAction() { $this->getmdlimited(array('snow',""),'satellite remote sensing data products'); $this->_helper->viewRenderer('base'); } function vegtypeAction() { $this->getmdlimited(array('vegetation type',''),'satellite remote sensing data products'); $this->_helper->viewRenderer('base'); } function vegcovAction() { $this->getmdlimited(array('vegetation cover',''),'satellite remote sensing data products'); $this->_helper->viewRenderer('base'); } function phenologyAction() { $this->getmdlimited(array('crop phenology',''),'satellite remote sensing data products'); $this->_helper->viewRenderer('base'); } function nppAction() { $this->getmdlimited(array('NPP',''),'satellite remote sensing data products'); $this->_helper->viewRenderer('base'); } function hmon2012Action() { $this->getmdrestricted(array('2012','Hydrometeorology observation network')); $archive = new Archive($this->db); $this->view->info = $archive->getOneArchive('HiWATER-HMon','about'); $this->_helper->viewRenderer('base'); } function hmon2013Action() { $this->getmdrestricted(array('2013','Hydrometeorology observation network')); $archive = new Archive($this->db); $this->view->info = $archive->getOneArchive('HiWATER-HMon','about'); $this->_helper->viewRenderer('base'); } function hmon2012upAction() { $this->getmdrestricted(array('2012','上游寒区水文试验区','Hydrometeorology observation network')); $this->_helper->viewRenderer('base'); } function hmon2012middleAction() { $this->getmdrestricted(array('2012','中游人工绿洲试验区','Hydrometeorology observation network')); $this->_helper->viewRenderer('base'); } function hmon2012downAction() { $this->getmdrestricted(array('2012','下游天然绿洲试验区','Hydrometeorology observation network')); $this->_helper->viewRenderer('base'); } function hmon2013upAction() { $this->getmdrestricted(array('2013','上游寒区水文试验区','Hydrometeorology observation network')); $this->_helper->viewRenderer('base'); } function hmon2013middleAction() { $this->getmdrestricted(array('2013','中游人工绿洲试验区','Hydrometeorology observation network')); $this->_helper->viewRenderer('base'); } function hmon2013downAction() { $this->getmdrestricted(array('2013','下游天然绿洲试验区','Hydrometeorology observation network')); $this->_helper->viewRenderer('base'); } function listAction() { $sql="select uuid,title from en.normalmetadata where uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') order by timebegin,title"; $this->view->metadata=$this->db->fetchAll($sql); } function tagAction() { $key = $this->_request->getParam('key'); $keytype = $this->_request->getParam('keytype'); $page=(int)$this->_request->getParam('page'); if (empty($page)) $page=1; $offset=$this->limit*($page-1); if (!empty($key)) { $this->view->codename=$key; $sql=$this->db->quoteInto("select count(k.id) from en.keyword k left join en.normalmetadata m on k.id=m.id where m.uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') and k.keyword=?",$key); $state=$this->db->query($sql); $row=$state->fetchAll(); $sum=$row[0]['count']; $sql="select uuid,title,id,description from en.normalmetadata where uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') and id in (select id from en.keyword where keyword='".$key."') order by timebegin,title limit ? offset ?"; $this->view->metadata=$this->db->fetchAll($sql,array($this->limit,$offset)); $this->view->page=new Pagination($sum,$page,$this->limit); } else { $sql="select k.keyword,count(*),k.keytype from en.keyword k left join en.normalmetadata m on k.id=m.id where m.uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') "; if (!empty($keytype) && ($keytype=='place' || $keytype=='theme' || $keytype=='discipline'||$keytype=='temporal')) $sql.=" and k.keytype='".$keytype."'"; $sql.=' group by k.keyword,k.keytype order by k.keytype,k.keyword,count desc'; $state=$this->db->query($sql); $this->view->keytype=$keytype; $this->view->keywords=$state->fetchAll(); } } 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)) { $search=new SimpleSearch($key); $where=$search->sql_expr(array("title","description")); $page=@(int)$this->_request->getParam('page'); if (empty($page)) $page=1; $offset=$this->limit*($page-1); $row=$this->db->fetchAll("select count(*) from en.normalmetadata where uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') and ".$where); $sum=$row[0]['count']; $sql="select uuid,title,id,description from en.normalmetadata where uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') and ".$where." order by timebegin,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; $this->view->offset=$offset+1; } } function timemapAction() { $sql="select id,uuid,west,south,north,east,title,timebegin,timeend from en.normalmetadata where uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') and timebegin is not null"; $this->view->rows=$this->db->fetchAll($sql); } function timelineAction() { $fn="hiwatertime.xml"; $rows=$this->db->fetchAll("select ts_created from en.normalmetadata where uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') 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"; $rows=$this->db->fetchAll("select id,uuid,description,title,timebegin,timeend from en.normalmetadata where uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') and timebegin is not null order by timebegin,title"); $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); } } function categoryAction() { $code = (int)$this->_request->getParam('code'); $page=(int)$this->_request->getParam('page'); if (empty($page)) $page=1; $offset=$this->limit*($page-1); $this->view->category=$this->db->fetchAll("select c.code,name,name_zh,count(*) from category c left join en.normalmetadata m on c.id=m.id,categorycode cc where c.code=cc.code and m.uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') group by c.code,cc.name,cc.name_zh"); if ($code>0 && $code<20) { $row=$this->db->fetchAll("select count(*) from en.normalmetadata where uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') and id in (select id from category where code=".$code.")"); $sum=$row[0]['count']; $sql="select uuid,title,description,id from en.normalmetadata where uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') and id in (select distinct id from category where code=".$code.") order by timebegin,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->offset=$offset+1; $row=$this->db->fetchRow("select name,name_zh from categorycode where code=?",$code); $this->view->codename=(empty($row['name_zh'])?$row['name']:$row['name_zh']); } else { //提供全部分类列表 } } function viewAction() { parent::viewAction(); include_once("ipip/IP.class.php"); $ip=new IP(); if (!$ip->mainland_verify()) $this->_helper->viewRenderer('hiwater/view'); else $this->_helper->viewRenderer('hiwater/view-tianditu'); } private function getmd($keyword,$type='theme') { $page=(int)$this->_request->getParam('page'); if (empty($page)) $page=1; $offset=$this->limit*($page-1); if (!is_array($keyword)) { $keyword=array($keyword); } $key="("; foreach($keyword as $k) { $key.="'".$k."',"; } $key=substr($key,0,-1); $key.=")"; $keyword=$key; $state=$this->db->query("select count(m.*) from en.normalmetadata m left join datasource d on m.uuid=d.uuid left join source s on d.sourceid=s.id where s.code='hiwater' and m.id in (select id from en.keyword where keytype='".$type."' and keyword in ".$keyword.")"); $row=$state->fetchAll(); $sum=$row[0]['count']; //@todo: add order with title $sql="select uuid,title from en.normalmetadata where uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') and id in (select id from en.keyword where keytype='".$type."' and keyword in ".$keyword.") order by regexp_replace(title,'[0-9]+','','g'),(substring(title, '([0-9]+)'))::int limit ? offset ?"; $this->view->metadata=$this->db->fetchAll($sql,array($this->limit,$offset)); $this->view->page=new Pagination($sum,$page,$this->limit); $this->view->offset=$offset+1; } //获取多项条件并列关系的数据并必须满足limited条件 //$keyword:字符串或字符串数组 //$limited:限制字符串 //$without:明确不包含的字符串数组 private function getmdlimited($keyword,$limited,$without='') { $page=(int)$this->_request->getParam('page'); if (empty($page)) $page=1; $offset=$this->limit*($page-1); if (!is_array($keyword)) { $keyword=array($keyword); } $key="("; foreach($keyword as $k) { $key.="'".$k."',"; } $key=substr($key,0,-1); $key.=")"; $keyword=$key; if (!empty($without)) { if (!is_array($without)) { $without=array($without); } $withoutkey="("; foreach ($without as $wo) { $withoutkey.="'".$wo."',"; } $withoutkey=substr($withoutkey,0,-1); $withoutkey.=")"; } $sql="select count(m.*) from en.normalmetadata m left join datasource d on m.uuid=d.uuid left join source s on d.sourceid=s.id where s.code='hiwater' and m.id in (select id from en.keyword where lower(keyword)=lower('".$limited."')) and m.id in (select id from en.keyword where keyword in ".$keyword.")"; if (!empty($without)) $sql.=" and m.id not in (select id from en.keyword where keyword in $withoutkey)"; $state=$this->db->query($sql); $row=$state->fetchAll(); $sum=$row[0]['count']; //@todo: add order with title $sql="select uuid,title from en.normalmetadata where uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') and id in (select id from en.keyword where lower(keyword)=lower('".$limited."')) and id in (select id from en.keyword where keyword in ".$keyword.")"; if (!empty($without)) $sql.=" and id not in (select id from en.keyword where keyword in $withoutkey)"; $sql.=" order by regexp_replace(title,'[0-9]+','','g'),(substring(title, '([0-9]+)'))::int limit ? offset ?"; $this->view->metadata=$this->db->fetchAll($sql,array($this->limit,$offset)); $this->view->page=new Pagination($sum,$page,$this->limit); $this->view->offset=$offset+1; } //获取多项必须满足的条件 //$keyword:字符串或字符串数组 private function getmdrestricted($keyword) { $page=(int)$this->_request->getParam('page'); if (empty($page)) $page=1; $offset=$this->limit*($page-1); if (!is_array($keyword)) { $keyword=array($keyword); } $key="("; foreach($keyword as $k) { $key.="m.id in (select id from en.keyword where keyword='".$k."') and "; } $key=substr($key,0,-4); $key.=")"; $keyword=$key; $state=$this->db->query("select count(m.*) from en.normalmetadata m left join datasource d on m.uuid=d.uuid left join source s on d.sourceid=s.id where s.code='hiwater' and $keyword"); $row=$state->fetchAll(); $sum=$row[0]['count']; //@todo: add order with title $sql="select uuid,title from en.normalmetadata m where m.uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') and $keyword order by regexp_replace(title,'[0-9]+','','g'),(substring(title, '([0-9]+)'))::int limit ? offset ?"; $this->view->metadata=$this->db->fetchAll($sql,array($this->limit,$offset)); $this->view->page=new Pagination($sum,$page,$this->limit); $this->view->offset=$offset+1; } //基于数据作者的浏览(包括认证后的数据作者以及未认证的数据作者) function authorAction() { $ac = $this->_request->getParam('ac'); $id = (int)$this->_request->getParam('id'); if ($ac=='verified') { //已经认证过的数据作者 $this->view->tabID='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 en.normalmetadata m left join mdauthor a on a.uuid=m.uuid where m.uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') and 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.uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') and a.status=1 and a.uuid in (select uuid from en.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->tabID='author-unverified'; $this->view->ac='unverified'; if ($id) { //列出数据 $sql="select individual as username from en.responsible where id=?"; $this->view->author=$this->db->fetchRow($sql,array($id)); $sql="select distinct m.* from en.normalmetadata m left join en.role r on m.uuid=r.uuid left join en.responsible s on r.resid=s.id where r.uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') and 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 en.responsible left join en.role on role.resid=responsible.id where role.uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') and 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 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 en.normalmetadata m left join mdfund mf on m.uuid=mf.uuid where m.uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') and 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_en,f.fund_id,f.fund_type_en,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 right join en.normalmetadata md on m.uuid=md.uuid where m.uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') group by f.id,f.title,f.fund_id,f.fund_type,f.ts_created order by 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'); } } function organizationAction() { $page = $this->_request->getParam('page'); $name = $this->_request->getParam('name'); $state=$this->db->query("select distinct responsible.organisation from en.responsible left join en.role on role.resid=responsible.id where role.uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') and role.role in ('pointOfContact','resourceProvider','owner')"); $this->view->organisation=$state->fetchAll(); if (!empty($name)) { $this->view->codename=$name; $sql="select distinct m.* from en.normalmetadata m left join en.role r on m.uuid=r.uuid left join en.responsible s on r.resid=s.id where m.uuid in (select d.uuid from datasource d left join source s on d.sourceid=s.id where s.code='hiwater') and 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 { //提供全部分类列表 } } }