db=Zend_Registry::get('db'); $this->view->config = Zend_Registry::get('config'); $this->messenger=$this->_helper->getHelper('FlashMessenger'); $this->view->messages = $this->messenger->getMessages(); $this->view->theme = new Theme(); } function postDispatch() { $this->view->messages = $this->messenger->getMessages(); } function indexAction() { $sql="select (select count(id) from users) as alluser, (select count(id) from normalmetadata) as alldata, (select count(id) as num from dataorder where status=0) as onlinedown, (select count(id) as num from dataorder where status=5) as offlinedown, (select count(id) as num from offlineapp where ts_approved is not null) as offlinepass, (select count(id) as num from offlineapp where ts_approved is null) as offlineunfinished, (select count(id) as num from dataorder where offlineappid>0 and status=-1) as offlinedenied, (select count(id) as num from onlineapp) as onlineapp"; $this->view->stat=$this->db->fetchRow($sql); //下载量统计 $sql = "select sum(num) as num from (select m.filesize/1024 as num,m.title,d.userid from dataorder d left join metadata m on d.uuid=m.uuid where (d.status=0 or d.status=5) and m.filesize>0 group by m.title,d.userid,m.filesize) as t"; $res = $this->db->query($sql); $allsize = $res->fetch(); $this->view->allsize = $allsize; $sql = "select sum(num) as num from (select m.filesize/1024 as num,m.title,d.userid from dataorder d left join metadata m on d.uuid=m.uuid where d.status=5 and m.filesize>0 group by m.title,d.userid,m.filesize) as t"; $res = $this->db->query($sql); $offlinesize = $res->fetch(); $this->view->offlinesize = $offlinesize; $sql = "select sum(num) as num from (select m.filesize/1024 as num,m.title,d.userid from dataorder d left join metadata m on d.uuid=m.uuid where d.status=0 and m.filesize>0 group by m.title,d.userid,m.filesize) as t"; $res = $this->db->query($sql); $onlinesize = $res->fetch(); $this->view->onlinesize = $onlinesize; $sql="select sum(configvalue::real)/1024/1024/1024 as num from g6ftpusersettings where userid in (select id from g6ftpusers where name like 'westdc%' or name='newwestdc') and configname='StatsDownloaded'"; $res = $this->db->query($sql); $onlinesize = $res->fetch(); $this->view->onlineg6size = $onlinesize; }//indexAction 首页 function unitAction() { $ac = $this->_getParam('ac'); $y = (int)$this->_request->getParam('y'); if(!empty($y)) { $n = date("Y",time()); if($y<2004 || $y>$n) { $y=$n; } } $this->view->y = $y; //各单位下载情况,统计的离线申请数据条数,需要有对应的dataorder记录 /*$sql = "select count(d.id) as num,o.unit from dataorder d left join offlineapp o on o.id=d.offlineappid where d.offlineappid>0 and o.unit is not null and d.status>4";*/ //各单位下载情况,统计的离线申请数据次数 $sql = "select count(o.id) as num,o.unit from offlineapp o where o.unit is not null "; if ($y) $sql.=" and extract(year from o.ts_created)='$y'"; $sql.=" group by o.unit"; $fe = $this->db->query($sql); $unitoffline = $fe->fetchAll(); //各单位在线下载情况 $sql = "select count(d.id) as num,o.unit from dataorder d left join onlineapp o on o.id=d.onlineappid where d.onlineappid>0 and o.unit is not null"; if ($y) $sql.=" and extract(year from o.ts_created)='$y'"; $sql.=" group by o.unit"; $fe = $this->db->query($sql); $unitonline = $fe->fetchAll(); $units = array(); foreach($unitonline as $k=>$v) { if(isset($v['num'])) { $units[$v['unit']]['online'] = $v['num']; } } foreach($unitoffline as $k=>$v) { if(isset($v['num'])) { $units[$v['unit']]['offline'] = $v['num']; } } $index = 1; foreach($units as $k=>$v) { if(!isset($v['online'])) { $units[$k]['online'] = 0; } if(!isset($v['offline'])) { $units[$k]['offline'] = 0; } $units[$k]['total'] = $units[$k]['online'] + $units[$k]['offline']; $units[$k]['index'] = $index++; } if($ac == "out") { $type = $this->_getParam('type'); if(empty($type) || $type == "csv") { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); include_once("Stat.php"); $stat = new Stat($this->db); $head = array("id","单位名称","离线申请次数","在线申请次数","总申请次数"); $content = array(); foreach($units as $k=>$v) { $content[] = array( $v['index'], $k, $v['offline'], $v['online'], $v['total'] ); unset($units[$k]); } array_unshift($content,$head); $stat->Download("westdc-download-status.csv",$content,"csv"); exit(); } if($type == "json") { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); include_once("Stat.php"); $stat = new Stat($this->db); $content = array(); foreach($units as $k=>$v) { $content[] = array( 'index'=>$v['index'], 'unit'=>$k, 'offline'=>$v['offline'], 'online'=>$v['online'], 'total'=>$v['total'] ); unset($units[$k]); } $stat->Download("westdc-download-status.json",$content,"json"); exit(); } } $this->view->units = $units; }//分单位统计 //按用户统计 function userAction(){ $ac = $this->_getParam('ac'); if($ac == "get") { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); include_once("Stat.php"); $stat = new Stat($this->db); $rows = $stat->UserDataorder(); $down = $this->_getParam('down'); if(empty($down)) { $this->jsonexit(array("aaData"=>$rows)); return true; } if($down == "csv") { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $head = array("id","姓名","离线申请次数","在线申请次数","总申请次数"); array_unshift($rows,$head); $stat->Download("westdc-download-status.csv",$rows,"csv"); exit(); } if($down == "json") { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); /* $head = array("id","姓名","离线申请次数","在线申请次数","总申请次数"); array_unshift($rows,$head); */ $stat->Download("westdc-download-status.json",$rows,"json"); exit(); } } }//userAction() function monthAction(){ $y = (int)$this->_request->getParam('y'); if(!empty($y)) { $n = date("Y",time()); if($y<2004 || $y>$n) { $y=$n; } } $this->view->y = $y; $sql = "select count(extract(month from ts_created)) as c,extract(month from ts_created) as m,extract(year from ts_created) as y from onlineapp where id in (select distinct(onlineappid) from dataorder)"; if ($y) $sql.=" and extract(year from ts_created)='$y' "; $sql.=" group by extract(month from ts_created),extract(year from ts_created) order by extract(year from ts_created),extract(month from ts_created)"; $rs = $this->db->query($sql); $rows = $rs->fetchAll(); $this->view->data = $rows; $sql = "select count(extract(month from ts_created)) as c,extract(month from ts_created) as m,extract(year from ts_created) as y from dataorder where status=0"; if ($y) $sql.=" and extract(year from ts_created)='$y' "; $sql.=" group by extract(month from ts_created),extract(year from ts_created) order by extract(year from ts_created),extract(month from ts_created)"; $rs = $this->db->query($sql); $rows = $rs->fetchAll(); $this->view->online = $rows; $sql = "select count(extract(month from ts_created)) as c,extract(month from ts_created) as m,extract(year from ts_created) as y from offlineapp where ts_approved is not null"; if ($y) $sql.=" and extract(year from ts_created)='$y' "; $sql.=" group by extract(month from ts_created),extract(year from ts_created) order by extract(year from ts_created),extract(month from ts_created)"; $rs = $this->db->query($sql); $rows = $rs->fetchAll(); if(count($rows)<=0) { $this->view->offline=""; } $this->view->offline = $rows; $sql = "select count(extract(month from ts_created)) as c,extract(month from ts_created) as m,extract(year from ts_created) as y from users"; if ($y) $sql.=" where extract(year from ts_created)='$y' "; $sql.=" group by extract(month from ts_created),extract(year from ts_created) order by extract(year from ts_created),extract(month from ts_created)"; $rs = $this->db->query($sql); $rows = $rs->fetchAll(); if(count($rows)<=0) { $this->view->newuser=""; } $this->view->newuser = $rows; }//按月份统计 function awstatswebAction() { }//awstats web 统计 function awstatsftpAction() { }//awstats ftp 统计 function webalizerAction() { }//webalizer 统计 function waterAction() { $sql="select count(k.keyword) as num,d.status,k.keyword from dataorder d left join metadata m on d.uuid=m.uuid left join keyword k on m.id=k.id where (d.status=5 or d.status=-1) and m.source='0595169a-279e-4b95-819f-129d0ba4280d' and (k.keyword='航空遥感' or k.keyword='卫星遥感' or k.keyword='气象水文' or k.keyword='上游寒区水文试验区' or k.keyword='森林水文试验区' or k.keyword='中游干旱区水文试验区') group by k.keyword,d.status order by k.keyword desc,d.status desc"; $re =$this->db->query($sql); $type =$re->fetchAll();//按分类 $this->view->type = $type; $sql="select count(extract(month from o.ts_created)) as c,extract(month from o.ts_created) as m,extract(year from o.ts_created) as y from offlineapp o left join dataorder d on d.offlineappid=o.id left join metadata m on m.uuid=d.uuid where m.source='0595169a-279e-4b95-819f-129d0ba4280d' and (d.status=3 or d.status=5 or d.status=-1) group by extract(month from o.ts_created),extract(year from o.ts_created) order by extract(year from o.ts_created),extract(month from o.ts_created)"; $re=$this->db->query($sql); $month=$re->fetchAll(); $this->view->month = $month; $sql = "select extract(year from o.ts_created) as y,extract(month from o.ts_created) as m, count(extract(month from o.ts_created)) as c from (select distinct(o.id),o.ts_created from offlineapp o where o.datalist like '%黑河综合遥感联合试验%') as o group by extract(month from o.ts_created),extract(year from o.ts_created) order by extract(year from o.ts_created),extract(month from o.ts_created)"; $re=$this->db->query($sql); $order=$re->fetchAll(); $this->view->order = $order; $sql = "select (sum(m.filesize)/1024) as n from dataorder d left join metadata m on d.uuid=m.uuid where d.status=5 and m.source='0595169a-279e-4b95-819f-129d0ba4280d'"; $re=$this->db->query($sql); $num=$re->fetchAll(); $this->view->num=$num; $sql = "select count(lower(o.unit)) as c,lower(o.unit) as u from offlineapp o left join dataorder d on d.offlineappid=o.id left join metadata m on m.uuid=d.uuid where m.source='0595169a-279e-4b95-819f-129d0ba4280d' and (d.status=5) group by lower(o.unit) order by lower(o.unit)"; $re=$this->db->query($sql); $units=$re->fetchAll(); $this->view->units=$units; $sql = "select count(t.unit) as c,t.unit from (select distinct(o.id),o.unit from offlineapp o left join dataorder d on d.offlineappid=o.id left join metadata m on m.uuid=d.uuid where m.source='0595169a-279e-4b95-819f-129d0ba4280d' and (d.status=5) ) as t group by t.unit"; $re = $this->db->query($sql); $ounit= $re->fetchAll(); $this->view->ounit = $ounit; //water 项目按月统计下载量 $sql = "select (sum(m.filesize)/1024) as n,extract(month from d.ts_created) as m,extract(year from d.ts_created) as y from dataorder d left join metadata m on d.uuid=m.uuid where d.status=5 and m.source='0595169a-279e-4b95-819f-129d0ba4280d' group by extract(month from d.ts_created),extract(year from d.ts_created) order by extract(year from d.ts_created),extract(month from d.ts_created)"; $re = $this->db->query($sql); $dm = $re->fetchAll(); $this->view->dm = $dm; }//WATER项目 public function jsonexit($data){ $this->getResponse()->setHeader('Content-Type', 'application/json')->appendBody(json_encode($data,JSON_NUMERIC_CHECK)); return true; }//jsonexit() 退出并返回json数据 }