* Add buildBatchUpdateProjects method.
This commit is contained in:
@@ -1353,9 +1353,10 @@ class projectModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量更新项目。
|
||||
* Batch update projects.
|
||||
*
|
||||
* @param array $data
|
||||
* @param array $data
|
||||
* @access public
|
||||
* @return array|false
|
||||
*/
|
||||
@@ -1364,36 +1365,7 @@ class projectModel extends model
|
||||
$projects = array();
|
||||
$allChanges = array();
|
||||
$oldProjects = $this->getByIdList(array_keys($data));
|
||||
$extendFields = $this->getFlowExtendFields();
|
||||
foreach($data as $projectID => $project)
|
||||
{
|
||||
$projectID = (int)$projectID;
|
||||
|
||||
$projects[$projectID] = new stdClass();
|
||||
$projects[$projectID]->id = $projectID;
|
||||
$projects[$projectID]->name = $project->name;
|
||||
$projects[$projectID]->model = $oldProjects[$projectID]->model;
|
||||
$projects[$projectID]->PM = $project->PM;
|
||||
$projects[$projectID]->begin = $project->begin;
|
||||
$projects[$projectID]->end = $project->end == $this->lang->project->longTime ? LONG_TIME : $project->end;
|
||||
$projects[$projectID]->acl = $project->acl;
|
||||
$projects[$projectID]->lastEditedBy = $this->app->user->account;
|
||||
$projects[$projectID]->lastEditedDate = helper::now();
|
||||
|
||||
if(isset($project->parent)) $projects[$projectID]->parent = $project->parent;
|
||||
if(isset($project->code)) $projects[$projectID]->code = $project->code;
|
||||
if($project->end == $this->lang->project->longTime) $projects[$projectID]->days = 0;
|
||||
|
||||
foreach($extendFields as $extendField)
|
||||
{
|
||||
$projects[$projectID]->{$extendField->field} = $project->{$extendField->field};
|
||||
if(is_array($projects[$projectID]->{$extendField->field})) $projects[$projectID]->{$extendField->field} = implode(',', $projects[$projectID]->{$extendField->field});
|
||||
|
||||
$projects[$projectID]->{$extendField->field} = htmlSpecialString($projects[$projectID]->{$extendField->field});
|
||||
}
|
||||
}
|
||||
|
||||
if(dao::isError()) return false;
|
||||
$projects = $this->projectTao->buildBatchUpdateProjects($data, $oldProjects);
|
||||
|
||||
$this->loadModel('execution');
|
||||
$this->lang->error->unique = $this->lang->error->repeat;
|
||||
|
||||
@@ -552,6 +552,53 @@ class projectTao extends projectModel
|
||||
return helper::createLink('project', 'testcase', "projectID=%s");
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造批量更新项目的数据。
|
||||
* Build bathc update project data.
|
||||
*
|
||||
* @param array $data
|
||||
* @param array $oldProjects
|
||||
* @access protected
|
||||
* @return array
|
||||
*/
|
||||
protected function buildBatchUpdateProjects(array $data, array $oldProjects): array
|
||||
{
|
||||
if(empty($data)) return array();
|
||||
|
||||
$extendFields = $this->getFlowExtendFields();
|
||||
|
||||
$projects = array();
|
||||
foreach($data as $projectID => $project)
|
||||
{
|
||||
$projectID = (int)$projectID;
|
||||
|
||||
$projects[$projectID] = new stdClass();
|
||||
$projects[$projectID]->id = $projectID;
|
||||
$projects[$projectID]->name = $project->name;
|
||||
$projects[$projectID]->model = $oldProjects[$projectID]->model;
|
||||
$projects[$projectID]->PM = $project->PM;
|
||||
$projects[$projectID]->begin = $project->begin;
|
||||
$projects[$projectID]->end = $project->end == $this->lang->project->longTime ? LONG_TIME : $project->end;
|
||||
$projects[$projectID]->acl = $project->acl;
|
||||
$projects[$projectID]->lastEditedBy = $this->app->user->account;
|
||||
$projects[$projectID]->lastEditedDate = helper::now();
|
||||
|
||||
if(isset($project->parent)) $projects[$projectID]->parent = $project->parent;
|
||||
if(isset($project->code)) $projects[$projectID]->code = $project->code;
|
||||
if($project->end == $this->lang->project->longTime) $projects[$projectID]->days = 0;
|
||||
|
||||
foreach($extendFields as $extendField)
|
||||
{
|
||||
$projects[$projectID]->{$extendField->field} = $project->{$extendField->field};
|
||||
if(is_array($projects[$projectID]->{$extendField->field})) $projects[$projectID]->{$extendField->field} = implode(',', $projects[$projectID]->{$extendField->field});
|
||||
|
||||
$projects[$projectID]->{$extendField->field} = htmlSpecialString($projects[$projectID]->{$extendField->field});
|
||||
}
|
||||
}
|
||||
|
||||
return $projects;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除项目团队成员。
|
||||
* Delete project team member.
|
||||
|
||||
@@ -470,4 +470,25 @@ class Project
|
||||
$this->project->createProductDocLib($productID);
|
||||
return $this->project->dao->select('*')->from(TABLE_DOCLIB)->where('type')->eq('product')->andWhere('product')->eq($productID)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造批量更新项目的数据。
|
||||
* Build bathc update project data.
|
||||
*
|
||||
* @param array $projectIdList
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function buildBatchUpdateProjectsTest(array $projectIdList): array
|
||||
{
|
||||
$oldProjects = $this->project->getByIdList($projectIdList);
|
||||
$newProjects = array();
|
||||
foreach($oldProjects as $projectID => $project)
|
||||
{
|
||||
$newProjects[$projectID] = $project;
|
||||
$newProjects[$projectID]->name = '更新' . $project->name;
|
||||
$newProjects[$projectID]->PM = 'admin';
|
||||
}
|
||||
return $this->project->buildBatchUpdateProjects($newProjects, $oldProjects);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(__FILE__, 5) . "/test/lib/init.php";
|
||||
include dirname(__FILE__, 2) . '/project.class.php';
|
||||
su('admin');
|
||||
|
||||
zdTable('project')->config('project')->gen(5);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 projectModel->buildBatchUpdateProjects();
|
||||
timeout=0
|
||||
cid=1
|
||||
|
||||
*/
|
||||
|
||||
$projectTester = new project();
|
||||
|
||||
r($projectTester->buildBatchUpdateProjectsTest(array())) && p() && e('0'); // 测试空数据
|
||||
r($projectTester->buildBatchUpdateProjectsTest(array(1, 2, 3))) && p('1:name,PM') && e('更新敏捷项目1,admin'); // 测试构造项目ID为1、2、3的更新数据
|
||||
Reference in New Issue
Block a user