* fix score module

This commit is contained in:
滔哥
2017-11-01 11:29:07 +08:00
parent 3b246f43f1
commit c5d9187baf
15 changed files with 265 additions and 175 deletions
+4
View File
@@ -44,6 +44,7 @@ $filter->mail = new stdclass();
$filter->user = new stdclass();
$filter->block = new stdclass();
$filter->file = new stdclass();
$filter->my = new stdclass();
$filter->block->default = new stdclass();
$filter->block->main = new stdclass();
@@ -85,6 +86,7 @@ $filter->testtask->default = new stdclass();
$filter->todo->export = new stdclass();
$filter->upgrade->license = new stdclass();
$filter->user->login = new stdclass();
$filter->my->index = new stdclass();
$filter->bug->batchcreate->cookie['preBranch'] = 'int';
$filter->bug->browse->cookie['bugModule'] = 'int';
@@ -160,6 +162,8 @@ $filter->todo->export->cookie['checkedItem'] = 'reg::checked';
$filter->user->login->cookie['keepLogin'] = 'equal::on';
$filter->my->index->cookie['showNotice'] = 'int';
$filter->block->default->get['hash'] = 'reg::md5';
$filter->block->main->get['blockid'] = 'code';
$filter->block->main->get['blockTitle'] = 'reg::any';
+7 -7
View File
@@ -77,23 +77,23 @@ ALTER TABLE `zt_team` CHANGE `days` `days` SMALLINT(5) UNSIGNED NOT NULL DEFA
ALTER TABLE `zt_team` DROP PRIMARY KEY;
ALTER TABLE `zt_team` ADD PRIMARY KEY (`project`, `task`, `account`);
ALTER TABLE `zt_user` ADD `score` DECIMAL(12,1) NOT NULL DEFAULT '0' AFTER `deleted`;
ALTER TABLE `zt_user` ADD `scoreLevel` DECIMAL(12,1) NOT NULL DEFAULT '0' AFTER `score`;
ALTER TABLE `zt_user` ADD `score` INT(12) NOT NULL DEFAULT '0' AFTER `deleted`;
ALTER TABLE `zt_user` ADD `scoreLevel` INT(11) NOT NULL DEFAULT '0' AFTER `score`;
CREATE TABLE `zt_score` (
`id` bigint(12) unsigned NOT NULL AUTO_INCREMENT,
`account` varchar(30) NOT NULL,
`module` varchar(30) NOT NULL,
`module` varchar(30) NOT NULL DEFAULT '',
`method` varchar(30) NOT NULL,
`desc` varchar(250) NOT NULL DEFAULT '',
`before` decimal(12,1) NOT NULL DEFAULT '0.0',
`score` decimal(12,1) NOT NULL DEFAULT '0.0',
`after` decimal(12,1) NOT NULL DEFAULT '0.0',
`before` int(11) NOT NULL DEFAULT '0',
`score` int(11) NOT NULL DEFAULT '0',
`after` int(11) NOT NULL DEFAULT '0',
`time` datetime NOT NULL,
`objectID` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `account` (`account`),
KEY `model` (`model`),
KEY `model` (`module`),
KEY `method` (`method`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+1 -1
View File
@@ -19,7 +19,7 @@
</tr>
<tr>
<td></td>
<td><?php echo html::submitButton() ?><?php isset($config->global->scoreInit) ? common::printLink('score', 'refresh', '', "<i class='icon-refresh'></i> " . $lang->custom->scoreReset, '', ' id="scoreRefresh" class="btn iframe" data-width="480"', true, true) : common::printLink('score', 'init', '', "<i class='icon-play'></i> " . $lang->custom->scoreInit, '', ' id="scoreInit" class="btn iframe" data-width="480"', true, true); ?></td>
<td><?php echo html::submitButton() ?><?php common::printLink('score', 'init', '', "<i class='icon-refresh'></i> " . isset($config->global->scoreInit) ? $lang->custom->scoreReset : $lang->custom->scoreInit, '', ' id="scoreRefresh" class="btn iframe" data-width="480"', true, true); ?></td>
</tr>
</table>
</form>
+2 -1
View File
@@ -33,7 +33,8 @@ class my extends control
*/
public function index()
{
$this->view->title = $this->lang->my->common;
$this->view->title = $this->lang->my->common;
$this->view->notice = $this->loadModel('score')->getNotice();
$this->display();
}
+2 -1
View File
@@ -12,4 +12,5 @@
<?php include '../../common/view/header.html.php';?>
<?php css::import($defaultTheme . 'index.css', $config->version);?>
<?php echo $this->fetch('block', 'dashboard', 'module=my');?>
<?php include '../../common/view/footer.html.php';?>
<div id="noticeBox"><?php echo $notice; ?></div>
<?php include '../../common/view/footer.html.php';?>
+19 -3
View File
@@ -1,12 +1,15 @@
<?php
$config->score = new stdClass();
//user rule
$config->score->user = new stdClass();
$config->score->user->login = array('num' => 3, 'time' => 24, 'score' => 1, 'ext' => '');
$config->score->user->changePassword = array('num' => 1, 'time' => 0, 'score' => 10, 'ext' => array(1 => 2, 2 => 5));
$config->score->user->editProfile = array('num' => 1, 'time' => 0, 'score' => 10, 'ext' => '');
//tutorial rule
$config->score->tutorial = new stdClass();
$config->score->tutorial->keepAll = array('num' => 1, 'time' => 0, 'score' => 100, 'ext' => '');
//javascript ajax rule
$config->score->ajax = new stdClass();
$config->score->ajax->selectTheme = array('num' => 1, 'time' => 0, 'score' => 10, 'ext' => '');
$config->score->ajax->selectLang = array('num' => 1, 'time' => 0, 'score' => 10, 'ext' => '');
$config->score->ajax->showSearchMenu = array('num' => 1, 'time' => 0, 'score' => 10, 'ext' => '');
@@ -15,41 +18,54 @@ $config->score->ajax->lastNext = array('num' => 1, 'time' => 0, 'score'
$config->score->ajax->switchToDataTable = array('num' => 1, 'time' => 0, 'score' => 1, 'ext' => '');
$config->score->ajax->submitPage = array('num' => 1, 'time' => 0, 'score' => 1, 'ext' => '');
$config->score->ajax->customMenu = array('num' => 1, 'time' => 0, 'score' => 1, 'ext' => '');
$config->score->ajax->quickDump = array('num' => 1, 'time' => 0, 'score' => 10, 'ext' => '');
$config->score->ajax->quickJump = array('num' => 1, 'time' => 0, 'score' => 10, 'ext' => '');
$config->score->ajax->batchCreate = array('num' => 1, 'time' => 0, 'score' => 20, 'ext' => '');
$config->score->ajax->batchEdit = array('num' => 1, 'time' => 0, 'score' => 20, 'ext' => '');
//doc rule
$config->score->doc = new stdClass();
$config->score->doc->create = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => '');
//todo rule
$config->score->todo = new stdClass();
$config->score->todo->create = array('num' => 5, 'time' => 24, 'score' => 1, 'ext' => '');
//story rule
$config->score->story = new stdClass();
$config->score->story->create = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => '');
$config->score->story->close = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => array('createID' => 2));
//task rule
$config->score->task = new stdClass();
$config->score->task->create = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => '');
$config->score->task->close = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => '');
$config->score->task->finish = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => array(1 => 2, 2 => 1, 3 => 0));
//bug rule
$config->score->bug = new stdClass();
$config->score->bug->create = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => '');
$config->score->bug->confirmBug = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => array(1 => 3, 2 => 2, 3 => 1));
$config->score->bug->createFormCase = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => '');
$config->score->bug->resolve = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => array(1 => 3, 2 => 2, 3 => 1));
$config->score->bug->saveTplModal = array('num' => 0, 'time' => 0, 'score' => 20, 'ext' => '');
//testTask rule
$config->score->testTask->runCase = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => '');
//testcase rule
$config->score->testcase = new stdClass();
$config->score->testcase->create = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => '');
//testtask rule
$config->score->testtask = new stdClass();
$config->score->testtask->runCase = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => '');
//bulid rule
$config->score->build = new stdClass();
$config->score->build->create = array('num' => 0, 'time' => 0, 'score' => 10, 'ext' => '');
//project rule
$config->score->project = new stdClass();
$config->score->project->create = array('num' => 0, 'time' => 0, 'score' => 10, 'ext' => '');
$config->score->project->close = array('num' => 0, 'time' => 0, 'score' => 0, 'ext' => array('manager' => array(20, 10), 'member' => array(5, 5)));
//productplan rule
$config->score->productplan = new stdClass();
$config->score->productplan->create = array('num' => 0, 'time' => 0, 'score' => 10, 'ext' => '');
//release rule
$config->score->release = new stdClass();
$config->score->release->create = array('num' => 0, 'time' => 0, 'score' => 10, 'ext' => '');
//block rule
$config->score->block = new stdClass();
$config->score->block->set = array('num' => 1, 'time' => 0, 'score' => 20, 'ext' => '');
//search rule
$config->score->search = new stdClass();
$config->score->search->saveQuery = array('num' => 1, 'time' => 0, 'score' => 1, 'ext' => '');
$config->score->search->saveQueryAdvanced = array('num' => 1, 'time' => 0, 'score' => 1, 'ext' => '');
-26
View File
@@ -48,30 +48,4 @@ class score extends control
}
$this->display();
}
/**
* reset all score
*
* @param int $lastID
*
* @access public
* @return void
*/
public function reset($lastID = 0)
{
if(helper::isAjaxRequest())
{
$result = $this->score->reset($lastID);
if(dao::isError()) $this->send(array('result' => 'fail', 'message' => dao::getError()));
if($result['status'] == 'finish')
{
$this->send(array('result' => 'finished', 'message' => $this->lang->score->resetFinish));
}
else
{
$this->send(array('result' => 'unfinished', 'message' => $this->lang->score->resetLoading, 'lastID' => $result['lastID']));
}
}
$this->display();
}
}
+78
View File
@@ -1 +1,79 @@
<?php
$lang->score->common = 'Score';
$lang->score->record = 'Score record';
$lang->score->current = 'Current score';
$lang->score->level = 'Level score';
$lang->score->init = 'Initialize';
$lang->score->tips = 'Yesterday added score:<strong>%d</strong><br/>Today total score:<strong>%d</strong><br/>Come on! ^_^';
$lang->score->initTips = 'Initialization will be based on historical records, the execution time may be longer. <strong>Do not close the window before the completion</strong>';
$lang->score->initStart = 'Start initialize';
$lang->score->initLoading = 'Initializing...';
$lang->score->initFinish = 'initialized';
$lang->score->processed = 'Processed ...';
$lang->score->id = 'ID';
$lang->score->userID = 'UserID';
$lang->score->account = 'User';
$lang->score->module = 'Module';
$lang->score->method = 'Method';
$lang->score->before = 'Before';
$lang->score->score = 'Score';
$lang->score->after = 'After';
$lang->score->time = 'Time';
$lang->score->desc = 'Description';
$lang->score->models['task'] = 'Task';
$lang->score->models['tutorial'] = 'Tutorial';
$lang->score->models['user'] = 'User';
$lang->score->models['ajax'] = 'Other';
$lang->score->models['doc'] = 'Doc';
$lang->score->models['todo'] = 'Todo';
$lang->score->models['story'] = 'Story';
$lang->score->models['bug'] = 'Bug';
$lang->score->models['testcase'] = 'TestCase';
$lang->score->models['testtask'] = 'TestTask';
$lang->score->models['build'] = 'Build';
$lang->score->models['project'] = 'Project';
$lang->score->models['productplan'] = 'Plan';
$lang->score->models['release'] = 'Release';
$lang->score->models['block'] = 'Block';
$lang->score->models['search'] = 'Search';
$lang->score->methods['task']['create'] = 'Create task';
$lang->score->methods['task']['close'] = 'Close task';
$lang->score->methods['task']['finish'] = 'Finish task';
$lang->score->methods['tutorial']['keepAll'] = 'Finish tutorial';
$lang->score->methods['user']['login'] = 'Login';
$lang->score->methods['user']['changePassword'] = 'Change password';
$lang->score->methods['user']['editProfile'] = 'Edit profile';
$lang->score->methods['ajax']['selectTheme'] = 'Change theme';
$lang->score->methods['ajax']['selectLang'] = 'Change Lang';
$lang->score->methods['ajax']['showSearchMenu'] = 'Advanced search';
$lang->score->methods['ajax']['customMenu'] = 'Custom menu';
$lang->score->methods['ajax']['dragSelected'] = 'Drag selected';
$lang->score->methods['ajax']['lastNext'] = 'Page turned';
$lang->score->methods['ajax']['switchToDataTable'] = 'Switch dataTable';
$lang->score->methods['ajax']['submitPage'] = 'Change page number';
$lang->score->methods['ajax']['quickJump'] = 'Quick jump';
$lang->score->methods['ajax']['batchCreate'] = 'Batch create';
$lang->score->methods['ajax']['batchEdit'] = 'Batch update';
$lang->score->methods['doc']['create'] = 'Create doc';
$lang->score->methods['todo']['create'] = 'Create todo';
$lang->score->methods['story']['create'] = 'Create story';
$lang->score->methods['story']['close'] = 'Close story';
$lang->score->methods['bug']['create'] = 'Create bug';
$lang->score->methods['bug']['confirmBug'] = 'Confirm bug';
$lang->score->methods['bug']['createFormCase'] = 'Create bug form case';
$lang->score->methods['bug']['resolve'] = 'Resolve bug';
$lang->score->methods['bug']['saveTplModal'] = 'Bug save template';
$lang->score->methods['testtask']['runCase'] = 'Run test case';
$lang->score->methods['testcase']['create'] = 'Create test case';
$lang->score->methods['build']['create'] = 'Create build';
$lang->score->methods['project']['create'] = 'Create project';
$lang->score->methods['project']['close'] = 'Project finish';
$lang->score->methods['productplan']['create'] = 'Create plan';
$lang->score->methods['release']['create'] = 'Create release';
$lang->score->methods['block']['set'] = 'Custom block';
$lang->score->methods['search']['saveQuery'] = 'Save search query';
$lang->score->methods['search']['saveQueryAdvanced'] = 'Advanced search';
+17 -19
View File
@@ -1,19 +1,15 @@
<?php
$lang->score->common = '积分';
$lang->score->record = '积分记录';
$lang->score->current = '当前积分';
$lang->score->level = '等级积分';
$lang->score->init = '初始化';
$lang->score->initTips = '初始化将根据历史记录计算,执行时间可能会比较长.<br/><strong>请勿在未完成前关闭窗口</strong>';
$lang->score->initStart = '开始初始化';
$lang->score->initLoading = '正在初始化...';
$lang->score->initFinish = '初始化完成';
$lang->score->reset = '重置积分';
$lang->score->resetTips = '重置积分将对所有用户积分清零,执行时间可能会比较长.<br/><strong>请勿在未完成前关闭窗口</strong>';
$lang->score->resetStart = '开始重置所有积分';
$lang->score->resetLoading = '积分重置中...';
$lang->score->resetFinish = '重置完成';
$lang->score->processed = '正在处理中...';
$lang->score->common = '积分';
$lang->score->record = '积分记录';
$lang->score->current = '当前积分';
$lang->score->level = '等级积分';
$lang->score->init = '初始化';
$lang->score->tips = '昨天增加了积分:<strong>%d</strong><br/>现共有积分:<strong>%d</strong><br/>今天再接再厉哟! ^_^';
$lang->score->initTips = '初始化将根据历史记录计算,执行时间可能会比较长.<br/><strong>请勿在未完成前关闭窗口</strong>';
$lang->score->initStart = '开始初始化';
$lang->score->initLoading = '正在初始化...';
$lang->score->initFinish = '初始化完成';
$lang->score->processed = '正在处理中...';
$lang->score->id = '编号';
$lang->score->userID = '用户ID';
@@ -30,12 +26,13 @@ $lang->score->desc = '描述';
$lang->score->models['task'] = '任务';
$lang->score->models['tutorial'] = '新手教程';
$lang->score->models['user'] = '用户';
$lang->score->models['ajax'] = '';
$lang->score->models['ajax'] = '其它';
$lang->score->models['doc'] = '文档';
$lang->score->models['todo'] = '待办';
$lang->score->models['story'] = '需求';
$lang->score->models['bug'] = 'Bug';
$lang->score->models['testTask'] = '用例';
$lang->score->models['testcase'] = '用例';
$lang->score->models['testtask'] = '测试';
$lang->score->models['build'] = 'Build';
$lang->score->models['project'] = '项目';
$lang->score->models['productplan'] = '计划';
@@ -58,7 +55,7 @@ $lang->score->methods['ajax']['dragSelected'] = '列表页面拖动选中
$lang->score->methods['ajax']['lastNext'] = '快捷键翻页';
$lang->score->methods['ajax']['switchToDataTable'] = '使用高级表格';
$lang->score->methods['ajax']['submitPage'] = '修改分页数量';
$lang->score->methods['ajax']['quickDump'] = '使用快速跳转';
$lang->score->methods['ajax']['quickJump'] = '使用快速跳转';
$lang->score->methods['ajax']['batchCreate'] = '首次使用批量添加';
$lang->score->methods['ajax']['batchEdit'] = '首次使用批量编辑';
$lang->score->methods['doc']['create'] = '创建文档';
@@ -70,7 +67,8 @@ $lang->score->methods['bug']['confirmBug'] = '确认Bug';
$lang->score->methods['bug']['createFormCase'] = '从用例创建';
$lang->score->methods['bug']['resolve'] = '解决Bug';
$lang->score->methods['bug']['saveTplModal'] = '保存模板';
$lang->score->methods['testTask']['runCase'] = '执行用例';
$lang->score->methods['testtask']['runCase'] = '执行用例';
$lang->score->methods['testcase']['create'] = '创建用例';
$lang->score->methods['build']['create'] = '创建版本';
$lang->score->methods['project']['create'] = '创建项目';
$lang->score->methods['project']['close'] = '项目完成';
+78
View File
@@ -1 +1,79 @@
<?php
$lang->score->common = '積分';
$lang->score->record = '積分記錄';
$lang->score->current = '當前積分';
$lang->score->level = '等級積分';
$lang->score->init = '初始化';
$lang->score->tips = '昨天增加了積分:<strong>%d</strong><br/>現共有積分:<strong>%d</strong><br/>今天再接再厲喲! ^_^';
$lang->score->initTips = '初始化將根據歷史記錄計算,執行時間可能會比較長.<br/><strong>請勿在未完成前關閉窗口</strong>';
$lang->score->initStart = '開始初始化';
$lang->score->initLoading = '正在初始化...';
$lang->score->initFinish = '初始化完成';
$lang->score->processed = '正在處理中...';
$lang->score->id = '編號';
$lang->score->userID = '用戶ID';
$lang->score->account = '用戶';
$lang->score->module = '模塊';
$lang->score->method = '動作';
$lang->score->before = '之前';
$lang->score->score = '分值';
$lang->score->after = '之後';
$lang->score->time = '時間';
$lang->score->desc = '描述';
$lang->score->models['task'] = '任務';
$lang->score->models['tutorial'] = '新手教程';
$lang->score->models['user'] = '用戶';
$lang->score->models['ajax'] = '其它';
$lang->score->models['doc'] = '文檔';
$lang->score->models['todo'] = '待辦';
$lang->score->models['story'] = '需求';
$lang->score->models['bug'] = 'Bug';
$lang->score->models['testcase'] = '用例';
$lang->score->models['testtask'] = '測試';
$lang->score->models['build'] = 'Build';
$lang->score->models['project'] = '項目';
$lang->score->models['productplan'] = '計劃';
$lang->score->models['release'] = '發布';
$lang->score->models['block'] = '區塊';
$lang->score->models['search'] = '搜索';
$lang->score->methods['task']['create'] = '創建任務';
$lang->score->methods['task']['close'] = '關閉任務';
$lang->score->methods['task']['finish'] = '完成任務';
$lang->score->methods['tutorial']['keepAll'] = '學習完成';
$lang->score->methods['user']['login'] = '登錄';
$lang->score->methods['user']['changePassword'] = '修改密碼';
$lang->score->methods['user']['editProfile'] = '修改個人資料';
$lang->score->methods['ajax']['selectTheme'] = '切換主題';
$lang->score->methods['ajax']['selectLang'] = '切換語言';
$lang->score->methods['ajax']['showSearchMenu'] = '搜索高級用法';
$lang->score->methods['ajax']['customMenu'] = '自定義菜單';
$lang->score->methods['ajax']['dragSelected'] = '列表頁面拖動選中';
$lang->score->methods['ajax']['lastNext'] = '快捷鍵翻頁';
$lang->score->methods['ajax']['switchToDataTable'] = '使用高級表格';
$lang->score->methods['ajax']['submitPage'] = '修改分頁數量';
$lang->score->methods['ajax']['quickJump'] = '使用快速跳轉';
$lang->score->methods['ajax']['batchCreate'] = '首次使用批量添加';
$lang->score->methods['ajax']['batchEdit'] = '首次使用批量編輯';
$lang->score->methods['doc']['create'] = '創建文檔';
$lang->score->methods['todo']['create'] = '創建待辦';
$lang->score->methods['story']['create'] = '創建需求';
$lang->score->methods['story']['close'] = '需求關閉';
$lang->score->methods['bug']['create'] = '創建Bug';
$lang->score->methods['bug']['confirmBug'] = '確認Bug';
$lang->score->methods['bug']['createFormCase'] = '從用例創建';
$lang->score->methods['bug']['resolve'] = '解決Bug';
$lang->score->methods['bug']['saveTplModal'] = '保存模板';
$lang->score->methods['testtask']['runCase'] = '執行用例';
$lang->score->methods['testcase']['create'] = '創建用例';
$lang->score->methods['build']['create'] = '創建版本';
$lang->score->methods['project']['create'] = '創建項目';
$lang->score->methods['project']['close'] = '項目完成';
$lang->score->methods['productplan']['create'] = '創建計劃';
$lang->score->methods['release']['create'] = '創建發布';
$lang->score->methods['block']['set'] = '區塊自定義設置';
$lang->score->methods['search']['saveQuery'] = '保存搜索條件';
$lang->score->methods['search']['saveQueryAdvanced'] = '使用高級搜索';
+51 -47
View File
@@ -9,8 +9,6 @@
*/
class scoreModel extends model
{
public static $num = 0;
/**
* get user score list
*
@@ -22,7 +20,7 @@ class scoreModel extends model
*/
public function getListByAccount($account, $pager)
{
return $this->dao->select('*')->from(TABLE_SCORE)->where('account')->eq($account)->orderBy('time_desc,id_desc')->page($pager)->fetchAll();
return $this->dao->select('*')->from(TABLE_SCORE)->where('account')->eq($account)->orderBy('time_desc')->page($pager)->fetchAll();
}
/**
@@ -86,6 +84,7 @@ class scoreModel extends model
{
$desc = $this->lang->score->methods[$module][$method] . 'ID:' . $param;
$task = $this->loadModel('task')->getById($param);
if(!empty($rule['ext'][$task->pri])) $rule['score'] = $rule['score'] + $rule['ext'][$task->pri];
if(!empty($task->estimate)) $rule['score'] = $rule['score'] + round(($task->consumed / 10 * $task->estimate / $task->consumed), 1);
}
@@ -129,20 +128,23 @@ class scoreModel extends model
if($method == 'create') $desc .= 'ID:' . $param;
if($method == 'close')
{
$desc = $this->lang->score->methods[$module][$method] . ',' . $desc . 'ID:' . $param->id;
$objectID = $param->id;
$desc = $this->lang->score->methods[$module][$method] . ',' . $desc . 'ID:' . $param->id;
$objectID = $param->id;
$timestamp = empty($time) ? time() : strtotime($time);
//project PM
if(!empty($param->PM))
{
$rule['score'] = $param->end > date('Y-m-d', $time) ? $rule['ext']['manager'][0] + $rule['ext']['manager'][1] : $rule['ext']['manager'][0];
$rule['score'] = $param->end > date('Y-m-d', $timestamp) ? $rule['ext']['manager'][0] + $rule['ext']['manager'][1] : $rule['ext']['manager'][0];
$this->saveScore($param->PM, $rule, $module, $method, $desc, $objectID, $time);
}
//project team user
$teams = $this->dao->select('account')->from(TABLE_TEAM)->where('project')->eq($param->id)->fetchGroup('account');
if(!empty($teams))
{
$users = array_keys($teams);
$rule['score'] = $param->end > date('Y-m-d', $time) ? $rule['ext']['member'][0] + $rule['ext']['member'][1] : $rule['ext']['member'][0];
$rule['score'] = $param->end > date('Y-m-d', $timestamp) ? $rule['ext']['member'][0] + $rule['ext']['member'][1] : $rule['ext']['member'][0];
foreach($users as $user)
{
if($user != $param->PM) $this->saveScore($user, $rule, $module, $method, $desc, $objectID, $time);
@@ -191,13 +193,13 @@ class scoreModel extends model
{
if(empty($rule['time']))
{
$count = $this->dao->select('id')->from(TABLE_SCORE)->where('account')->eq($account)->andWhere('model')->eq($module)->andWhere('method')->eq($method)->count();
$count = $this->dao->select('id')->from(TABLE_SCORE)->where('account')->eq($account)->andWhere('module')->eq($module)->andWhere('method')->eq($method)->count();
if($count >= $rule['num']) return true;
}
else
{
$timestamp = empty($time) ? time() : strtotime($time);
$count = $this->dao->select('id')->from(TABLE_SCORE)->where('account')->eq($account)->andWhere('time')->between(date('Y-m-d 0:0:0', $timestamp), date('Y-m-d 23:59:59', $timestamp))->andWhere('model')->eq($module)->andWhere('method')->eq($method)->count();
$count = $this->dao->select('id')->from(TABLE_SCORE)->where('account')->eq($account)->andWhere('time')->between(date('Y-m-d 0:0:0', $timestamp), date('Y-m-d 23:59:59', $timestamp))->andWhere('module')->eq($module)->andWhere('method')->eq($method)->count();
if($count >= $rule['num']) return true;
}
}
@@ -217,8 +219,8 @@ class scoreModel extends model
$data->score = $rule['score'];
$data->after = $user->score + $rule['score'];
$data->time = empty($time) ? helper::now() : $time;
$this->dao->insert(TABLE_SCORE)->data($data)->exec();
$this->dao->query("UPDATE " . TABLE_USER . " SET `score`=`score` + " . $rule['score'] . ",`scoreLevel`=`scoreLevel` + " . $rule['score'] . " WHERE `account`='" . $account . "'");
$this->dao->commit();
@@ -229,39 +231,6 @@ class scoreModel extends model
}
}
/**
* reset all user score and scoreLevel
*
* @param int $lastID
*
* @access public
* @return void
*/
public function reset($lastID = 0)
{
if($lastID == 0)
{
$this->dao->query("DROP TABLE IF EXISTS `score_bak`");
$this->dao->query("RENAME TABLE " . TABLE_SCORE . ' TO score_bak');
$this->dao->query("CREATE TABLE " . TABLE_SCORE . ' LIKE score_bak');
$this->dao->query("UPDATE " . TABLE_USER . " SET `score`=0,`scoreLevel`=0");
}
$actions = $this->dao->select('*')->from('score_bak')->where('id')->gt($lastID)->orderBy('id_asc')->limit(100)->fetchAll('id');
if(empty($actions)) return array('num' => 0, 'status' => 'finish');
foreach($actions as $action)
{
$param = $action->objectID;
if($action->model == 'project' && $action->method == 'close') $param = $this->dao->findById($action->objectID)->from(TABLE_PROJECT)->fetch();
if($action->model == 'bug' && ($action->method == 'confirmBug' || $action->method == 'resolve')) $param = $this->dao->findById($action->objectID)->from(TABLE_BUG)->fetch();
$this->score($action->model, $action->method, $param, $action->account, $action->time);
}
return array('status' => 'more', 'lastID' => max(array_keys($actions)));
}
/**
* Score init from action
*
@@ -290,8 +259,14 @@ class scoreModel extends model
{
$param = $action->objectID;
if($action->objectType == 'project' && $action->action == 'closed') $param = $this->dao->findById($action->objectID)->from(TABLE_PROJECT)->fetch();
if($action->objectType == 'bug' && ($action->action == 'bugconfirmed' || $action->action == 'resolved')) $param = $this->dao->findById($action->objectID)->from(TABLE_BUG)->fetch();
$this->score($action->objectType, $this->fixKey($action->action), $param, $action->actor, $action->date);
if($action->objectType == 'bug')
{
$bug = $this->dao->findById($action->objectID)->from(TABLE_BUG)->fetch();
if(!empty($bug->case)) $action->action = 'createFormCase';
if($action->action == 'bugconfirmed' || $action->action == 'resolved') $param = $bug;
}
if($action->objectType == 'case') $action->objectType = 'testcase';
$this->create($action->objectType, $this->fixKey($action->action), $param, $action->actor, $action->date);
}
return array('status' => 'more', 'lastID' => max(array_keys($actions)));
@@ -307,7 +282,36 @@ class scoreModel extends model
*/
private function fixKey($string)
{
$strings = array('created' => 'create', 'closed' => 'close', 'finished' => 'finish', 'bugconfirmed' => 'confirmBug', 'resolved' => 'resolve');
$strings = array('created' => 'create', 'opened' => 'create', 'closed' => 'close', 'finished' => 'finish', 'bugconfirmed' => 'confirmBug', 'resolved' => 'resolve');
return isset($strings[$string]) ? $strings[$string] : $string;
}
}
/**
* get yesterday's score for user
*
* @access public
* @return string
*/
public function getNotice()
{
if(!isset($this->config->global->score) || empty($this->config->global->score)) return '';
if($this->cookie->showNotice == strtotime(date('Y-m-d'))) return '';
setcookie('showNotice', strtotime(date('Y-m-d')), $this->config->cookieLife, $this->config->webRoot);
$yesterday = $this->dao->select("sum(score) as score")->from(TABLE_SCORE)->where('time')->between(date('Y-m-d 00:00:00', strtotime('-1 day')), date('Y-m-d 23:59:59', strtotime('-1 day')))->andWhere('account')->eq($this->app->user->account)->fetch();
$notice = empty($yesterday->score) ? '' : sprintf($this->lang->score->tips, $yesterday->score, $this->app->user->score);
$notice .= $this->cookie->showNotice;
$fullNotice = <<<EOT
<div id='noticeAttend' class='alert alert-success with-icon alert-dismissable' style='width:280px; position:fixed; bottom:25px; right:15px; z-index: 9999;' id='planInfo'>
<i class='icon icon-diamond'> </i>
<div class='content'>{$notice}</div>
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
</div>
EOT;
return empty($notice) ? '' : $fullNotice;
}
}
+1 -1
View File
@@ -56,7 +56,7 @@
else
{
$('#loading_content').html("<li class='text-success' style='color:#" + (Math.random() * 0xffffff << 0).toString(16) + "'>" + response.message + "</li>");
setTimeout(function(){score_init(response.lastID);}, 2000);
setTimeout(function(){score_init(response.lastID);}, 500);
}
});
}
-64
View File
@@ -1,64 +0,0 @@
<?php
/**
* The init view file of score module of ZenTaoPMS.
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Memory <lvtao@cnezsoft.com>
* @package score
* @version $Id$
* @link http://www.zentao.net
*/
?>
<?php include '../../common/view/header.html.php'; ?>
<div class="alert with-icon" id="reset_start">
<i class="icon-inbox"></i>
<div class="content">
<h4><?php echo $lang->score->reset; ?></h4>
<hr>
<p><?php echo $lang->score->resetTips; ?></p>
<p>
<button class="btn btn-primary" id="reset_init"><?php echo $lang->score->resetStart; ?></button>
</p>
</div>
</div>
<div class="alert alert-info with-icon hidden" id="reset_loading">
<i class="icon-info-sign"></i>
<h4><?php echo $lang->score->resetLoading; ?></h4>
<hr/>
<p><?php echo $lang->score->resetTips; ?></p>
<p id="loading_content"></p>
</div>
<div class="alert alert-success with-icon hidden" id="reset_finish">
<i class="icon-ok-sign"></i>
<div class="content">
<strong><?php echo $lang->score->resetFinish; ?></strong>
</div>
</div>
<script>
$("#reset_init").on('click', function()
{
$("#reset_start").addClass('hidden');
$("#reset_loading").removeClass('hidden');
reset_init(0);
});
function reset_init(lastID)
{
$.getJSON(createLink('score', 'reset', 'lastID=' + lastID), function(response)
{
if(response.result == 'finished')
{
$("#reset_loading").addClass('hidden');
$("#reset_finish").removeClass('hidden');
setTimeout(function(){parent.location.reload();}, 2000);
return false;
}
else
{
$('#loading_content').html("<li class='text-success' style='color:#" + (Math.random() * 0xffffff << 0).toString(16) + "'>" + response.message + "</li>");
setTimeout(function(){reset_init(response.lastID);}, 2000);
}
});
}
</script>
<?php include '../../common/view/footer.html.php'; ?>
+2 -2
View File
@@ -832,8 +832,8 @@ class testtask extends control
}
}
$preCase = '';
$nextCase = '';
$preCase = array();
$nextCase = array();
if($preAndNext->pre)
{
$preCase['runID'] = $runID ? $preAndNext->pre->id : 0;
+3 -3
View File
@@ -193,10 +193,10 @@ function showSearchMenu(objectType, objectID, module, method, extra)
{
$menu.find('#search').focus();
}
if(!$.cookie('ajax_quickDump'))
if(!$.cookie('ajax_quickJump'))
{
$.cookie('ajax_quickDump', 'on', {expires: config.cookieLife, path: config.webRoot});
$.get(createLink('score', 'ajax', "method=quickDump"));
$.cookie('ajax_quickJump', 'on', {expires: config.cookieLife, path: config.webRoot});
$.get(createLink('score', 'ajax', "method=quickJump"));
}
}