* hasUnfinishedChildren return bool.
This commit is contained in:
@@ -236,7 +236,7 @@ class program extends control
|
||||
if(!empty($_POST))
|
||||
{
|
||||
/* Only when all subprograms and subprojects are closed can the program be closed. */
|
||||
$hasUnfinished = $this->program->hasUnfinished($program);
|
||||
$hasUnfinished = $this->program->hasUnfinishedChildren($program);
|
||||
if($hasUnfinished) return $this->send(array('result' => 'fail', 'callback' => "zui.Modal.alert('{$this->lang->program->closeErrorMessage}');"));
|
||||
|
||||
$programData = form::data()->get();
|
||||
|
||||
@@ -1043,21 +1043,24 @@ class programModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* 该项目集下未关闭的子项目集或项目的数量。
|
||||
* 该项目集下是否有未关闭的子项目集或项目。
|
||||
* Judge whether there is an unclosed programs or projects.
|
||||
*
|
||||
* @param object $program
|
||||
* @access public
|
||||
* @return int
|
||||
* @return bool
|
||||
*/
|
||||
public function hasUnfinished(object $program): int
|
||||
public function hasUnfinishedChildren(object $program): bool
|
||||
{
|
||||
return $this->dao->select("count(IF(id != {$program->id}, 1, 0)) as count")->from(TABLE_PROJECT)
|
||||
$count = $this->dao->select("id")->from(TABLE_PROJECT)
|
||||
->where('type')->in('program, project')
|
||||
->andWhere('path')->like($program->path . '%')
|
||||
->andWhere('id')->ne($program->id)
|
||||
->andWhere('status')->ne('closed')
|
||||
->andWhere('deleted')->eq('0')
|
||||
->fetch('count');
|
||||
->count();
|
||||
|
||||
return $count != 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/program.class.php';
|
||||
zdTable('user')->gen(5);
|
||||
zdTable('project')->config('program')->gen(20)->fixpath();
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=测试 programModel::hasUnfinished();
|
||||
timeout=0
|
||||
cid=1
|
||||
|
||||
*/
|
||||
|
||||
$programIdList = array(1, 2, 3);
|
||||
$programTester = new programTest();
|
||||
|
||||
r($programTester->hasUnfinishedTest($programIdList[0])) && p() && e('4'); // 获取项目集1下未完成的项目和项目集数量
|
||||
r($programTester->hasUnfinishedTest($programIdList[1])) && p() && e('2'); // 获取项目集2下未完成的项目和项目集数量
|
||||
r($programTester->hasUnfinishedTest($programIdList[2])) && p() && e('1'); // 获取项目集3下未完成的项目和项目集数量
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/program.class.php';
|
||||
zdTable('user')->gen(5);
|
||||
zdTable('project')->config('program')->gen(20)->fixpath();
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=测试 programModel::hasUnfinished();
|
||||
timeout=0
|
||||
cid=1
|
||||
|
||||
*/
|
||||
|
||||
$programIdList = array(1, 2, 3);
|
||||
$programTester = new programTest();
|
||||
|
||||
r($programTester->hasUnfinishedChildrenTest($programIdList[0])) && p() && e('1'); // 获取项目集1下未完成的项目和项目集数量
|
||||
r($programTester->hasUnfinishedChildrenTest($programIdList[1])) && p() && e('1'); // 获取项目集2下未完成的项目和项目集数量
|
||||
r($programTester->hasUnfinishedChildrenTest($programIdList[2])) && p() && e('0'); // 获取项目集3下未完成的项目和项目集数量
|
||||
@@ -245,17 +245,17 @@ class programTest
|
||||
}
|
||||
|
||||
/**
|
||||
* 该项目集下未关闭的子项目集或项目的数量。
|
||||
* 该项目集下是否未关闭的子项目集或项目。
|
||||
* Judge whether there is an unclosed programs or projects.
|
||||
*
|
||||
* @param int $programID
|
||||
* @access public
|
||||
* @return int
|
||||
* @return bool
|
||||
*/
|
||||
public function hasUnfinishedTest(int $programID): int
|
||||
public function hasUnfinishedChidlrenTest(int $programID): bool
|
||||
{
|
||||
$program = $this->program->getByID($programID);
|
||||
return $this->program->hasUnfinished($program);
|
||||
return $this->program->hasUnfinishedChildren($program);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user