Move logic of PR #2496 to GroupModel
This commit is contained in:
@@ -147,13 +147,7 @@ class ProjectPermissionController extends BaseController
|
|||||||
$values = $this->request->getValues();
|
$values = $this->request->getValues();
|
||||||
|
|
||||||
if (empty($values['group_id']) && ! empty($values['external_id'])) {
|
if (empty($values['group_id']) && ! empty($values['external_id'])) {
|
||||||
$group = $this->groupModel->getByExternalId($values['external_id']);
|
$values['group_id'] = $this->groupModel->getOrCreateExternalGroupId($values['name'], $values['external_id']);
|
||||||
if ($group) {
|
|
||||||
$values['group_id'] = $group['id'];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$values['group_id'] = $this->groupModel->create($values['name'], $values['external_id']);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->projectGroupRoleModel->addGroup($project['id'], $values['group_id'], $values['role'])) {
|
if ($this->projectGroupRoleModel->addGroup($project['id'], $values['group_id'], $values['role'])) {
|
||||||
|
|||||||
@@ -116,4 +116,23 @@ class GroupModel extends Base
|
|||||||
{
|
{
|
||||||
return $this->db->table(self::TABLE)->eq('id', $values['id'])->update($values);
|
return $this->db->table(self::TABLE)->eq('id', $values['id'])->update($values);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get groupId from externalGroupId and create the group if not found
|
||||||
|
*
|
||||||
|
* @access public
|
||||||
|
* @param string $name
|
||||||
|
* @param string $external_id
|
||||||
|
* @return bool|integer
|
||||||
|
*/
|
||||||
|
public function getOrCreateExternalGroupId($name, $external_id)
|
||||||
|
{
|
||||||
|
$group_id = $this->db->table(self::TABLE)->eq('external_id', $external_id)->findOneColumn('id');
|
||||||
|
|
||||||
|
if (empty($group_id)) {
|
||||||
|
$group_id = $this->create($name, $external_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $group_id;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ require_once __DIR__.'/../Base.php';
|
|||||||
|
|
||||||
use Kanboard\Model\GroupModel;
|
use Kanboard\Model\GroupModel;
|
||||||
|
|
||||||
class GroupTest extends Base
|
class GroupModelTest extends Base
|
||||||
{
|
{
|
||||||
public function testCreation()
|
public function testCreation()
|
||||||
{
|
{
|
||||||
@@ -57,4 +57,13 @@ class GroupTest extends Base
|
|||||||
$this->assertTrue($groupModel->remove(1));
|
$this->assertTrue($groupModel->remove(1));
|
||||||
$this->assertEmpty($groupModel->getById(1));
|
$this->assertEmpty($groupModel->getById(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testGetOrCreateExternalGroupId()
|
||||||
|
{
|
||||||
|
$groupModel = new GroupModel($this->container);
|
||||||
|
$this->assertEquals(1, $groupModel->create('Group 1', 'ExternalId1'));
|
||||||
|
$this->assertEquals(1, $groupModel->getOrCreateExternalGroupId('Group 1', 'ExternalId1'));
|
||||||
|
$this->assertEquals(1, $groupModel->getOrCreateExternalGroupId('Group 2', 'ExternalId1'));
|
||||||
|
$this->assertEquals(2, $groupModel->getOrCreateExternalGroupId('Group 2', 'ExternalId2'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user