From e57d1d1cc7beb9342092d7e9900a9036d321eb82 Mon Sep 17 00:00:00 2001 From: zhouxin Date: Fri, 12 Nov 2021 14:06:44 +0800 Subject: [PATCH] Finish task #43916. --- module/execution/model.php | 14 ++++++-------- module/product/model.php | 11 ++++------- module/program/model.php | 2 +- module/project/control.php | 9 ++++++--- module/project/model.php | 14 ++++++-------- 5 files changed, 23 insertions(+), 27 deletions(-) diff --git a/module/execution/model.php b/module/execution/model.php index 54c37ce3e8..d6d061b6dc 100644 --- a/module/execution/model.php +++ b/module/execution/model.php @@ -365,8 +365,8 @@ class executionModel extends model $this->dao->insert(TABLE_EXECUTION)->data($sprint) ->autoCheck($skipFields = 'begin,end') ->batchcheck($this->config->execution->create->requiredFields, 'notempty') - ->checkIF(!empty($sprint->name), 'name', 'unique', "`type` in ('sprint','stage') and `parent` = $sprint->parent") - ->checkIF(!empty($sprint->code), 'code', 'unique', "`type` in ('sprint','stage') and `parent` = $sprint->parent") + ->checkIF(!empty($sprint->name), 'name', 'unique', "`type` in ('sprint','stage') and `project` = $sprint->project") + ->checkIF(!empty($sprint->code), 'code', 'unique', "`type` in ('sprint','stage')") ->checkIF($sprint->begin != '', 'begin', 'date') ->checkIF($sprint->end != '', 'end', 'date') ->checkIF($sprint->end != '', 'end', 'ge', $sprint->begin) @@ -519,6 +519,7 @@ class executionModel extends model ->checkIF($execution->begin != '', 'begin', 'date') ->checkIF($execution->end != '', 'end', 'date') ->checkIF($execution->end != '', 'end', 'ge', $execution->begin) + ->checkIF(!empty($execution->name), 'name', 'unique', "id != $executionID and type in ('sprint','stage') and `project` = $execution->project") ->checkIF(!empty($execution->code), 'code', 'unique', "id != $executionID and type in ('sprint','stage')") ->where('id')->eq($executionID) ->limit(1) @@ -544,7 +545,7 @@ class executionModel extends model $changedAccounts[$owner] = $owner; $teamMembers[$ownerField] = $member; } - if($execution->project) $this->addProjectMembers($execution->project, $teamMembers); + if($execution->project) $this->addProjectMembers($execution->project, $teamMembers); $whitelist = explode(',', $execution->whitelist); $this->loadModel('personnel')->updateWhitelist($whitelist, 'sprint', $executionID); @@ -624,10 +625,6 @@ class executionModel extends model if(isset($data->projects)) $executions[$executionID]->project = zget($data->projects, $executionID, 0); if(isset($data->attributes)) $executions[$executionID]->attribute = zget($data->attributes, $executionID, ''); - /* Check unique name for edited executions. */ - if(isset($nameList[$executionName])) dao::$errors['name'][] = 'execution#' . $executionID . sprintf($this->lang->error->unique, $this->lang->execution->name, $executionName); - $nameList[$executionName] = $executionName; - /* Check unique code for edited executions. */ if($projectModel == 'scrum' and empty($executionCode)) { @@ -653,7 +650,8 @@ class executionModel extends model ->checkIF($execution->begin != '', 'begin', 'date') ->checkIF($execution->end != '', 'end', 'date') ->checkIF($execution->end != '', 'end', 'gt', $execution->begin) - ->checkIF(!empty($execution->code), 'code', 'unique', "id NOT " . helper::dbIN($data->executionIDList) . " and type in ('sprint','stage')") + ->checkIF(!empty($execution->name), 'name', 'unique', "id != $executionID and type in ('sprint','stage') and `project` = $oldExecution->project") + ->checkIF(!empty($execution->code), 'code', 'unique', "id != $executionID and type in ('sprint','stage')") ->where('id')->eq($executionID) ->limit(1) ->exec(); diff --git a/module/product/model.php b/module/product/model.php index ac18b4f688..70ba07f817 100644 --- a/module/product/model.php +++ b/module/product/model.php @@ -562,7 +562,7 @@ class productModel extends model $this->dao->insert(TABLE_PRODUCT)->data($product)->autoCheck() ->batchCheck($this->config->product->create->requiredFields, 'notempty') ->checkIF(!empty($product->name), 'name', 'unique', "`program` = $product->program") - ->checkIF(!empty($product->code), 'code', 'unique', "`program` = $product->program") + ->checkIF(!empty($product->code), 'code', 'unique') ->exec(); if(!dao::isError()) @@ -631,8 +631,8 @@ class productModel extends model $product = $this->loadModel('file')->processImgURL($product, $this->config->product->editor->edit['id'], $this->post->uid); $this->dao->update(TABLE_PRODUCT)->data($product)->autoCheck() ->batchCheck($this->config->product->edit->requiredFields, 'notempty') + ->checkIF(!empty($product->name), 'name', 'unique', "id != $productID and `program` = $product->program") ->checkIF(!empty($product->code), 'code', 'unique', "id != $productID") - ->check('name', 'unique', "id != $productID and deleted = '0'") ->where('id')->eq($productID) ->exec(); @@ -659,6 +659,7 @@ class productModel extends model $data = fixer::input('post')->get(); $oldProducts = $this->getByIdList($this->post->productIDList); $nameList = array(); + foreach($data->productIDList as $productID) { $productName = $data->names[$productID]; @@ -675,10 +676,6 @@ class productModel extends model $products[$productID]->status = $data->statuses[$productID]; $products[$productID]->desc = strip_tags($this->post->descs[$productID], $this->config->allowedTags); $products[$productID]->acl = $data->acls[$productID]; - - /* Check unique name for edited products. */ - if(isset($nameList[$productName])) dao::$errors['name'][] = 'product#' . $productID . sprintf($this->lang->error->unique, $this->lang->product->name, $productName); - $nameList[$productName] = $productName; } if(dao::isError()) die(js::error(dao::getError())); @@ -690,7 +687,7 @@ class productModel extends model ->data($product) ->autoCheck() ->batchCheck($this->config->product->edit->requiredFields , 'notempty') - ->check('name', 'unique', "id NOT " . helper::dbIN($data->productIDList) . " and deleted='0'") + ->checkIF(!empty($product->name), 'name', 'unique', "id != $productID and `program` = $oldProduct->program") ->where('id')->eq($productID) ->exec(); if(dao::isError()) die(js::error('product#' . $productID . dao::getError(true))); diff --git a/module/program/model.php b/module/program/model.php index 46bb357213..8ab2027d4a 100644 --- a/module/program/model.php +++ b/module/program/model.php @@ -741,7 +741,7 @@ class programModel extends model ->checkIF($program->begin != '', 'begin', 'date') ->checkIF($program->end != '', 'end', 'date') ->checkIF($program->end != '', 'end', 'gt', $program->begin) - ->check('name', 'unique', "id!=$programID and deleted='0' and `type`='program'") + ->checkIF(!empty($program->name), 'name', 'unique', "id!=$programID and `type`='program' and `parent` = $program->parent") ->where('id')->eq($programID) ->limit(1) ->exec(); diff --git a/module/project/control.php b/module/project/control.php index 1a78c40116..cc91cf633e 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -272,7 +272,7 @@ class project extends control $this->view->title = $this->lang->project->browse; $this->view->position[] = $this->lang->project->browse; - + $this->view->projectStats = $projectStats; $this->view->pager = $pager; $this->view->programID = $programID; @@ -511,9 +511,12 @@ class project extends control /* Link the plan stories. */ $newPlans = array(); - foreach($_POST['plans'] as $plans) + if(isset($_POST['plans'])) { - foreach($plans as $planID) $newPlans[$planID] = $planID; + foreach($_POST['plans'] as $plans) + { + foreach($plans as $planID) $newPlans[$planID] = $planID; + } } $diffResult = array_diff($oldPlans, $newPlans); diff --git a/module/project/model.php b/module/project/model.php index 7c3d87401b..e46937ae4a 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -840,7 +840,7 @@ class projectModel extends model ->autoCheck() ->batchcheck($requiredFields, 'notempty') ->checkIF(!empty($project->name), 'name', 'unique', "`type`='project' and `parent` = $project->parent") - ->checkIF(!empty($project->code), 'code', 'unique', "`type`='project' and `parent` = $project->parent") + ->checkIF(!empty($project->code), 'code', 'unique', "`type`='project'") ->checkIF($project->end != '', 'end', 'gt', $project->begin) ->exec(); @@ -1031,8 +1031,8 @@ class projectModel extends model ->checkIF($project->begin != '', 'begin', 'date') ->checkIF($project->end != '', 'end', 'date') ->checkIF($project->end != '', 'end', 'gt', $project->begin) - ->checkIF(!empty($project->code), 'code', 'unique', "id != $projectID and type='project'") - ->check('name', 'unique', "id != $projectID AND type='project' AND deleted='0'") + ->checkIF(!empty($project->name), 'name', 'unique', "id != $projectID and `type` = 'project' and `parent` = $project->parent") + ->checkIF(!empty($project->code), 'code', 'unique', "id != $projectID and `type` = 'project'") ->where('id')->eq($projectID) ->exec(); @@ -1096,10 +1096,6 @@ class projectModel extends model $projects[$projectID]->lastEditedBy = $this->app->user->account; $projects[$projectID]->lastEditedDate = helper::now(); - /* Check unique name for edited projects. */ - if(isset($nameList[$projectName])) dao::$errors['name'][] = 'project#' . $projectID . sprintf($this->lang->error->unique, $this->lang->project->name, $projectName); - $nameList[$projectName] = $projectName; - if($projects[$projectID]->parent) { $parentProject = $this->dao->select('*')->from(TABLE_PROGRAM)->where('id')->eq($projects[$projectID]->parent)->fetch(); @@ -1125,6 +1121,8 @@ class projectModel extends model ->checkIF($project->begin != '', 'begin', 'date') ->checkIF($project->end != '', 'end', 'date') ->checkIF($project->end != '', 'end', 'gt', $project->begin) + ->checkIF(!empty($project->name), 'name', 'unique', "id != $projectID and `type`='project' and `parent` = $project->parent") + ->checkIF(!empty($project->code), 'code', 'unique', "id != $projectID and `type`='project'") ->where('id')->eq($projectID) ->exec(); @@ -1464,7 +1462,7 @@ class projectModel extends model $class = "c-$id" . (in_array($id, array('budget', 'teamCount', 'estimate', 'consume')) ? ' c-number' : ''); if($id == 'id') $class .= ' cell-id'; - + if($id == 'code') $title = "title={$project->code}"; if($id == 'name')