westdc-zf1/application/default/controllers/WaterController.php

182 lines
5.8 KiB
PHP
Raw Normal View History

2010-06-23 15:13:26 +00:00
<?php
class WaterController extends DataController
{
private $limit=20;
function indexAction()
{
//关键词
$state=$this->db->query("select keyword.keyword,count(*) from keyword left join metadata on keyword.id=metadata.id where keyword.keytype='place' and metadata.source='0595169a-279e-4b95-819f-129d0ba4280d' group by keyword.keyword order by count desc");
$k1=$state->fetchAll();
$state=$this->db->query("select k.keyword,count(k.keyword) from keyword k left join metadata m on k.id=m.id where k.keytype='theme' and m.source='0595169a-279e-4b95-819f-129d0ba4280d' group by k.keyword order by count(k.keyword) desc");
$k2=$state->fetchAll();
$state=$this->db->query("select keyword.keyword,count(*) from keyword left join metadata on keyword.id=metadata.id where keyword.keytype='temporal' and metadata.source='0595169a-279e-4b95-819f-129d0ba4280d' group by keyword.keyword order by count desc");
$k5=$state->fetchAll();
$this->view->keywords=array('place'=>$k1,'theme'=>$k2,'discipline'=>$k3,'stratum'=>$k4,'temporal'=>$k5);
$searchform=new SearchForm();
$this->view->searchform=$searchform;
}
function coldAction()
{
$this->getmd('上游寒区水文试验区');
//$this->view->searchform=new SearchForm();
}
function bgAction()
{
//metadata
// 必须确认时间范围信息检查!
$this->getmd('冰沟流域加密观测区');
}
function arAction()
{
2010-06-24 13:37:33 +00:00
$this->getmd('阿柔加密观测区');
2010-06-23 15:13:26 +00:00
}
function bdkAction()
{
2010-06-24 13:37:33 +00:00
$this->getmd('扁都口加密观测区');
}
function ebAction()
{
$this->getmd('峨堡加密观测区');
2010-06-23 15:13:26 +00:00
}
function forestAction()
{
$this->getmd('森林水文试验区');
}
function dykAction()
{
2010-06-24 13:37:33 +00:00
$this->getmd('大野口流域加密观测区');
2010-06-23 15:13:26 +00:00
}
function plgAction()
{
$this->getmd('排露沟流域加密观测区');
}
function aridAction()
{
$this->getmd('中游干旱区水文试验区');
}
function hzzAction()
{
2010-06-24 13:37:33 +00:00
$this->getmd('花寨子加密观测区');
2010-06-23 15:13:26 +00:00
}
function ykAction()
{
2010-06-24 13:37:33 +00:00
$this->getmd('盈科绿洲加密观测区');
2010-06-23 15:13:26 +00:00
}
function zyAction()
{
2010-06-24 13:37:33 +00:00
$this->getmd('张掖市加密观测区');
2010-06-23 15:13:26 +00:00
}
function zynocAction()
{
2010-06-24 13:37:33 +00:00
$this->getmd('观象台加密观测区');
2010-06-23 15:13:26 +00:00
}
function lzgAction()
{
$this->getmd('临泽草地加密观测区');
}
function lzsAction()
{
2010-06-24 13:37:33 +00:00
$this->getmd('临泽站加密观测区');
2010-06-23 15:13:26 +00:00
}
2010-06-24 13:37:33 +00:00
function meteoAction()
{
$this->getmd('气象水文','theme');
}
function autometeoAction()
{
$this->getmd('气象观测','theme');
}
function ecAction()
{
$this->getmd('涡动相关','theme');
}
function lasAction()
{
$this->getmd('大孔径闪烁仪','theme');
}
function normalmeteoAction()
{
$this->getmd('常规气象观测','theme');
}
function regionalmeteoAction()
{
$this->getmd('区域气象观测','theme');
}
function dopplerAction()
{
$this->getmd('降水','theme');
}
function hydroAction()
{
$this->getmd('水文','theme');
}
function airsoundingAction()
{
$this->getmd('大气廓线','theme');
}
function aireboneAction()
{
$this->getmd('航空遥感','theme');
}
function satelliteAction()
{
$this->getmd('卫星遥感','theme');
}
function tagAction()
{
$key = $this->_request->getParam('key');
$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(id) from keyword where keyword=?',$key);
$state=$this->db->query($sql);
$row=$state->fetchAll();
$sum=$row[0]['count'];
$sql="select uuid,title,id,description from metadata where source='0595169a-279e-4b95-819f-129d0ba4280d' and id in (select id from keyword where keyword='".$key."') order by timebegin limit ? offset ?";
$this->view->metadata=$this->db->fetchAll($sql,array($this->limit,$offset));
$this->view->page=new Pagination($sum,$page,$this->limit);
}
}
function timelineAction()
{
$fn="watertime.xml";
if (!file_exists($fn) || (time()-filemtime($fn)>3600*24))
{
$dateformat="M j Y";
$rows=$this->db->fetchAll("select id,uuid,description,title,timebegin,timeend from metadata where source='0595169a-279e-4b95-819f-129d0ba4280d' and timebegin is not null order by timebegin");
$timexml='<data>';
foreach($rows as $row) {
$timexml.='<event start="'.date($dateformat,strtotime($row['timebegin'])).'" ';
if ($row['timeend']!='' && $row['timeend']!=$row['timebegin']) $timexml.=' end="'.date($dateformat,strtotime($row['timeend'])).'" isDuration="true"';
$timexml.= ' title="'.mb_substr($row['title'],31).'" image="/images/westdc_40w.gif" link="/water/'.$row['uuid'].'">';
$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.="</event>\n";
}
$timexml.='</data>';
$fp=fopen($fn,'w');
fwrite($fp,$timexml);
fclose($fp);
}
}
2010-06-24 13:37:33 +00:00
private function getmd($keyword,$type='place')
2010-06-23 15:13:26 +00:00
{
$page=(int)$this->_request->getParam('page');
if (empty($page)) $page=1;
$offset=$this->limit*($page-1);
2010-06-24 13:37:33 +00:00
$state=$this->db->query("select count(*) from metadata where source='0595169a-279e-4b95-819f-129d0ba4280d' and id in (select id from keyword where keytype='".$type."' and keyword='".$keyword."')");
2010-06-23 15:13:26 +00:00
$row=$state->fetchAll();
$sum=$row[0]['count'];
2010-06-24 13:37:33 +00:00
$sql="select uuid,title from metadata where source='0595169a-279e-4b95-819f-129d0ba4280d' and id in (select id from keyword where keytype='".$type."' and keyword='".$keyword."') order by timebegin limit ? offset ?";
2010-06-23 15:13:26 +00:00
$this->view->metadata=$this->db->fetchAll($sql,array($this->limit,$offset));
$this->view->page=new Pagination($sum,$page,$this->limit);
2010-06-24 13:37:33 +00:00
}
2010-06-23 15:13:26 +00:00
}