+ Add unit test for program updateChildUserView.

This commit is contained in:
caoyanyi
2023-09-13 14:20:57 +08:00
parent 1d67eabaff
commit ef083da6e2
3 changed files with 37 additions and 39 deletions
-39
View File
@@ -1263,45 +1263,6 @@ class programModel extends model
->fetch('count');
}
/**
* Create stakeholder for a program.
*
* @param int $programID
* @access public
* @return void
*/
public function createStakeholder($programID = 0)
{
$data = (array)fixer::input('post')->get();
$accounts = array_unique($data['accounts']);
$oldJoin = $this->dao->select('`user`, createdDate')->from(TABLE_STAKEHOLDER)->where('objectID')->eq((int)$programID)->andWhere('objectType')->eq('program')->fetchPairs();
$this->dao->delete()->from(TABLE_STAKEHOLDER)->where('objectID')->eq((int)$programID)->andWhere('objectType')->eq('program')->exec();
foreach($accounts as $account)
{
if(empty($account)) continue;
$stakeholder = new stdclass();
$stakeholder->objectID = $programID;
$stakeholder->objectType = 'program';
$stakeholder->user = $account;
$stakeholder->createdBy = $this->app->user->account;
$stakeholder->createdDate = isset($oldJoin[$account]) ? $oldJoin[$account] : helper::today();
$this->dao->insert(TABLE_STAKEHOLDER)->data($stakeholder)->exec();
}
/* If any account changed, update his view. */
$oldAccounts = array_keys($oldJoin);
$changedAccounts = array_diff($accounts, $oldAccounts);
$changedAccounts = array_merge($changedAccounts, array_diff($oldAccounts, $accounts));
$changedAccounts = array_unique($changedAccounts);
$this->loadModel('user')->updateUserView($programID, 'program', $changedAccounts);
return $this->updateChildUserView($programID, $changedAccounts);
}
/**
* 更新项目集及子项的用户视图。
* Update user view of program and its children.