Skip to content

Commit

Permalink
MINOR Merged from trunk
Browse files Browse the repository at this point in the history
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.3@79195 467b73ca-7a2a-4603-9d3b-597d59a354a9
  • Loading branch information
chillu authored and Sam Minnee committed Feb 2, 2011
1 parent 9c7334d commit 641c565
Showing 1 changed file with 23 additions and 9 deletions.
32 changes: 23 additions & 9 deletions core/model/Translatable.php
Expand Up @@ -524,7 +524,9 @@ function requireDefaultRecords() {
'SELECT `ID` FROM `%s` WHERE `Locale` IS NULL OR `Locale` = \'\'',
ClassInfo::baseDataClass($this->owner->class)
))->column();
if($idsWithoutLocale) {
if(!$idsWithoutLocale) return;

if($this->owner->class == 'SiteTree') {
foreach(array('Stage', 'Live') as $stage) {
foreach($idsWithoutLocale as $id) {
$obj = Versioned::get_one_by_stage(
Expand All @@ -533,20 +535,31 @@ function requireDefaultRecords() {
sprintf('`SiteTree`.`ID` = %d', $id)
);
if(!$obj) continue;

$obj->Locale = Translatable::default_locale();
$obj->writeToStage($stage);
$obj->addTranslationGroup($obj->ID);
$obj->destroy();
unset($obj);
}
Database::alteration_message(sprintf(
"Added default locale '%s' to table %s","changed",
Translatable::default_locale(),
$this->owner->class
));
}
} else {
foreach($idsWithoutLocale as $id) {
$obj = DataObject::get_by_id($this->owner->class, $id);
if(!$obj) continue;

$obj->Locale = Translatable::default_locale();
$obj->write();
$obj->addTranslationGroup($obj->ID);
$obj->destroy();
unset($obj);
}
}
Database::alteration_message(sprintf(
"Added default locale '%s' to table %s","changed",
Translatable::default_locale(),
$this->owner->class
));
}

/**
Expand Down Expand Up @@ -657,8 +670,9 @@ function onBeforeWrite() {
// If language is not set explicitly, set it to current_locale.
// This might be a bit overzealous in assuming the language
// of the content, as a "single language" website might be expanded
// later on.
if(!$this->owner->ID && !$this->owner->Locale) {
// later on. See {@link requireDefaultRecords()} for batch setting
// of empty Locale columns on each dev/build call.
if(!$this->owner->Locale) {
$this->owner->Locale = Translatable::get_current_locale();
}

Expand Down

0 comments on commit 641c565

Please sign in to comment.