575 lines
13 KiB
PHP
Executable File
575 lines
13 KiB
PHP
Executable File
<?php
|
|
class groupTest
|
|
{
|
|
public function __construct()
|
|
{
|
|
global $tester;
|
|
$this->objectModel = $tester->loadModel('group');
|
|
}
|
|
|
|
/**
|
|
* Test create a group.
|
|
*
|
|
* @param array $group
|
|
* @access public
|
|
* @return object
|
|
*/
|
|
public function createObject($group)
|
|
{
|
|
$groupID = $this->objectModel->create((object)$group);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $this->objectModel->getById($groupID);
|
|
}
|
|
|
|
/**
|
|
* Update a group.
|
|
*
|
|
* @param int $groupID
|
|
* @param array $group
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function updateTest($groupID, $group)
|
|
{
|
|
$this->objectModel->update($groupID, (object)$group);
|
|
if(dao::isError()) return dao::getError();
|
|
|
|
return $this->objectModel->getByID($groupID);
|
|
}
|
|
|
|
/**
|
|
* 获取group信息,方便ztf检查
|
|
* Get group for ztf
|
|
*
|
|
* @param int $groupID
|
|
* @access private
|
|
* @return object
|
|
*/
|
|
private function getGroup($groupID)
|
|
{
|
|
$group = $this->objectModel->getByID($groupID);
|
|
|
|
$privs = $this->objectModel->getPrivs($groupID);
|
|
$privList = array();
|
|
foreach($privs as $module => $priv)
|
|
{
|
|
foreach($priv as $method => $method) $privList[] = $module . '-' . $method;
|
|
}
|
|
|
|
$users = $this->objectModel->getUserPairs($groupID);
|
|
$group->privs = implode('|', $privList);
|
|
$group->users = implode('|', array_keys($users));
|
|
|
|
return $group;
|
|
}
|
|
|
|
/**
|
|
* 获取group信息,方便ztf检查
|
|
* Get group for ztf
|
|
*
|
|
* @param int $groupID
|
|
* @access private
|
|
* @return object
|
|
*/
|
|
public function insertPrivsTest($privs)
|
|
{
|
|
$this->objectModel->insertPrivs($privs);
|
|
|
|
$privs = $this->objectModel->dao->select('*')->from(TABLE_GROUPPRIV)->fetchGroup('group');
|
|
foreach($privs as $group => $privList)
|
|
{
|
|
foreach($privList as $key => $priv) $privs[$group][$key] = $priv->module . '-' . $priv->method;
|
|
}
|
|
|
|
return $privs;
|
|
}
|
|
|
|
/**
|
|
* Copy a group.
|
|
*
|
|
* @param int $groupID
|
|
* @param array $group
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function copyTest($groupID, $group, $options = array())
|
|
{
|
|
$newGroupID = $this->objectModel->copy($groupID, (object)$group, $options);
|
|
if(dao::isError()) return dao::getError();
|
|
|
|
return $this->getGroup($newGroupID);
|
|
}
|
|
|
|
/**
|
|
* Copy privileges.
|
|
*
|
|
* @param int $fromGroupID
|
|
* @param int $toGroupID
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function copyPrivTest($fromGroupID, $toGroupID)
|
|
{
|
|
$this->objectModel->copyPriv($fromGroupID, $toGroupID);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
|
|
$fromPrivs = $this->objectModel->getPrivs($fromGroupID);
|
|
$toPrivs = $this->objectModel->getPrivs($toGroupID);
|
|
|
|
$result = true;
|
|
foreach($fromPrivs as $group => $privs)
|
|
{
|
|
foreach($privs as $key => $priv)
|
|
{
|
|
if(!isset($toPrivs[$group][$key]) or $toPrivs[$group][$key] != $fromPrivs[$group][$key])
|
|
{
|
|
$result = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Copy user.
|
|
*
|
|
* @param int $fromGroup
|
|
* @param int $toGroup
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function copyUserTest($fromGroupID, $toGroupID)
|
|
{
|
|
$this->objectModel->copyUser($fromGroupID, $toGroupID);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
|
|
$fromUsers = $this->objectModel->getUserPairs($fromGroupID);
|
|
$toUsers = $this->objectModel->getUserPairs($toGroupID);
|
|
|
|
$result = true;
|
|
foreach($fromUsers as $account => $name)
|
|
{
|
|
if(!isset($toUsers[$account]) or $toUsers[$account] != $fromUsers[$account])
|
|
{
|
|
$result = false;
|
|
break;
|
|
}
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Get group lists.
|
|
*
|
|
* @param int $projectID
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getListTest($projectID = 0)
|
|
{
|
|
$groups = $this->objectModel->getList($projectID);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
|
|
return $groups;
|
|
}
|
|
|
|
/**
|
|
* Get group pairs.
|
|
*
|
|
* @param int $projectID
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getPairsTest($projectID = 0)
|
|
{
|
|
$groups = $this->objectModel->getPairs($projectID);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
|
|
return $groups;
|
|
}
|
|
|
|
/**
|
|
* Get group by id.
|
|
*
|
|
* @param int $groupID
|
|
* @access public
|
|
* @return object
|
|
*/
|
|
public function getByIDTest($groupID)
|
|
{
|
|
$group = $this->objectModel->getByID($groupID);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
|
|
return $group;
|
|
}
|
|
|
|
/**
|
|
* Get group by account.
|
|
*
|
|
* @param string $account
|
|
* @param bool $allVision
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getByAccountTest($account, $allVision = false)
|
|
{
|
|
$groups = $this->objectModel->getByAccount($account, $allVision);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
|
|
return $groups;
|
|
}
|
|
|
|
/**
|
|
* Get the account number in the group.
|
|
*
|
|
* @param array $groupIdList
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getGroupAccountsTest($groupIdList)
|
|
{
|
|
$objects = $this->objectModel->getGroupAccounts($groupIdList);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
|
|
return $objects;
|
|
}
|
|
|
|
/**
|
|
* Get privileges of a groups.
|
|
*
|
|
* @param int $groupID
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getPrivsTest($groupID)
|
|
{
|
|
$objects = $this->objectModel->getPrivs($groupID);
|
|
$result = array();
|
|
foreach($objects as $module => $methods)
|
|
{
|
|
$result[$module] = implode('|', $methods);
|
|
}
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Get user pairs of a group.
|
|
*
|
|
* @param int $groupID
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getUserPairsTest($groupID)
|
|
{
|
|
$objects = $this->objectModel->getUserPairs($groupID);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
|
|
return $objects;
|
|
}
|
|
|
|
/**
|
|
* Get all group memebers.
|
|
*
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getAllGroupMembersTest()
|
|
{
|
|
$groupMembers = $this->objectModel->getAllGroupMembers();
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
|
|
$result = array();
|
|
foreach($groupMembers as $group => $members)
|
|
{
|
|
$result[$group] = implode('|', array_keys($members));
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Get object for manage admin group.
|
|
*
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getObjectForAdminGroupTest()
|
|
{
|
|
list($programs, $projects, $products, $executions) = $this->objectModel->getObjectForAdminGroup();
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
|
|
return array(
|
|
'programs' => implode('|', $programs),
|
|
'projects' => implode('|', $projects),
|
|
'products' => implode('|', $products),
|
|
'executions' => implode('|', $executions)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* 测试getAdmins方法。
|
|
* Test getAdmins method.
|
|
*
|
|
* @param array $idList
|
|
* @param string $field
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getAdminsTest(array $idList, string $field = 'programs'): array
|
|
{
|
|
return $this->objectModel->getAdmins($idList, $field);
|
|
}
|
|
|
|
/**
|
|
* Remove a group.
|
|
*
|
|
* @param int $groupID
|
|
* @param null $null compatible with that of model::delete()
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function removeTest($groupID)
|
|
{
|
|
$this->objectModel->remove($groupID);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Update privilege of a group.
|
|
*
|
|
* @param int $groupID
|
|
* @param string $nav
|
|
* @param string $version
|
|
* @param array $actions
|
|
* @access public
|
|
* @return bool
|
|
*/
|
|
public function updatePrivByGroupTest($groupID, $nav, $version = '', $actions = array())
|
|
{
|
|
global $app;
|
|
$app->post->set('actions', $actions);
|
|
|
|
$this->objectModel->updatePrivByGroup($groupID, $nav, $version);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
|
|
return $this->getPrivsTest($groupID);
|
|
}
|
|
|
|
/**
|
|
* Update privilege by module.
|
|
*
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function updatePrivByModuleTest($module, $groups, $actions)
|
|
{
|
|
global $app;
|
|
$app->post->set('module', $module);
|
|
$app->post->set('groups', $groups);
|
|
$app->post->set('actions', $actions);
|
|
|
|
$this->objectModel->updatePrivByModule();
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
|
|
$result = array();
|
|
foreach($groups as $group)
|
|
{
|
|
$result[$group] = $this->getPrivsTest($group);
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Update users.
|
|
*
|
|
* @param int $groupID
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function updateUserTest($groupID)
|
|
{
|
|
$this->objectModel->updateUser($groupID);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
|
|
$users = $this->objectModel->getUserPairs($groupID);
|
|
|
|
return $users;
|
|
}
|
|
|
|
/**
|
|
* Get project admins.
|
|
*
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getProjectAdminsTest()
|
|
{
|
|
$admins = $this->objectModel->getProjectAdmins();
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
|
|
return $admins;
|
|
}
|
|
|
|
/**
|
|
* Update project admins.
|
|
*
|
|
* @param int $groupID
|
|
* @param array $formData
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function updateViewTest($groupID, $formData)
|
|
{
|
|
$this->objectModel->updateView($groupID, $formData);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
$group = $this->objectModel->getByID($groupID);
|
|
$acl = $group->acl;
|
|
if(isset($acl['actions']))
|
|
{
|
|
foreach($acl['actions'] as $module => $methods)
|
|
{
|
|
$acl['actions'][$module] = implode('|', $methods);
|
|
}
|
|
}
|
|
|
|
return $acl;
|
|
}
|
|
|
|
/**
|
|
* Update project admins.
|
|
*
|
|
* @param int $groupID
|
|
* @param array $formData
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function updateProjectAdminTest($groupID, $formData)
|
|
{
|
|
$this->objectModel->updateProjectAdmin($groupID, $formData);
|
|
|
|
if(dao::isError()) return dao::getError();
|
|
return $this->getProjectAdminsTest();
|
|
}
|
|
|
|
/**
|
|
* Sort resource.
|
|
*
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function sortResourceTest()
|
|
{
|
|
$this->objectModel->sortResource();
|
|
return $this->objectModel->lang->resource;
|
|
}
|
|
|
|
/**
|
|
* Load resource lang.
|
|
*
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function loadResourceLangTest()
|
|
{
|
|
$this->objectModel->loadResourceLang();
|
|
return $this->objectModel->lang;
|
|
}
|
|
|
|
/**
|
|
* Get priv list by nav.
|
|
*
|
|
* @param string $nav
|
|
* @param string $version
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getPrivsByNavTest($nav, $version = '')
|
|
{
|
|
$privList = $this->objectModel->getPrivsByNav($nav, $version);
|
|
$privList = array_combine(array_keys($privList), array_keys($privList));
|
|
|
|
return $privList;
|
|
}
|
|
|
|
/**
|
|
* Get privs by group.
|
|
*
|
|
* @param int $groupID
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getPrivsByGroupTest($groupID)
|
|
{
|
|
$privList = $this->objectModel->getPrivsByGroup($groupID);
|
|
|
|
return $privList;
|
|
}
|
|
|
|
/**
|
|
* Get privs after version.
|
|
*
|
|
* @param string $version
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getPrivsAfterVersionTest($version = '')
|
|
{
|
|
$privList = $this->objectModel->getPrivsAfterVersion($version);
|
|
$privList = explode(',', $privList);
|
|
$privList = array_combine($privList, $privList);
|
|
|
|
return $privList;
|
|
}
|
|
|
|
/**
|
|
* Get related privs.
|
|
*
|
|
* @param array $allPrivList
|
|
* @param array $selectedPrivList
|
|
* @param array $recommendSelect
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getRelatedPrivsTest($allPrivList, $selectedPrivList, $recommendSelect)
|
|
{
|
|
$privList = $this->objectModel->getRelatedPrivs($allPrivList, $selectedPrivList, $recommendSelect);
|
|
$depend = array();
|
|
foreach($privList['depend'] as $priv)
|
|
{
|
|
$depend[$priv['id']] = $priv['id'];
|
|
}
|
|
|
|
$recommend = array();
|
|
foreach($privList['recommend'] as $priv)
|
|
{
|
|
$recommend[$priv['id']] = $priv['id'];
|
|
}
|
|
|
|
return array('depend' => $depend, 'recommend' => $recommend);
|
|
}
|
|
}
|