* Fix bug..

This commit is contained in:
leiyong
2020-12-18 09:51:05 +08:00
parent 245db6881b
commit 46c6c94d67
2 changed files with 45 additions and 28 deletions
-11
View File
@@ -23,14 +23,6 @@ class task extends control
$this->loadModel('project');
$this->loadModel('story');
$this->loadModel('tree');
/* Add required fields to waterfall project. */
$project = $this->project->getByID($this->session->PRJ);
if(!empty($project) && $project->model == 'waterfall')
{
$this->config->task->create->requiredFields .= ',estStarted,deadline';
$this->config->task->edit->requiredFields .= ',estStarted,deadline';
}
}
/**
@@ -57,9 +49,6 @@ class task extends control
die(js::locate($this->createLink('project', 'task', "projectID=$projectID")));
}
$program = $this->loadModel('project')->getByID($this->session->PRJ);
if($program->model == 'waterfall') $this->config->task->create->requiredFields .= ',estStarted,deadline';
$task = new stdClass();
$task->module = $moduleID;
$task->assignedTo = '';
+45 -17
View File
@@ -28,6 +28,7 @@ class taskModel extends model
return false;
}
$this->getExtraRequiredFields();
$projectID = (int)$projectID;
$taskIdList = array();
$taskFiles = array();
@@ -279,6 +280,7 @@ class taskModel extends model
$assignedTo = '';
/* Get task data. */
$this->getExtraRequiredFields();
$extendFields = $this->getFlowExtendFields();
$data = array();
foreach($tasks->name as $i => $name)
@@ -776,6 +778,8 @@ class taskModel extends model
*/
public function update($taskID)
{
$this->getExtraRequiredFields();
$oldTask = $this->getByID($taskID);
if($this->post->estimate < 0 or $this->post->left < 0 or $this->post->consumed < 0)
{
@@ -834,6 +838,8 @@ class taskModel extends model
->setIF($oldTask->parent < 0, 'estimate', $oldTask->estimate)
->setIF($oldTask->parent < 0, 'left', $oldTask->left)
->setIF($oldTask->name != $task->name || $oldTask->estStarted != $task->estStarted || $oldTask->deadline != $task->deadline, 'version', $oldTask->version + 1)
->setDefault('lastEditedBy', $this->app->user->account)
->add('lastEditedDate', $now)
->stripTags($this->config->task->editor->edit['id'], $this->config->allowedTags)
@@ -898,13 +904,6 @@ class taskModel extends model
}
}
/* Mark design version.*/
if(isset($task->design) && !empty($task->design))
{
$design = $this->loadModel('design')->getByID($task->design);
$this->dao->update(TABLE_TASK)->set('designVersion')->eq($design->version)->where('id')->eq($taskID)->exec();
}
$projectType = $this->dao->select('*')->from(TABLE_PROJECT)->where('id')->eq($task->project)->fetch('type');
$requiredFields = "," . $this->config->task->edit->requiredFields . ",";
if($projectType == 'ops')
@@ -943,10 +942,16 @@ class taskModel extends model
if(!dao::isError())
{
/* Mark design version.*/
if(isset($task->design) && !empty($task->design))
{
$design = $this->loadModel('design')->getByID($task->design);
$this->dao->update(TABLE_TASK)->set('designVersion')->eq($design->version)->where('id')->eq($taskID)->exec();
}
/* Record task version. */
if($oldTask->name != $task->name || $oldTask->estStarted != $task->estStarted || $oldTask->deadline != $task->deadline)
if($task->version > $oldTask->version)
{
$task->version = $oldTask->version + 1;
$taskSpec = new stdClass();
$taskSpec->task = $taskID;
$taskSpec->version = $task->version;
@@ -1081,14 +1086,6 @@ class taskModel extends model
if($oldTask->name != $task->name || $oldTask->estStarted != $task->estStarted || $oldTask->deadline != $task->deadline)
{
$task->version = $oldTask->version + 1;
$taskSpec = new stdClass();
$taskSpec->task = $taskID;
$taskSpec->version = $task->version;
$taskSpec->name = $task->name;
$taskSpec->estStarted = $task->estStarted;
$taskSpec->deadline = $task->deadline;
$this->dao->insert(TABLE_TASKSPEC)->data($taskSpec)->autoCheck()->exec();
}
foreach($extendFields as $extendField)
@@ -1176,6 +1173,7 @@ class taskModel extends model
{
if($task->status == 'done' and $task->consumed == false) die(js::error('task#' . $taskID . sprintf($this->lang->error->notempty, $this->lang->task->consumedThisTime)));
if($task->status == 'cancel') continue;
if($task->estStarted > $task->deadline) die(js::error('task#' . $taskID . $this->lang->task->error->deadlineSmall));
foreach(explode(',', $this->config->task->edit->requiredFields) as $field)
{
$field = trim($field);
@@ -1217,6 +1215,19 @@ class taskModel extends model
if($oldTask->story != false) $this->loadModel('story')->setStage($oldTask->story);
if(!dao::isError())
{
/* Record version change history. */
if($task->version > $oldTask->version)
{
$taskSpec = new stdClass();
$taskSpec->task = $taskID;
$taskSpec->version = $task->version;
$taskSpec->name = $task->name;
$taskSpec->estStarted = $task->estStarted;
$taskSpec->deadline = $task->deadline;
$this->dao->insert(TABLE_TASKSPEC)->data($taskSpec)->autoCheck()->exec();
}
if($oldTask->parent > 0)
{
$this->updateParentStatus($oldTask->id);
@@ -3231,4 +3242,21 @@ class taskModel extends model
}
return $members;
}
/**
* Get additional required fields.
*
* @access public
* @return void
*/
public function getExtraRequiredFields()
{
/* Add required fields to waterfall project. */
$project = $this->loadModel('program')->getPRJByID($this->session->PRJ);
if(!empty($project) && $project->model == 'waterfall')
{
$this->config->task->create->requiredFields .= ',estStarted,deadline';
$this->config->task->edit->requiredFields .= ',estStarted,deadline';
}
}
}