diff --git a/module/project/control.php b/module/project/control.php index 81ed92c197..bb048bcf56 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -429,6 +429,7 @@ class project extends control } } + $this->executeHooks($projectID); if($this->viewType == 'json') return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'id' => $projectID)); if($this->app->tab == 'program') @@ -587,6 +588,7 @@ class project extends control $this->loadModel('productplan')->linkProject($projectID, $newPlans); } + $this->executeHooks($projectID); if(isonlybody()) return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => 'parent')); $locateLink = ($this->session->projectList and $from != 'view') ? $this->session->projectList : inLink('view', "projectID=$projectID"); @@ -762,6 +764,8 @@ class project extends control if(!empty($extend) and $extend->extensionType == 'extend') $isExtended = true; } + $this->executeHooks($projectID); + $this->view->title = $this->lang->project->view; $this->view->position = $this->lang->project->view; $this->view->projectID = $projectID; @@ -1722,6 +1726,7 @@ class project extends control $url = $this->createLink('project', 'browse'); if($this->app->tab == 'program') $url = $this->createLink('program', 'browse'); + $this->executeHooks($projectID); if(empty($executionIdList)) { if($this->viewType == 'json') return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess)); diff --git a/module/project/model.php b/module/project/model.php index 332115bac2..b65d3d13af 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -1517,6 +1517,7 @@ class projectModel extends model /* When acl is open, white list set empty. When acl is private,update user view. */ if($project->acl == 'open') $this->loadModel('personnel')->updateWhitelist(array(), 'project', $projectID); if($project->acl != 'open') $this->loadModel('user')->updateUserView($projectID, 'project'); + $this->executeHooks($projectID); } $allChanges[$projectID] = common::createChanges($oldProject, $project); } diff --git a/module/task/model.php b/module/task/model.php index 7048674465..f070271d1d 100644 --- a/module/task/model.php +++ b/module/task/model.php @@ -1142,21 +1142,21 @@ class taskModel extends model { if(isset($data->modules[$taskID]) and ($data->modules[$taskID] == 'ditto')) $data->modules[$taskID] = isset($prev['module']) ? $prev['module'] : 0; if($data->types[$taskID] == 'ditto') $data->types[$taskID] = isset($prev['type']) ? $prev['type'] : ''; - if($data->assignedTos[$taskID] == 'ditto') $data->assignedTos[$taskID] = isset($prev['assignedTo']) ? $prev['assignedTo'] : ''; if($data->pris[$taskID] == 'ditto') $data->pris[$taskID] = isset($prev['pri']) ? $prev['pri'] : 0; if($data->finishedBys[$taskID] == 'ditto') $data->finishedBys[$taskID] = isset($prev['finishedBy']) ? $prev['finishedBy'] : ''; if($data->canceledBys[$taskID] == 'ditto') $data->canceledBys[$taskID] = isset($prev['canceledBy']) ? $prev['canceledBy'] : ''; if($data->closedBys[$taskID] == 'ditto') $data->closedBys[$taskID] = isset($prev['closedBy']) ? $prev['closedBy'] : ''; if($data->estStarteds[$taskID] == '0000-00-00') $data->estStarteds[$taskID] = ''; if($data->deadlines[$taskID] == '0000-00-00') $data->deadlines[$taskID] = ''; + if(isset($data->assignedTos[$taskID]) and $data->assignedTos[$taskID] == 'ditto') $data->assignedTos[$taskID] = isset($prev['assignedTo']) ? $prev['assignedTo'] : ''; $prev['module'] = $data->modules[$taskID]; $prev['type'] = $data->types[$taskID]; - $prev['assignedTo'] = $data->assignedTos[$taskID]; $prev['pri'] = $data->pris[$taskID]; $prev['finishedBy'] = $data->finishedBys[$taskID]; $prev['canceledBy'] = $data->canceledBys[$taskID]; $prev['closedBy'] = $data->closedBys[$taskID]; + if(isset($data->assignedTos[$taskID])) $prev['assignedTo'] = $data->assignedTos[$taskID]; } /* Initialize tasks from the post data.*/ @@ -1174,7 +1174,6 @@ class taskModel extends model $task->module = isset($data->modules[$taskID]) ? $data->modules[$taskID] : 0; $task->type = $data->types[$taskID]; $task->status = isset($data->statuses[$taskID]) ? $data->statuses[$taskID] : $oldTask->status; - $task->assignedTo = $task->status == 'closed' ? 'closed' : $data->assignedTos[$taskID]; $task->pri = $data->pris[$taskID]; $task->estimate = isset($data->estimates[$taskID]) ? $data->estimates[$taskID] : $oldTask->estimate; $task->left = isset($data->lefts[$taskID]) ? $data->lefts[$taskID] : $oldTask->left; @@ -1184,7 +1183,6 @@ class taskModel extends model $task->canceledBy = $data->canceledBys[$taskID]; $task->closedBy = $data->closedBys[$taskID]; $task->closedReason = $data->closedReasons[$taskID]; - $task->assignedDate = $oldTask->assignedTo ==$task->assignedTo ? $oldTask->assignedDate : $now; $task->finishedDate = $oldTask->finishedBy == $task->finishedBy ? $oldTask->finishedDate : $now; $task->canceledDate = $oldTask->canceledBy == $task->canceledBy ? $oldTask->canceledDate : $now; $task->closedDate = $oldTask->closedBy == $task->closedBy ? $oldTask->closedDate : $now; @@ -1193,6 +1191,10 @@ class taskModel extends model $task->consumed = $oldTask->consumed; $task->parent = $oldTask->parent; + if(isset($data->assignedTos[$taskID])) $task->assignedTo = $data->assignedTos[$taskID]; + if($task->status == 'closed') $task->assignedTo = 'closed'; + if(isset($task->assignedTo) and $oldTask->assignedTo != $task->assignedTo) $task->assignedDate = $now; + if(strpos(',doing,pause,', $task->status) and empty($teams) and empty($task->left)) { dao::$errors[] = sprintf($this->lang->task->error->leftEmptyAB, zget($this->lang->task->statusList, $task->status));