public function processRecord($record, $columnMap, &$results, $preview = false) { $objID = parent::processRecord($record, $columnMap, $results, $preview); $_cache_groupByCode = array(); // Add to predefined groups /** @var Member $member */ $member = DataObject::get_by_id($this->objectClass, $objID); foreach ($this->groups as $group) { // TODO This isnt the most memory effective way to add members to a group $member->Groups()->add($group); } // Add to groups defined in CSV if (isset($record['Groups']) && $record['Groups']) { $groupCodes = explode(',', $record['Groups']); foreach ($groupCodes as $groupCode) { $groupCode = Convert::raw2url($groupCode); if (!isset($_cache_groupByCode[$groupCode])) { $group = Group::get()->filter('Code', $groupCode)->first(); if (!$group) { $group = new Group(); $group->Code = $groupCode; $group->Title = $groupCode; $group->write(); } $member->Groups()->add($group); $_cache_groupByCode[$groupCode] = $group; } } } $member->destroy(); unset($member); return $objID; }
public function testCollateAncestorIDs() { $parentGroup = $this->objFromFixture('SilverStripe\\Security\\Group', 'parentgroup'); $childGroup = $this->objFromFixture('SilverStripe\\Security\\Group', 'childgroup'); $orphanGroup = new Group(); $orphanGroup->ParentID = 99999; $orphanGroup->write(); $this->assertEquals(1, count($parentGroup->collateAncestorIDs()), 'Root node only contains itself'); $this->assertContains($parentGroup->ID, $parentGroup->collateAncestorIDs()); $this->assertEquals(2, count($childGroup->collateAncestorIDs()), 'Contains parent nodes, with child node first'); $this->assertContains($parentGroup->ID, $childGroup->collateAncestorIDs()); $this->assertContains($childGroup->ID, $childGroup->collateAncestorIDs()); $this->assertEquals(1, count($orphanGroup->collateAncestorIDs()), 'Orphaned nodes dont contain invalid parent IDs'); $this->assertContains($orphanGroup->ID, $orphanGroup->collateAncestorIDs()); }
public function testOverwriteExistingImport() { $existinggroup = new Group(); $existinggroup->Title = 'Old Group Title'; $existinggroup->Code = 'newgroup1'; $existinggroup->write(); $loader = new GroupCsvBulkLoader(); $results = $loader->load($this->getCurrentRelativePath() . '/GroupCsvBulkLoaderTest.csv'); $created = $results->Created()->toArray(); $this->assertEquals(count($created), 1); $this->assertEquals($created[0]->Code, 'newchildgroup1'); $updated = $results->Updated()->toArray(); $this->assertEquals(count($updated), 1); $this->assertEquals($updated[0]->Code, 'newgroup1'); $this->assertEquals($updated[0]->Title, 'New Group 1'); }
/** * 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 Title of the group */ public function addToGroupByCode($groupcode, $title = "") { $group = DataObject::get_one('SilverStripe\\Security\\Group', array('"Group"."Code"' => $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); } }
/** * Test Member_GroupSet::add */ public function testOnChangeGroupsBySetIDList() { $staffMember = $this->objFromFixture('SilverStripe\\Security\\Member', 'staffmember'); // Setup new admin group $newAdminGroup = new Group(array('Title' => 'newadmin')); $newAdminGroup->write(); Permission::grant($newAdminGroup->ID, 'ADMIN'); // Test staff member can't be added to admin groups $this->assertFalse($staffMember->inGroup($newAdminGroup)); $staffMember->Groups()->setByIDList(array($newAdminGroup->ID)); $this->assertFalse($staffMember->inGroup($newAdminGroup), 'Adding new admin group relation is not allowed for non-admin members'); }
/** * Add default records to database. * * This function is called whenever the database is built, after the * database tables have all been created. */ public function requireDefaultRecords() { parent::requireDefaultRecords(); // Add default author group if no other group exists $allGroups = DataObject::get('SilverStripe\\Security\\Group'); if (!$allGroups->count()) { $authorGroup = new Group(); $authorGroup->Code = 'content-authors'; $authorGroup->Title = _t('Group.DefaultGroupTitleContentAuthors', 'Content Authors'); $authorGroup->Sort = 1; $authorGroup->write(); Permission::grant($authorGroup->ID, 'CMS_ACCESS_CMSMain'); Permission::grant($authorGroup->ID, 'CMS_ACCESS_AssetAdmin'); Permission::grant($authorGroup->ID, 'CMS_ACCESS_ReportAdmin'); Permission::grant($authorGroup->ID, 'SITETREE_REORGANISE'); } // Add default admin group if none with permission code ADMIN exists $adminGroups = Permission::get_groups_by_permission('ADMIN'); if (!$adminGroups->count()) { $adminGroup = new Group(); $adminGroup->Code = 'administrators'; $adminGroup->Title = _t('Group.DefaultGroupTitleAdministrators', 'Administrators'); $adminGroup->Sort = 0; $adminGroup->write(); Permission::grant($adminGroup->ID, 'ADMIN'); } // Members are populated through Member->requireDefaultRecords() }