diff --git a/module/score/config.php b/module/score/config.php index 69926a8b38..c587730fe0 100644 --- a/module/score/config.php +++ b/module/score/config.php @@ -18,8 +18,6 @@ $config->score->rule->testcase = new stdClass(); $config->score->rule->testtask = new stdClass(); $config->score->rule->productplan = new stdClass(); -$config->score->ruleExtended = new stdClass(); - /* Score rule. */ $config->score->rule->user->login = array('times' => 3, 'hour' => 24, 'score' => 1); $config->score->rule->user->editProfile = array('times' => 1, 'hour' => 0, 'score' => 10); @@ -75,9 +73,11 @@ $config->score->rule->productplan->create = array('times' => 0, 'hour' => 0, 'sc $config->score->rule->search->saveQuery = array('times' => 1, 'hour' => 0, 'score' => 1); $config->score->rule->search->saveQueryAdvanced = array('times' => 1, 'hour' => 0, 'score' => 1); -$config->score->ruleExtended->storyclose = array('createID' => 2); -$config->score->ruleExtended->userchangePassword = array('strength' => array(1 => 2, 2 => 5)); -$config->score->ruleExtended->bugconfirmBug = array('severity' => array(1 => 3, 2 => 2, 3 => 1)); -$config->score->ruleExtended->bugresolve = array('severity' => array(1 => 3, 2 => 2, 3 => 1)); -$config->score->ruleExtended->taskfinish = array('pri' => array(1 => 2, 2 => 1, 3 => 0)); -$config->score->ruleExtended->projectclose = array('manager' => array('close' => 20, 'in' => 10), 'member' => array('close' => 5, 'in' => 5)); \ No newline at end of file +$config->score->ruleExtended = array(); +$config->score->ruleExtended['story']['close'] = array('createID' => 2); +$config->score->ruleExtended['user']['changePassword'] = array('strength' => array(1 => 2, 2 => 5)); +$config->score->ruleExtended['bug']['confirmBug'] = array('severity' => array(1 => 3, 2 => 2, 3 => 1)); +$config->score->ruleExtended['bug']['resolve'] = array('severity' => array(1 => 3, 2 => 2, 3 => 1)); +$config->score->ruleExtended['task']['finish'] = array('pri' => array(1 => 2, 2 => 1, 3 => 0)); +$config->score->ruleExtended['project']['close'] = array('manager' => array('close' => 20, 'onTime' => 10), + 'member' => array('close' => 5, 'onTime' => 5)); \ No newline at end of file diff --git a/module/score/lang/en.php b/module/score/lang/en.php index aad855b7d4..918d0b383c 100644 --- a/module/score/lang/en.php +++ b/module/score/lang/en.php @@ -80,10 +80,9 @@ $lang->score->methods['block']['set'] = 'Custom block'; $lang->score->methods['search']['saveQuery'] = 'Save search query'; $lang->score->methods['search']['saveQueryAdvanced'] = 'Advanced search'; -$lang->score->extended = new stdClass(); -$lang->score->extended->userchangePassword = 'Password strength, medium:add extra score : ##strength,1##; Strong:add extra score : ##strength,2##.'; -$lang->score->extended->projectclose = 'Project closed, PM add extra score : ##manager,close##,Team member add extra score : ##member,close##. Completed on schedule or in advance,PM add extra score : ##manager,in##,Team member Add extra score : ##member,in##.'; -$lang->score->extended->bugresolve = 'Bug resolved, Add extra severity score :s1 + ##severity,3##, s2 + ##severity,2##, s3 + ##severity,1##。'; -$lang->score->extended->bugconfirmBug = 'Bug confirmed, Add extra severity score :s1 + ##severity,3##, s2 + ##severity,2##, s3 + ##severity,1##。'; -$lang->score->extended->taskfinish = 'Task finished, Add extra score round(consumed /10 * estimate / consumed) + severity score(p1 ##pri,1##, p2, ##pri,2##)。'; -$lang->score->extended->storyclose = 'Add extra score for story creator : ##createID##.'; +$lang->score->extended['user']['changePassword'] = 'Password strength, medium:add extra score : ##strength,1##; Strong:add extra score : ##strength,2##.'; +$lang->score->extended['project']['close'] = 'Project closed, PM add extra score : ##manager,close##,Team member add extra score : ##member,close##. Completed on schedule or in advance,PM add extra score : ##manager,in##,Team member Add extra score : ##member,in##.'; +$lang->score->extended['bug']['resolve'] = 'Bug resolved, Add extra severity score :s1 + ##severity,3##, s2 + ##severity,2##, s3 + ##severity,1##。'; +$lang->score->extended['bug']['confirmBug'] = 'Bug confirmed, Add extra severity score :s1 + ##severity,3##, s2 + ##severity,2##, s3 + ##severity,1##。'; +$lang->score->extended['task']['finish'] = 'Task finished, Add extra score round(consumed /10 * estimate / consumed) + severity score(p1 ##pri,1##, p2, ##pri,2##)。'; +$lang->score->extended['story']['close'] = 'Add extra score for story creator : ##createID##.'; diff --git a/module/score/lang/zh-cn.php b/module/score/lang/zh-cn.php index ae5b1046b8..3649415eb1 100644 --- a/module/score/lang/zh-cn.php +++ b/module/score/lang/zh-cn.php @@ -80,10 +80,9 @@ $lang->score->methods['block']['set'] = '区块自定义设置'; $lang->score->methods['search']['saveQuery'] = '保存搜索条件'; $lang->score->methods['search']['saveQueryAdvanced'] = '使用高级搜索'; -$lang->score->extended = new stdClass(); -$lang->score->extended->userchangePassword = '密码强度为中,额外获得##strength,1##个积分;为强,额外获得##strength,2##个积分。'; -$lang->score->extended->projectclose = '项目经理增加##manager,close##个积分,项目成员增加##member,close##个积分。按期或者提前完成,项目经理额外增加##manager,in##个积分,项目成员额外增加##member,in##个积分。'; -$lang->score->extended->bugresolve = 'Bug解决后,额外增加严重程度积分:s1 + ##severity,3##, s2 + ##severity,2##, s3 + ##severity,1##。'; -$lang->score->extended->bugconfirmBug = 'Bug确认后,额外增加严重程度积分:s1 + ##severity,3##, s2 + ##severity,2##, s3 + ##severity,1##。'; -$lang->score->extended->taskfinish = '额外增加工时积分 round(工时 / 10 * 预计 / 消耗) + 优先级积分(p1 ##pri,1##, p2 ##pri,2##)。'; -$lang->score->extended->storyclose = '需求的创建者额外增加##createID##分'; +$lang->score->extended['user']['changePassword'] = '密码强度为中,额外获得##strength,1##个积分;为强,额外获得##strength,2##个积分。'; +$lang->score->extended['project']['close'] = '项目经理增加##manager,close##个积分,项目成员增加##member,close##个积分。按期或者提前完成,项目经理额外增加##manager,in##个积分,项目成员额外增加##member,in##个积分。'; +$lang->score->extended['bug']['resolve'] = 'Bug解决后,额外增加严重程度积分:s1 + ##severity,3##, s2 + ##severity,2##, s3 + ##severity,1##。'; +$lang->score->extended['bug']['confirmBug'] = 'Bug确认后,额外增加严重程度积分:s1 + ##severity,3##, s2 + ##severity,2##, s3 + ##severity,1##。'; +$lang->score->extended['task']['finish'] = '额外增加工时积分 round(工时 / 10 * 预计 / 消耗) + 优先级积分(p1 ##pri,1##, p2 ##pri,2##)。'; +$lang->score->extended['story']['close'] = '需求的创建者额外增加##createID##分'; diff --git a/module/score/lang/zh-tw.php b/module/score/lang/zh-tw.php index c809eb3cda..0b4ae1a824 100644 --- a/module/score/lang/zh-tw.php +++ b/module/score/lang/zh-tw.php @@ -80,10 +80,9 @@ $lang->score->methods['block']['set'] = '區塊自定義設置'; $lang->score->methods['search']['saveQuery'] = '保存搜索條件'; $lang->score->methods['search']['saveQueryAdvanced'] = '使用高級搜索'; -$lang->score->extended = new stdClass(); -$lang->score->extended->userchangePassword = '密碼強度中的,額外獲得##strength,1##個積分,強的,額外獲得##strength,2##個積分。'; -$lang->score->extended->projectclose = '項目經理增加##manager,close##個積分,項目成員增加##member,close##個積分。按期或者提前完成,項目經理額外增加##manager,in##個積分,項目成員額外增加##member,in##個積分。'; -$lang->score->extended->bugresolve = 'Bug解決後,額外增加嚴重程度積分:s1 + ##severity,3##, s2 + ##severity,2##, s3 + ##severity,1##。'; -$lang->score->extended->bugconfirmBug = 'Bug確認後,額外增加嚴重程度積分:s1 + ##severity,3##, s2 + ##severity,2##, s3 + ##severity,1##。'; -$lang->score->extended->taskfinish = '額外增加工時積分 round(工時 /10 * 預計 / 消耗) + 優先順序積分(p1 ##pri,1##, p2, ##pri,2##)。'; -$lang->score->extended->storyclose = '需求的創建者額外增加##createID##分'; \ No newline at end of file +$lang->score->extended['user']['changePassword'] = '密碼強度中的,額外獲得##strength,1##個積分,強的,額外獲得##strength,2##個積分。'; +$lang->score->extended['project']['close'] = '項目經理增加##manager,close##個積分,項目成員增加##member,close##個積分。按期或者提前完成,項目經理額外增加##manager,in##個積分,項目成員額外增加##member,in##個積分。'; +$lang->score->extended['bug']['resolve'] = 'Bug解決後,額外增加嚴重程度積分:s1 + ##severity,3##, s2 + ##severity,2##, s3 + ##severity,1##。'; +$lang->score->extended['bug']['confirmBug'] = 'Bug確認後,額外增加嚴重程度積分:s1 + ##severity,3##, s2 + ##severity,2##, s3 + ##severity,1##。'; +$lang->score->extended['task']['finish'] = '額外增加工時積分 round(工時 /10 * 預計 / 消耗) + 優先順序積分(p1 ##pri,1##, p2, ##pri,2##)。'; +$lang->score->extended['story']['close'] = '需求的創建者額外增加##createID##分'; \ No newline at end of file diff --git a/module/score/model.php b/module/score/model.php index 3db4bdfb3b..97837cebd0 100644 --- a/module/score/model.php +++ b/module/score/model.php @@ -43,6 +43,9 @@ class scoreModel extends model $desc = $this->lang->score->modules[$module]; $user = empty($account) ? $this->app->user->account : $account; $time = empty($time) ? helper::now() : $time; + $extended = "ruleExtended[$module][$method]"; + + if(is_numeric($param)) $desc .= 'ID:' . $param; switch($module) { @@ -51,34 +54,28 @@ class scoreModel extends model if($method == 'changePassword') { - if(!empty($this->config->score->ruleExtended->changePassword['strength'][$param])) $rule['score'] = $rule['score'] + $this->config->score->ruleExtended->changePassword['strength'][$param]; + if(!empty($this->config->score->{$extended}['strength'][$param])) + { + $rule['score'] = $rule['score'] + $this->config->score->{$extended}['strength'][$param]; + } $desc = $this->lang->score->methods[$module][$method]; } break; - case 'doc': - if($method == 'create') $desc .= 'ID:' . $param; - break; - case 'todo': - if($method == 'create') $desc .= 'ID:' . $param; - break; case 'story': - $desc .= 'ID:' . $param; - if($method == 'close') { $openedBy = $this->dao->findById($param)->from(TABLE_STORY)->fetch('openedBy'); + if(!empty($openedBy)) { $newRule = $rule; - $newRule['score'] = $this->config->score->ruleExtended->storyClose['createID']; + $newRule['score'] = $this->config->score->{$extended}['createID']; $this->saveScore($openedBy, $newRule, $module, $method, $desc, $time); unset($newRule); } } break; case 'task': - $desc .= 'ID:' . $param; - if($method == 'finish') { $desc = $this->lang->score->methods[$module][$method] . 'ID:' . $param; @@ -88,13 +85,19 @@ class scoreModel extends model if(!empty($parentTask)) return true; $task = $this->loadModel('task')->getById($param); - if(!empty($this->config->score->ruleExtended->taskFinish['pri'][$task->pri])) $rule['score'] = $rule['score'] + $this->config->score->ruleExtended->taskFinish['pri'][$task->pri]; - if(!empty($task->estimate)) $rule['score'] = $rule['score'] + round(($task->consumed / 10 * $task->estimate / $task->consumed)); + + if(!empty($this->config->score->{$extended}['pri'][$task->pri])) + { + $rule['score'] = $rule['score'] + $this->config->score->{$extended}['pri'][$task->pri]; + } + + if(!empty($task->estimate)) + { + $rule['score'] = $rule['score'] + round(($task->consumed / 10 * $task->estimate / $task->consumed)); + } } break; case 'bug': - if(is_numeric($param)) $desc .= 'ID:' . $param; - if($method == 'createFormCase') { $desc = $this->lang->score->modules['testcase'] . 'ID:' . $param; @@ -106,24 +109,23 @@ class scoreModel extends model if($method == 'confirmBug') { - $user = $param->openedBy; - $desc .= 'ID:' . $param->id; - if(!empty($this->config->score->ruleExtended->bugConfirmBug['severity'][$param->severity])) $rule['score'] = $rule['score'] + $this->config->score->ruleExtended->bugConfirmBug['severity'][$param->severity]; + $user = $param->openedBy; + $desc .= 'ID:' . $param->id; + if(!empty($this->config->score->{$extended}['severity'][$param->severity])) + { + $rule['score'] = $rule['score'] + $this->config->score->{$extended}['severity'][$param->severity]; + } } - if($method == 'resolve' && !empty($this->config->score->ruleExtended->bugResolve['severity'][$param->severity])) + if($method == 'resolve' && !empty($this->config->score->{$extended}['severity'][$param->severity])) { - $rule['score'] = $rule['score'] + $this->config->score->ruleExtended->bugResolve['severity'][$param->severity]; + $rule['score'] = $rule['score'] + $this->config->score->{$extended}['severity'][$param->severity]; } break; case 'testTask': if($method == 'runCase') $desc = $this->lang->score->methods[$module][$method] . 'ID:' . $param; break; - case 'build': - if($method == 'create') $desc .= 'ID:' . $param; - break; case 'project': - if($method == 'create') $desc .= 'ID:' . $param; if($method == 'close') { $desc = $this->lang->score->methods[$module][$method] . ',' . $desc . 'ID:' . $param->id; @@ -132,8 +134,11 @@ class scoreModel extends model /* Project PM. */ if(!empty($param->PM)) { - $rule['score'] = $this->config->score->ruleExtended->projectClose['manager']['close']; - if($param->end > date('Y-m-d', $timestamp)) $rule['score'] += $this->config->score->ruleExtended->projectClose['manager']['in']; + $rule['score'] = $this->config->score->{$extended}['manager']['close']; + if($param->end > date('Y-m-d', $timestamp)) + { + $rule['score'] += $this->config->score->{$extended}['manager']['onTime']; + } $this->saveScore($param->PM, $rule, $module, $method, $desc, $time); } @@ -141,8 +146,12 @@ class scoreModel extends model $teams = $this->dao->select('account')->from(TABLE_TEAM)->where('project')->eq($param->id)->fetchPairs(); if(!empty($teams)) { - $rule['score'] = $this->config->score->ruleExtended->projectClose['member']['close']; - if($param->end > date('Y-m-d', $timestamp)) $rule['score'] += $this->config->score->ruleExtended->projectClose['member']['in']; + $rule['score'] = $this->config->score->{$extended}['member']['close']; + if($param->end > date('Y-m-d', $timestamp)) + { + $rule['score'] += $this->config->score->{$extended}['member']['onTime']; + } + foreach($teams as $user) { if($user != $param->PM) $this->saveScore($user, $rule, $module, $method, $desc, $time); @@ -153,17 +162,7 @@ class scoreModel extends model return true; } break; - case 'productplan': - if($method == 'create') $desc .= 'ID:' . $param; - break; - case 'release': - if($method == 'create') $desc .= 'ID:' . $param; - break; - case 'testcase': - if($method == 'create') $desc .= 'ID:' . $param; - break; case 'search': - if($method == 'saveQuery') $desc .= 'ID:' . $param; if($method == 'saveQueryAdvanced') $desc = $this->lang->score->methods[$module][$method]; break; case 'ajax': diff --git a/module/score/view/rule.html.php b/module/score/view/rule.html.php index 55566f1866..84279cdf09 100644 --- a/module/score/view/rule.html.php +++ b/module/score/view/rule.html.php @@ -28,19 +28,19 @@ - config->score->rule as $module => $moduleRule):?> + score->rule as $module => $moduleRule):?> $rule):?> score->modules[$module];?> score->methods[$module][$method];?> score->noLimit : $rule['times'];?> - score->noLimit : $rule['hour'];?> + score->noLimit : $rule['hour'];?> score->extended->{$module . $method})) + if(isset($lang->score->extended[$module][$method])) { - $desc = $lang->score->extended->{$module . $method}; + $desc = $lang->score->extended[$module][$method]; $descRule = explode('##', $desc); if(!empty($descRule)) { @@ -51,11 +51,11 @@ $match = explode(',', $value); if(count($match) == 2) { - $score = $this->config->score->ruleExtended->{$module . $method}[$match[0]][$match[1]]; + $score = $config->score->ruleExtended[$module][$method][$match[0]][$match[1]]; } else { - $score = $this->config->score->ruleExtended->{$module . $method}[$match[0]]; + $score = $config->score->ruleExtended[$module][$method][$match[0]]; } $desc = str_replace('##' . $value . '##', $score, $desc); } diff --git a/module/task/view/start.html.php b/module/task/view/start.html.php index b098027fa8..5573008c9f 100644 --- a/module/task/view/start.html.php +++ b/module/task/view/start.html.php @@ -25,6 +25,7 @@ if($team[0] != $this->app->user->account):

task->deniedNotice;?>

+
@@ -58,5 +59,4 @@ if($team[0] != $this->app->user->account):
-