From c38dc3b1b4f6d264b0371bed1e34adb0928bc279 Mon Sep 17 00:00:00 2001 From: Will Rossiter Date: Sun, 6 Jun 2010 02:02:34 +0000 Subject: [PATCH] APICHANGE: moved Group::addToGroupByName to $member->addToGroupByCode. git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@106217 467b73ca-7a2a-4603-9d3b-597d59a354a9 --- security/Group.php | 23 +++++------------------ security/Member.php | 25 +++++++++++++++++++++++++ tests/security/MemberTest.php | 22 ++++++++++++++++++++++ tests/security/MemberTest.yml | 9 +++++++-- 4 files changed, 59 insertions(+), 20 deletions(-) diff --git a/security/Group.php b/security/Group.php index f32a5dbbf..48d596b34 100644 --- a/security/Group.php +++ b/security/Group.php @@ -180,25 +180,12 @@ class Group extends DataObject { } /** - * Add a member to a group. This will create the group if the given - * group code doesn't work. - * - * @param DataObject $member - * @param string $groupcode + * @deprecated 2.5 */ - static function addToGroupByName($member, $groupcode) { - $group = DataObject::get_one('Group', "\"Code\" = '" . Convert::raw2sql($groupcode). "'"); - if($group) { - $member->Groups()->add($group); - } - else { - $group = new Group(); - $group->Code = $groupcode; - $group->Title = $groupcode; - $group->write(); - - $member->Groups()->add($group); - } + public static function addToGroupByName($member, $groupcode) { + user_error('Group::addToGroupByName is deprecated. Please use $member->addToGroupByCode($groupcode)', E_USER_NOTICE); + + return $member->addToGroupByCode($groupcode); } /** diff --git a/security/Member.php b/security/Member.php index 5378ac8dd..02883a639 100755 --- a/security/Member.php +++ b/security/Member.php @@ -719,6 +719,31 @@ class Member extends DataObject { return false; } + /** + * Adds the member to a group. This will create the group if the given + * group code does not return a valid group object. + * + * @param string $groupcode + * @param string Title of the group + */ + public function addToGroupByCode($groupcode, $title = "") { + $group = DataObject::get_one('Group', "\"Code\" = '" . Convert::raw2sql($groupcode). "'"); + + if($group) { + $this->Groups()->add($group); + } + else { + if(!$title) $title = $groupcode; + + $group = new Group(); + $group->Code = $groupcode; + $group->Title = $title; + $group->write(); + + $this->Groups()->add($group); + } + } + /** * Returns true if this user is an administrator. * Administrators have access to everything. diff --git a/tests/security/MemberTest.php b/tests/security/MemberTest.php index 218f29441..12a2f7f2b 100644 --- a/tests/security/MemberTest.php +++ b/tests/security/MemberTest.php @@ -289,6 +289,28 @@ class MemberTest extends FunctionalTest { ); } + function testAddToGroupByCode() { + $grouplessMember = $this->objFromFixture('Member', 'grouplessmember'); + $memberlessGroup = $this->objFromFixture('Group','memberlessgroup'); + + $this->assertFalse($grouplessMember->Groups()->exists()); + $this->assertFalse($memberlessGroup->Members()->exists()); + + $grouplessMember->addToGroupByCode('memberless'); + + $this->assertEquals($memberlessGroup->Members()->Count(), 1); + $this->assertEquals($grouplessMember->Groups()->Count(), 1); + + $grouplessMember->addToGroupByCode('somegroupthatwouldneverexist', 'New Group'); + $this->assertEquals($grouplessMember->Groups()->Count(), 2); + + $group = DataObject::get_one('Group', "\"Code\" = 'somegroupthatwouldneverexist'"); + $this->assertNotNull($group); + $this->assertEquals($group->Code, 'somegroupthatwouldneverexist'); + $this->assertEquals($group->Title, 'New Group'); + + } + function testInGroup() { $staffmember = $this->objFromFixture('Member', 'staffmember'); $managementmember = $this->objFromFixture('Member', 'managementmember'); diff --git a/tests/security/MemberTest.yml b/tests/security/MemberTest.yml index 9b9e87aec..65ba802d7 100644 --- a/tests/security/MemberTest.yml +++ b/tests/security/MemberTest.yml @@ -20,7 +20,10 @@ Group: ceogroup: Title: ceogroup Code: ceogroup - Parent: =>Group.managementgroup + Parent: =>Group.managementgroup + memberlessgroup: + Title: Memberless Group + code: memberless Member: test: FirstName: Test @@ -51,4 +54,6 @@ Member: Groups: =>Group.accountinggroup ceomember: Email: ceomember@test.com - Groups: =>Group.ceogroup \ No newline at end of file + Groups: =>Group.ceogroup + grouplessmember: + FirstName: Groupless Member \ No newline at end of file