mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
BUGFIX Less fragile 'newness' check on Group->Code in Group->onBeforeWrite() (fixes #6595)
This commit is contained in:
parent
d02c3cbdba
commit
d5efacbf56
@ -331,8 +331,11 @@ class Group extends DataObject {
|
||||
function onBeforeWrite() {
|
||||
parent::onBeforeWrite();
|
||||
|
||||
if(stripos($this->Code, _t('SecurityAdmin.NEWGROUPPREFIX','new-')) === 0) {
|
||||
$this->setCode($this->Title);
|
||||
// Only set code property when the group has a custom title, and no code exists.
|
||||
// The "Code" attribute is usually treated as a more permanent identifier than database IDs
|
||||
// in custom application logic, so can't be changed after its first set.
|
||||
if(!$this->Code && $this->Title != _t('SecurityAdmin.NEWGROUP',"New Group")) {
|
||||
if(!$this->Code) $this->setCode($this->Title);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4,8 +4,27 @@
|
||||
* @subpackage tests
|
||||
*/
|
||||
class GroupTest extends FunctionalTest {
|
||||
|
||||
static $fixture_file = 'GroupTest.yml';
|
||||
|
||||
function testGroupCodeDefaultsToTitle() {
|
||||
$g1 = new Group();
|
||||
$g1->Title = "My Title";
|
||||
$g1->write();
|
||||
$this->assertEquals('my-title', $g1->Code, 'Custom title gets converted to code if none exists already');
|
||||
|
||||
$g2 = new Group();
|
||||
$g2->Title = "My Title";
|
||||
$g2->Code = "my-code";
|
||||
$g2->write();
|
||||
$this->assertEquals('my-code', $g2->Code, 'Custom attributes are not overwritten by Title field');
|
||||
|
||||
$g3 = new Group();
|
||||
$g3->Title = _t('SecurityAdmin.NEWGROUP',"New Group");
|
||||
$g3->write();
|
||||
$this->assertNull($g3->Code, 'Default title doesnt trigger attribute setting');
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the Group::map() function
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user