public function saveData($aGroupData) { if ($this->iGroupId === null) { $oGroup = new Group(); } else { $oGroup = GroupQuery::create()->findPk($this->iGroupId); } $oGroup->setName($aGroupData['name']); if ($oGroup->isNew() && count(self::$ROLES) > 0) { foreach (self::$ROLES as $sRoleKey) { $oGroupRole = new GroupRole(); $oGroupRole->setRoleKey($sRoleKey); $oGroup->addGroupRole($oGroupRole); } } else { foreach ($oGroup->getGroupRoles() as $oGroupRole) { $oGroupRole->delete(); } foreach ($aGroupData['roles'] as $sRoleKey) { $oGroupRole = new GroupRole(); $oGroupRole->setRoleKey($sRoleKey); $oGroup->addGroupRole($oGroupRole); } } return $oGroup->save(); }