Merge branch ztflow-sunguangming-feature/projecttpl#sunguangming of zentao/zentaopms (#9082)

This commit is contained in:
刘刚
2025-06-03 14:15:25 +08:00
committed by Gitfox
10 changed files with 23 additions and 44 deletions
+11 -32
View File
@@ -163,23 +163,14 @@ class baseDAO
*/
public $autoLang;
/**
* 是否自动增加isTpl条件。
* If auto add isTpl statement.
*
* @var bool
* @access public
*/
public $autoTpl;
/**
* 是否自动过滤模板数据。
* If auto filter template data.
*
* @var bool
* @var string skip(本次不过滤)|always(总是过滤)|never(从不过滤)
* @access public
*/
public static $filterTpl = true;
public static $filterTpl = 'always';
/**
* 上一次插入的数据id。
@@ -320,30 +311,16 @@ class baseDAO
}
/**
* 设置是否过滤模板数据。
* Set autoTpl item.
* 设置过滤模板数据的方式。
* Set the way to filter template data.
*
* @param bool $autoTpl
* @param string $method skip(本次不过滤)|always(总是过滤)|never(从不过滤)
* @access public
* @return void
*/
public function setAutoTpl($autoTpl)
public function filterTpl($method = 'always')
{
$this->autoTpl = $autoTpl;
return $this;
}
/**
* 设置是否全局过滤模板数据。
* Set if filter template data.
*
* @param bool $filterTpl
* @access public
* @return void
*/
public function filterTpl($filterTpl)
{
dao::$filterTpl = $filterTpl;
dao::$filterTpl = $method;
return $this;
}
@@ -906,7 +883,7 @@ class baseDAO
$sql .= '(`' . implode('`,`', array_keys($values)) . '`)' . ' VALUES(' . implode(',', $values) . ')';
}
elseif($this->method == 'select' && dao::$filterTpl && $this->autoTpl)
elseif($this->method == 'select' && dao::$filterTpl == 'always')
{
/* 过滤模板类型的数据 */
foreach(array('project', 'task') as $table)
@@ -949,6 +926,8 @@ class baseDAO
}
}
}
if(dao::$filterTpl == 'skip') dao::$filterTpl = 'always';
}
/**
@@ -1316,7 +1295,7 @@ class baseDAO
*/
public function fetch($field = '')
{
$this->setAutoTpl(false);
$this->filterTpl('never');
$sql = $this->processSQL();
$key = $this->createCacheKey('fetch', md5($sql));
+1 -1
View File
@@ -2122,7 +2122,7 @@ class docModel extends model
if($type == 'project' && !empty($executionIDList))
{
$executionPairs = $this->dao->select('id,name')->from(TABLE_EXECUTION)->where('id')->in($executionIDList)->setAutoTpl(false)->fetchPairs();
$executionPairs = $this->dao->select('id,name')->from(TABLE_EXECUTION)->where('id')->in($executionIDList)->filterTpl('skip')->fetchPairs();
foreach($libs as &$lib)
{
if($lib->type != 'execution') continue;
+1 -1
View File
@@ -1046,7 +1046,7 @@ class execution extends control
public function create(int $projectID = 0, int $executionID = 0, int $copyExecutionID = 0, int $planID = 0, string $confirm = 'no', int $productID = 0, string $extra = '')
{
$project = empty($projectID) ? null : $this->loadModel('project')->fetchByID($projectID);
if(!empty($project->isTpl)) dao::$filterTpl = false;
if(!empty($project->isTpl)) dao::$filterTpl = 'never';
if($this->app->tab == 'doc') unset($this->lang->doc->menu->execution['subMenu']);
if($this->app->tab == 'project') $this->project->setMenu($projectID);
+1 -1
View File
@@ -147,7 +147,7 @@ class executionModel extends model
/* 模板执行过滤部分导航菜单。 */
if(!empty($execution->isTpl))
{
dao::$filterTpl = false;
dao::$filterTpl = 'never';
/* 模板执行不显示1.5级导航。 */
$this->config->hasDropmenuApps = array_diff($this->config->hasDropmenuApps, array('project', 'execution'));
+1 -1
View File
@@ -1511,7 +1511,7 @@ class myModel extends model
->beginIF($type == 'undone')->andWhere('t1.status')->eq('normal')->fi()
->beginIF($type == 'ownbyme')->andWhere('t1.PO')->eq($this->app->user->account)->fi()
->beginIF(!$this->app->user->admin)->andWhere('t1.id')->in($this->app->user->view->products)->fi()
->setAutoTpl(false)
->filterTpl('skip')
->orderBy('t1.order_asc')
->fetchAll('id');
+1 -1
View File
@@ -79,7 +79,7 @@ class pivotTao extends pivotModel
->beginIF($productID)->andWhere('t1.id')->eq($productID)->fi()
->beginIF($productStatus)->andWhere('t1.status')->eq($productStatus)->fi()
->beginIF($productType)->andWhere('t1.type')->eq($productType)->fi()
->setAutoTpl(false)
->filterTpl('skip')
->orderBy('t2.order_asc, t1.line_desc, t1.order_asc')
->fetchAll('id');
}
+2 -2
View File
@@ -90,7 +90,7 @@ class productModel extends model
->andWhere('t1.shadow')->eq(0)
->beginIF(!$this->app->user->admin)->andWhere('t1.id')->in($this->app->user->view->products)->fi()
->beginIF($this->config->vision != 'or')->andWhere("FIND_IN_SET('{$this->config->vision}', t1.vision)")->fi()
->setAutoTpl(false)
->filterTpl('skip')
->orderBy('t1.order_asc')
->fetchAll('id');
}
@@ -1654,7 +1654,7 @@ class productModel extends model
->andWhere("FIND_IN_SET('{$this->app->user->account}', t1.reviewers)")
->andWhere('t1.reviewStatus')->eq('doing')
->fi()
->setAutoTpl(false)
->filterTpl('skip')
->orderBy("{$programOrder}t1.line_desc, t1.order_asc")
->beginIF($limit > 0)->limit($limit)->fi()
->fetchAll('id');
+2 -2
View File
@@ -65,7 +65,7 @@ class productTao extends productModel
->beginIF(!$this->app->user->admin && $this->config->vision != 'lite' && $this->app->rawModule != 'repo')->andWhere('t1.id')->in($this->app->user->view->products)->fi()
->markRight(1)
->beginIF($append)->orWhere('(t1.id')->in($append)->markRight(1)->fi()
->setAutoTpl(false)
->filterTpl('skip')
->orderBy("isClosed,t2.order_asc,t1.line_desc,t1.order_asc")
->fetchPairs('id', 'name');
}
@@ -151,7 +151,7 @@ class productTao extends productModel
return $this->dao->select('t1.*')->from(TABLE_PRODUCT)->alias('t1')
->leftJoin(TABLE_PROGRAM)->alias('t2')->on('t1.program = t2.id')
->where('t1.id')->in($productIDs)
->setAutoTpl(false)
->filterTpl('skip')
->orderBy('t2.order_asc, t1.line_desc, t1.order_asc')
->page($pager)
->fetchAll('id');
+1 -1
View File
@@ -110,7 +110,7 @@ class programModel extends model
->beginIF($mode == 'assign')->andWhere('t1.program')->eq($programID)->fi()
->beginIF(strpos($status, 'noclosed') !== false)->andWhere('t1.status')->ne('closed')->fi()
->beginIF(!$this->app->user->admin)->andWhere('t1.id')->in($views)->fi()
->setAutoTpl(false)
->filterTpl('skip')
->orderBy('t2.order_asc,t1.line_desc,t1.order_asc');
if(!$withProgram) return $dao->fetchPairs('id', 'name');
+2 -2
View File
@@ -47,7 +47,7 @@ class projectModel extends model
return $this->dao->select('id, project, type, parent, path, openedBy, PO, PM, QD, RD, acl')->from(TABLE_PROJECT)
->where('acl')->in($acl)
->beginIF($type)->andWhere('type')->in($type)->fi()
->setAutoTpl(false)
->filterTpl('skip')
->fetchAll('id');
}
@@ -2297,7 +2297,7 @@ class projectModel extends model
if($this->app->getModuleName() == 'repo' || $this->app->getModuleName() == 'mr') $this->loadModel('repo')->setHideMenu($projectID);
if(!empty($project->isTpl)) dao::$filterTpl = false;
if(!empty($project->isTpl)) dao::$filterTpl = 'never';
return $projectID;
}