* adjust for merge program.
This commit is contained in:
+121
-1
@@ -139,13 +139,133 @@ class upgrade extends control
|
||||
$fromVersion = isset($_POST['fromVersion']) ? $this->post->fromVersion : $fromVersion;
|
||||
$this->upgrade->execute($fromVersion);
|
||||
|
||||
if(!$this->upgrade->isError()) $this->locate(inlink('afterExec', "fromVersion=$fromVersion"));
|
||||
if(!$this->upgrade->isError())
|
||||
{
|
||||
if(version_compare(str_replace('_', '.', $fromVersion), '15', '<')) $this->locate(inlink('mergeProgram'));
|
||||
$this->locate(inlink('afterExec', "fromVersion=$fromVersion"));
|
||||
}
|
||||
|
||||
$this->view->result = 'fail';
|
||||
$this->view->errors = $this->upgrade->getError();
|
||||
$this->display();
|
||||
}
|
||||
|
||||
public function mergeProgram($type = 'productline')
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
}
|
||||
|
||||
$this->view->type = $type;
|
||||
if($type == 'productline')
|
||||
{
|
||||
$productlines = $this->dao->select('*')->from(TABLE_MODULE)->where('type')->eq('line')->fetchAll('id');
|
||||
$noMergedProducts = $this->dao->select('*')->from(TABLE_PRODUCT)->where('program')->eq(0)->andWhere('line')->in(array_keys($productlines))->andWhere('deleted')->eq(0)->fetchAll('id');
|
||||
if(empty($noMergedProducts)) $this->locate($this->createLink('upgrade', 'mergeProgram', 'type=product'));
|
||||
|
||||
$noMergedProjects = $this->dao->select('t1.*')->from(TABLE_PROJECT)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.id=t2.project')
|
||||
->where('t1.program')->eq(0)
|
||||
->andWhere('t1.template')->eq('')
|
||||
->andWhere('t1.deleted')->eq(0)
|
||||
->andWhere('t2.product')->in(array_keys($noMergedProducts))
|
||||
->fetchAll('id');
|
||||
|
||||
$projectProducts = $this->dao->select('*')->from(TABLE_PROJECTPRODUCT)->where('project')->in(array_keys($noMergedProjects))->fetchGroup('project', 'product');
|
||||
foreach($projectProducts as $projectID => $products)
|
||||
{
|
||||
if(count($products) > 1) unset($noMergedProjects[$projectID]);
|
||||
}
|
||||
|
||||
$lineGroups = array();
|
||||
foreach($noMergedProducts as $product) $lineGroups[$product->line][$product->id] = $product;
|
||||
|
||||
$productGroups = array();
|
||||
foreach($noMergedProjects as $project)
|
||||
{
|
||||
$projectProduct = zget($projectProducts, $project->id, array());
|
||||
if(empty($projectProduct)) continue;
|
||||
|
||||
$productID = key($projectProduct);
|
||||
$productGroups[$productID][$project->id] = $project;
|
||||
}
|
||||
|
||||
$productlines;
|
||||
$this->view->productlines = $productlines;
|
||||
$this->view->lineGroups = $lineGroups;
|
||||
$this->view->productGroups = $productGroups;
|
||||
}
|
||||
if($type == 'product')
|
||||
{
|
||||
$noMergedProducts = $this->dao->select('*')->from(TABLE_PRODUCT)->where('program')->eq(0)->andWhere('deleted')->eq(0)->fetchAll('id');
|
||||
if(empty($noMergedProducts)) $this->locate($this->createLink('upgrade', 'mergeProgram', 'type=project'));
|
||||
|
||||
$noMergedProjects = $this->dao->select('t1.*')->from(TABLE_PROJECT)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.id=t2.project')
|
||||
->where('t1.program')->eq(0)
|
||||
->andWhere('t1.template')->eq('')
|
||||
->andWhere('t1.deleted')->eq(0)
|
||||
->andWhere('t2.product')->in(array_keys($noMergedProducts))
|
||||
->fetchAll('id');
|
||||
|
||||
$projectProducts = $this->dao->select('*')->from(TABLE_PROJECTPRODUCT)->where('project')->in(array_keys($noMergedProjects))->fetchGroup('project', 'product');
|
||||
foreach($projectProducts as $projectID => $products)
|
||||
{
|
||||
if(count($products) > 1) unset($noMergedProjects[$projectID]);
|
||||
}
|
||||
|
||||
$productGroups = array();
|
||||
foreach($noMergedProjects as $project)
|
||||
{
|
||||
$projectProduct = zget($projectProducts, $project->id, array());
|
||||
if(empty($projectProduct)) continue;
|
||||
|
||||
$productID = key($projectProduct);
|
||||
$productGroups[$productID][$project->id] = $project;
|
||||
}
|
||||
$this->view->noMergedProducts = $noMergedProducts;
|
||||
$this->view->productGroups = $productGroups;
|
||||
}
|
||||
if($type == 'project')
|
||||
{
|
||||
$noMergedProjects = $this->dao->select('*')->from(TABLE_PROJECT)->where('program')->eq(0)->andWhere('template')->eq('')->andWhere('deleted')->eq(0)->fetchAll('id');
|
||||
$projectProducts = $this->dao->select('*')->from(TABLE_PROJECTPRODUCT)->where('project')->in(array_keys($noMergedProjects))->fetchGroup('project', 'product');
|
||||
foreach($projectProducts as $projectID => $products) unset($noMergedProjects[$projectID]);
|
||||
|
||||
$this->view->noMergedProjects = $noMergedProjects;
|
||||
}
|
||||
if($type == 'moreLink')
|
||||
{
|
||||
$noMergedProjects = $this->dao->select('*')->from(TABLE_PROJECT)->where('program')->eq(0)->andWhere('template')->eq('')->andWhere('deleted')->eq(0)->fetchAll('id');
|
||||
$projectProducts = $this->dao->select('*')->from(TABLE_PROJECTPRODUCT)->where('project')->in(array_keys($noMergedProjects))->fetchGroup('project', 'product');
|
||||
|
||||
$productPairs = array();
|
||||
foreach($projectProducts as $projectID => $products)
|
||||
{
|
||||
foreach($products as $productID => $data) $productPairs[$productID] = $productID;
|
||||
}
|
||||
|
||||
$programes = $this->dao->select('t1.*,t2.id as productID')->from(TABLE_PROJECT)->alias('t1')
|
||||
->leftJoin(TABLE_PRODUCT)->alias('t2')->on('t1.id=t2.program')
|
||||
->where('t2.id')->in($productPairs)
|
||||
->fetchAll('productID');
|
||||
|
||||
foreach($noMergedProjects as $projectID => $project)
|
||||
{
|
||||
$products = zget($projectProducts, $projectID, array());
|
||||
foreach($projects as $productID => $data)
|
||||
{
|
||||
$program = zget($programs, $productID, '');
|
||||
if($program) $project->programs[$program->id] = $program->name;
|
||||
}
|
||||
}
|
||||
|
||||
$this->view->noMergedProjects = $noMergedProjects;
|
||||
}
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* After execute.
|
||||
*
|
||||
|
||||
@@ -47,6 +47,7 @@ $lang->upgrade->forbiddenExt = '以下插件与新版本不兼容,已经自
|
||||
$lang->upgrade->updateFile = '需要更新附件信息。';
|
||||
$lang->upgrade->noticeSQL = '检查到你的数据库跟标准不一致,尝试修复失败。请执行以下SQL语句,再刷新页面检查。';
|
||||
$lang->upgrade->afterDeleted = '以上文件未能删除, 删除后刷新!';
|
||||
$lang->upgrade->mergeProgram = '数据归并';
|
||||
$lang->upgrade->to15Tips = '禅道15版本升级提示';
|
||||
$lang->upgrade->to15Button = '我已经做好备份,开始升级吧!';
|
||||
$lang->upgrade->to15Desc = <<<EOD
|
||||
@@ -73,4 +74,14 @@ $lang->upgrade->to15Desc = <<<EOD
|
||||
</div>
|
||||
EOD;
|
||||
|
||||
$lang->upgrade->line = '产品线';
|
||||
$lang->upgrade->program = '项目名称';
|
||||
$lang->upgrade->product = $lang->productCommon;
|
||||
$lang->upgrade->project = $lang->projectCommon;
|
||||
|
||||
$lang->upgrade->mergeByProductLine = "以产品线组织的产品和迭代:将整个产品线及其下面的产品和迭代归并到一个大项目中。";
|
||||
$lang->upgrade->mergeByProduct = "以产品组织的迭代:可以选择多个产品及其下面的迭代归并到一个大项目中,也可以选择某一个产品将其下面所属的迭代归并到大项目中。";
|
||||
$lang->upgrade->mergeByProject = "独立的迭代:可以选择若干迭代归并到一个大项目中,也可以独立归并。";
|
||||
$lang->upgrade->mergeByMoreLink = "关联多个产品的迭代:选择这个迭代归属于哪一个产品。";
|
||||
|
||||
include dirname(__FILE__) . '/version.php';
|
||||
|
||||
Reference in New Issue
Block a user