132 lines
4.1 KiB
PHP
132 lines
4.1 KiB
PHP
<?php
|
|
/**
|
|
* The control file of report module of ZenTaoPMS.
|
|
*
|
|
* @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.cnezsoft.com)
|
|
* @license ZPL(http://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
|
|
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
|
* @package report
|
|
* @version $Id: control.php 4622 2013-03-28 01:09:02Z chencongzhi520@gmail.com $
|
|
* @link https://www.zentao.net
|
|
*/
|
|
class report extends control
|
|
{
|
|
/**
|
|
* 项目ID。
|
|
* The projectID.
|
|
*
|
|
* @var float
|
|
* @access public
|
|
*/
|
|
public $projectID = 0;
|
|
|
|
/**
|
|
* 构造函数。
|
|
* Construct.
|
|
*
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
}
|
|
|
|
/**
|
|
* 报告主页,跳转到年度数据。
|
|
* The index of report, goto aunnual data.
|
|
*
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function index()
|
|
{
|
|
$this->locate(inlink('annualData'));
|
|
}
|
|
|
|
/**
|
|
* 发送每日提醒邮件。
|
|
* Send daily reminder mail.
|
|
*
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function remind()
|
|
{
|
|
/* Get reminder, and send email. */
|
|
$reminder = $this->reportZen->getReminder();
|
|
|
|
/* Check mail turnon, if the system doesn't turn on the e-mail function, return the tip. */
|
|
$this->loadModel('mail');
|
|
if(!$this->config->mail->turnon)
|
|
{
|
|
echo "You should turn on the Email feature first.\n";
|
|
return false;
|
|
}
|
|
|
|
foreach($reminder as $user => $mail)
|
|
{
|
|
/* Reset $this->output. */
|
|
$this->clear();
|
|
|
|
$mailTitle = $this->lang->report->mailTitle->begin;
|
|
$mailTitle .= isset($mail->bugs) ? sprintf($this->lang->report->mailTitle->bug, count($mail->bugs)) : '';
|
|
$mailTitle .= isset($mail->tasks) ? sprintf($this->lang->report->mailTitle->task, count($mail->tasks)) : '';
|
|
$mailTitle .= isset($mail->todos) ? sprintf($this->lang->report->mailTitle->todo, count($mail->todos)) : '';
|
|
$mailTitle .= isset($mail->testTasks) ? sprintf($this->lang->report->mailTitle->testTask, count($mail->testTasks)) : '';
|
|
$mailTitle .= isset($mail->cards) ? sprintf($this->lang->report->mailTitle->card, count($mail->cards)) : '';
|
|
$mailTitle = rtrim($mailTitle, ',');
|
|
|
|
/* Get email content and title.*/
|
|
$this->view->mail = $mail;
|
|
$this->view->mailTitle = $mailTitle;
|
|
|
|
$oldViewType = $this->viewType;
|
|
if($oldViewType == 'json') $this->viewType = 'html';
|
|
$mailContent = $this->parse('report', 'dailyreminder');
|
|
$this->viewType = $oldViewType;
|
|
|
|
/* Send email.*/
|
|
echo date('Y-m-d H:i:s') . " sending to {$user}, ";
|
|
$this->mail->send($user, $mailTitle, $mailContent, '', true);
|
|
if($this->mail->isError())
|
|
{
|
|
echo "fail: \n" ;
|
|
a($this->mail->getError());
|
|
}
|
|
echo "ok\n";
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 展示年度数据。
|
|
* Show annual data.
|
|
*
|
|
* @param string $year
|
|
* @param string $dept
|
|
* @param string $account
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function annualData(string $year = '', string $dept = '', string $account = '')
|
|
{
|
|
$this->app->loadLang('story');
|
|
$this->app->loadLang('task');
|
|
$this->app->loadLang('bug');
|
|
$this->app->loadLang('testcase');
|
|
|
|
/* Assign annual data. */
|
|
$this->reportZen->assignAnnualReport($year, $dept, $account);
|
|
|
|
$mode = 'company';
|
|
if((int)$dept && empty($account)) $mode = 'dept';
|
|
if($account) $mode = 'user';
|
|
|
|
$this->view->contributionCountTips = $this->report->getContributionCountTips($mode);
|
|
|
|
$this->view->mode = $mode;
|
|
$this->view->account = $account;
|
|
$this->display();
|
|
}
|
|
}
|