diff --git a/module/block/control.php b/module/block/control.php index 4b34c27c33..6480945bc3 100644 --- a/module/block/control.php +++ b/module/block/control.php @@ -291,20 +291,19 @@ class block extends control */ public function welcome() { - $projects = $this->loadModel('project')->getPairs(); - $products = $this->loadModel('product')->getPairs(); - $this->view->tutorialed = $this->loadModel('tutorial')->getTutorialed(); - $this->view->tasks = (int)$this->dao->select('count(*) AS count')->from(TABLE_TASK)->where('assignedTo')->eq($this->app->user->account)->fetch('count'); - $this->view->bugs = (int)$this->dao->select('count(*) AS count')->from(TABLE_BUG)->where('assignedTo')->eq($this->app->user->account)->fetch('count'); - $this->view->stories = (int)$this->dao->select('count(*) AS count')->from(TABLE_STORY)->where('assignedTo')->eq($this->app->user->account)->fetch('count'); - $this->view->projects = (int)$this->dao->select('count(*) AS count')->from(TABLE_PROJECT)->where('id')->in(array_keys($projects))->andWhere("(status='wait' or status='doing')")->fetch('count'); - $this->view->products = (int)$this->dao->select('count(*) AS count')->from(TABLE_PRODUCT)->where('status')->ne('closed')->andWhere('id')->in(array_keys($products))->fetch('count'); - $today = date('Y-m-d'); - $this->view->delay['task'] = (int)$this->dao->select('count(*) AS count')->from(TABLE_TASK)->where('assignedTo')->eq($this->app->user->account)->andWhere('deadline')->ne('0000-00-00')->andWhere('deadline')->lt($today)->fetch('count'); - $this->view->delay['bug'] = (int)$this->dao->select('count(*) AS count')->from(TABLE_BUG)->where('assignedTo')->eq($this->app->user->account)->andWhere('deadline')->ne('0000-00-00')->andWhere('deadline')->lt($today)->fetch('count'); - $this->view->delay['project'] = (int)$this->dao->select('count(*) AS count')->from(TABLE_PROJECT)->where('id')->in(array_keys($projects))->andWhere("(status='wait' or status='doing')")->andWhere('end')->lt($today)->fetch('count'); + $data = $this->block->getWelcomeBlockData(); + + $this->view->tasks = $data['tasks']; + $this->view->bugs = $data['bugs']; + $this->view->stories = $data['stories']; + $this->view->projects = $data['projects']; + $this->view->products = $data['products']; + + $this->view->delay['task'] = $data['delayTask']; + $this->view->delay['bug'] = $data['delayBug']; + $this->view->delay['project'] = $data['delayProject']; $time = date('H:i'); $welcomeType = '19:00'; diff --git a/module/block/model.php b/module/block/model.php index 59d10e1d72..53d67e90db 100644 --- a/module/block/model.php +++ b/module/block/model.php @@ -147,6 +147,47 @@ class blockModel extends model ->fetchAll('order'); } + /** + * Get data of welcome block. + * + * @access public + * @return array + */ + public function getWelcomeBlockData() + { + $data = array(); + + $projects = $this->loadModel('project')->getPairs(); + $products = $this->loadModel('product')->getPairs(); + + $data['tasks'] = (int)$this->dao->select('count(*) AS count')->from(TABLE_TASK)->where('assignedTo')->eq($this->app->user->account)->fetch('count'); + $data['bugs'] = (int)$this->dao->select('count(*) AS count')->from(TABLE_BUG)->where('assignedTo')->eq($this->app->user->account)->fetch('count'); + $data['stories'] = (int)$this->dao->select('count(*) AS count')->from(TABLE_STORY)->where('assignedTo')->eq($this->app->user->account)->fetch('count'); + $data['projects'] = (int)$this->dao->select('count(*) AS count')->from(TABLE_PROJECT)->where('id')->in(array_keys($projects))->andWhere("(status='wait' or status='doing')")->fetch('count'); + $data['products'] = (int)$this->dao->select('count(*) AS count')->from(TABLE_PRODUCT)->where('status')->ne('closed')->andWhere('id')->in(array_keys($products))->fetch('count'); + + $today = date('Y-m-d'); + $data['delayTask'] = (int)$this->dao->select('count(*) AS count')->from(TABLE_TASK) + ->where('assignedTo')->eq($this->app->user->account) + ->andWhere('status')->in('wait,doing') + ->andWhere('deadline')->ne('0000-00-00') + ->andWhere('deadline')->lt($today) + ->fetch('count'); + $data['delayBug'] = (int)$this->dao->select('count(*) AS count')->from(TABLE_BUG) + ->where('assignedTo')->eq($this->app->user->account) + ->andWhere('status')->eq('active') + ->andWhere('deadline')->ne('0000-00-00') + ->andWhere('deadline')->lt($today) + ->fetch('count'); + $data['delayProject'] = (int)$this->dao->select('count(*) AS count')->from(TABLE_PROJECT) + ->where('id')->in(array_keys($projects)) + ->andWhere('status')->in('wait,doing') + ->andWhere('end')->lt($today) + ->fetch('count'); + + return $data; + } + /** * Init block when account use first. *