diff --git a/application/admin/controllers/StatController.php b/application/admin/controllers/StatController.php
index 5df02b1c..9d93243b 100644
--- a/application/admin/controllers/StatController.php
+++ b/application/admin/controllers/StatController.php
@@ -1,437 +1,462 @@
-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();
- $this->_helper->layout->setLayout('administry');
- }
- 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 awstatsweb2Action()
- {
-
- }//awstats web 统计
-
- function awstatsftpAction()
- {
-
- }//awstats ftp 统计
-
- function awstatsftp2Action()
- {
-
- }//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数据
-
-}
-
+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();
+ $this->_helper->layout->setLayout('administry');
+ }
+ 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(){
+
+ $this->view->ac = $ac = $this->_getParam('ac');
+
+ if($ac == "new")
+ {
+ $this->_helper->viewRenderer('user-new');
+ $this->view->year = $year = !empty($this->_getParam('year')) ? $this->_getParam('year'):date("Y");
+ $this->view->by = $by = !empty($this->_getParam('by')) ? $this->_getParam('by'):"month";
+ $userStatistics = new \Statistics\User();
+
+ if($by == "month")
+ {
+ $this->view->data = $userStatistics->getNewUsersByMonth($year);
+ }
+
+ if($by == "year")
+ {
+ $this->view->data = $userStatistics->getNewUsersByYear($year);
+ }
+
+ if($by == "monthavg")
+ {
+ $this->view->data = $userStatistics->getAverageSingupByMonth($year);
+ }
+
+ return true;
+ }
+
+ 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 awstatsweb2Action()
+ {
+
+ }//awstats web 统计
+
+ function awstatsftpAction()
+ {
+
+ }//awstats ftp 统计
+
+ function awstatsftp2Action()
+ {
+
+ }//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数据
+
+}
+
diff --git a/application/admin/views/scripts/stat/user-nav.phtml b/application/admin/views/scripts/stat/user-nav.phtml
new file mode 100644
index 00000000..107f3f29
--- /dev/null
+++ b/application/admin/views/scripts/stat/user-nav.phtml
@@ -0,0 +1,4 @@
+
+ - ac) ? 'class="active"':"" ?>>概况
+ - ac == "new" ? 'class="active"':"" ?>>新用户
+
\ No newline at end of file
diff --git a/application/admin/views/scripts/stat/user-new.phtml b/application/admin/views/scripts/stat/user-new.phtml
new file mode 100644
index 00000000..bc40c7d5
--- /dev/null
+++ b/application/admin/views/scripts/stat/user-new.phtml
@@ -0,0 +1,158 @@
+headTitle($this->config->title->site);
+ $this->headTitle('后台管理');
+ $this->headTitle()->setSeparator(' - ');
+ $this->theme->AppendPlus($this,'jquery');
+ $this->theme->AppendPlus($this,'colorbox');
+ $this->headLink()->appendStylesheet('/css/jquery.jqplot.css');
+ $this->breadcrumb('首页');
+ $this->breadcrumb('后台首页');
+ $this->breadcrumb()->setSeparator(' > ');
+?>
+
+
+
+
+
+
+
+
+ = $this->partial('stat/left.phtml'); ?>
+
+
+
+ = $this->partial('stat/user-nav.phtml',array('ac'=>$this->ac)); ?>
+
+
+
+
+ 年份:
+ by,array("year","monthavg") )) {?>
所有
+ =2004 ;$i--)
+ {
+ $active = $this->year == $i ? "disabled":"";
+ echo '
'.$i.'';
+ }
+ ?>
+
+
+ by == 'month' && !empty($this->data)){ ?>
+
+
+
= $this->year ?>的按月新用户注册量统计
+
+
+
+
+
+ 月份 |
+ 增量 |
+
+
+
+ data as $k=>$v) {?>
+ = $v['date_part'] ?> | = $v['count'] ?> |
+
+
+
+
+
+
+
+
+
+
+
+
+ by == 'year' && !empty($this->data)){ ?>
+
+
+
= $this->year == -1 ? "所有":$this->year ?>的新用户注册量统计
+
+
+
+
+
+ 年份 |
+ 增量 |
+
+
+
+ data as $k=>$v) {?>
+ = $v['date_part'] ?> | = $v['count'] ?> |
+
+
+
+
+
+
+
+
+
+ by == 'monthavg' && !empty($this->data)){ ?>
+
+
+
= $this->year ?>的月均用户注册量
+
+
+
+
+
+ 年份 |
+ 月均 |
+
+
+
+ data as $k=>$v) {?>
+ = $v['date_part'] ?> | = $v['count'] ?> |
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/application/admin/views/scripts/stat/user.phtml b/application/admin/views/scripts/stat/user.phtml
index b90b15d4..1b2adac8 100644
--- a/application/admin/views/scripts/stat/user.phtml
+++ b/application/admin/views/scripts/stat/user.phtml
@@ -1,72 +1,62 @@
-headTitle($this->config->title->site);
- $this->headTitle('后台管理');
- $this->headTitle()->setSeparator(' - ');
- $this->headLink()->appendStylesheet('/css/admin.css');
- $this->theme->AppendPlus($this,'jquery');
- $this->theme->AppendPlus($this,'colorbox');
- $this->theme->AppendPlus($this,'datatable');
- $this->breadcrumb('首页');
- $this->breadcrumb('后台首页');
- $this->breadcrumb()->setSeparator(' > ');
-?>
-
-
-= $this->partial('stat/left.phtml'); ?>
-
-
-
-
-
-点击列名进行排序
-
-
-
-
-
- ID |
- 用户 |
- 离线申请次数 |
- 在线申请次数 |
- 总申请次数 |
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/application/module/Statistics/User.php b/application/module/Statistics/User.php
new file mode 100644
index 00000000..c7b69c04
--- /dev/null
+++ b/application/module/Statistics/User.php
@@ -0,0 +1,130 @@
+db = \Zend_Registry::get('db');
+ }else{
+ $this->db = $db;
+ }
+
+ $this->config = \Zend_Registry::get('config');
+
+ $this->table = new \Helpers\Table();
+ }
+
+ public function ThisYear(){
+ return date("Y",time());
+ }
+
+ //按年统计新用户
+ public function getNewUsersByYear($year = 0)
+ {
+ if(empty($year))
+ {
+ $year = $this->ThisYear();
+ }
+
+ if($year == -1)
+ {
+ $sql = "select count(id),extract(year from ts_created)
+ from users
+ group by extract(year from ts_created)
+ order by date_part";
+ }else{
+ $sql = "select count(id),extract(year from ts_created)
+ from users
+ where extract(year from ts_created)='$year'
+ group by extract(year from ts_created)";
+ }
+
+ $rs = $this->db->query($sql);
+ $rows = $rs->fetchAll();
+ return $rows;
+ }
+
+ //按月统计新用户
+ public function getNewUsersByMonth($year = 0)
+ {
+ if(empty($year))
+ {
+ $year = $this->ThisYear();
+ }
+
+ $sql = "select count(id),extract(month from ts_created)
+ from users
+ where extract(year from ts_created)=$year
+ group by extract(month from ts_created)
+ order by date_part";
+
+ $rs = $this->db->query($sql);
+ $rows = $rs->fetchAll();
+ return $rows;
+ }
+
+ //月均注册量
+ public function getAverageSingupByMonth($year = 0)
+ {
+ if(empty($year))
+ {
+ $year = $this->ThisYear();
+ }
+
+ $sql = "select round(count(id)/12) as count,extract(year from ts_created)
+ from users
+ where extract(year from ts_created)='$year'
+ group by extract(year from ts_created)";
+
+ $rs = $this->db->query($sql);
+ $rows = $rs->fetchAll();
+ return $rows;
+ }
+
+ //总用户量
+ public function getTotal($year = 0)
+ {
+ if(empty($year))
+ {
+ $year = $this->ThisYear();
+ }
+
+ $sql = "";
+
+ $rs = $this->db->query($sql);
+ $rows = $rs->fetchAll();
+ return $rows;
+ }
+
+ //平均申请数
+ public function getAverageApplicationTimes($times = 1)
+ {
+ if(empty($year))
+ {
+ $times = 1;
+ }
+
+ $sql = "";
+
+ $rs = $this->db->query($sql);
+ $rows = $rs->fetchAll();
+ return $rows;
+ }
+
+}