Skip to content

Commit

Permalink
Moved auto activation of language to an own task
Browse files Browse the repository at this point in the history
  • Loading branch information
Herbertcuba committed Mar 26, 2012
1 parent fcc52b1 commit 4d0bb97
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 45 deletions.
60 changes: 60 additions & 0 deletions code/ActivateLanguageTask.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<?php

class ActivateLanguageTask extends BuildTask {

protected $title = 'Activate a language for all pages';
protected $description = 'Select one language to activate for all pages and dataobjects. /dev/tasks/ActivateLanguageTask.php?en=1';
protected $enabled = true;

function run($request) {
$this->ActivatLang();

DataObject::flush_and_destroy_cache();
}
function ActivateLang(){
$idArray = explode('&', $_SERVER["QUERY_STRING"]);

if (sizeof($idArray) > 1) {
foreach ($idArray as $ignore => $avPair) {
list($index, $value) = explode("=", $avPair);
$allowed_langs = array_keys(self::map_locale());
print_r($allowed_langs);
if ($value && in_array($index, $allowed_langs)) {
if ($index == Multilingual::default_lang()) {
$fieldname = "LangActive";
} else {
$fieldname = "LangActive_" . $index;
}

//fix dataobjects
$sqlquery = new SQLQuery("*", "MultilingualDataObject");
$results = $sqlquery->execute();

foreach ($results as $obj) {
if (!empty($obj["ClassName"])) {
$object = DataObject::get_by_id($obj["ClassName"], $obj["ID"]);
$object->$fieldname = true;
$object->write();
}
}


//fix pages
$sqlquery = new SQLQuery("*", "MultilingualPage");
$results = $sqlquery->execute();

foreach ($results as $obj) {
$object = DataObject::get_by_id("MultilingualPage", $obj["ID"]);
$object->$fieldname = true;
if ($object->isPublished()) {
$object->doPublish();
} else {
$object->write();
}
}
}
}
}
}

}
44 changes: 0 additions & 44 deletions code/Multilingual.php
Original file line number Diff line number Diff line change
Expand Up @@ -400,50 +400,6 @@ public function updateCMSFields(FieldSet &$f) {
*/
//$f->unshift(new DropdownField("TopLangSelectorDropdown","", Multilingual::map_to_dropdown(),Multilingual::admin_current_lang()));
}





public function requireDefaultRecords(){
$idArray = explode('&',$_SERVER["QUERY_STRING"]);
if(sizeof($idArray)>1){
foreach ($idArray as $index => $avPair){
list($ignore, $value) = explode("=", $avPair);
$id[$index] = $value;
$allowed_langs=array_values(self::map_locale());
if($value && in_array($index,$allowed_langs)){
if($index==Multilingual::default_lang()){
$fieldname="LangActive";
}else{
$fieldname="LangActive_".$index;
}
$MultilingualDataObjects=DataObject::get("MultilingualDataObject");
if($MultilingualDataObjects){
foreach($MultilingualDataObjects as $object){
$object->$fieldname=true;
$object->write();
}
}
$MultilingualPages=DataObject::get("MultilingualPage");
if($MultilingualPages){
foreach($MultilingualPages as $object){
$object->$fieldname=true;
if($object->isPublished()){
$object->doPublish();
}else{
$object->write();
}
}

}
}
}
}

}



/*
* Build up necessary html for a simple flag selector for admin
Expand Down
1 change: 1 addition & 0 deletions code/model/MultilingualDataObject.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
* Extend from this DataObject to make your dataobjects multilingual
*/
class MultilingualDataObject extends DataObject{
static $db=array();
function getRequirementsForPopup(){
$this->extend("onRequirementsForPopup");
}
Expand Down
3 changes: 3 additions & 0 deletions code/model/MultilingualPage.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ class MultilingualPage extends SiteTree {
//it translates those specific fields on the page
public static $multilingual_fields=array();

function getRequirementsForPopup(){
$this->extend("onRequirementsForPopup");
}

//fix for multilanguage, override getField from dataobject.php
public function getField($field) {
Expand Down
5 changes: 4 additions & 1 deletion code/model/MultilingualSiteConfig.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@
* An alternative is to simply copy-paste this function in to siteconfig directly
*/
class MultilingualSiteConfig extends DataObject{

function getRequirementsForPopup(){
$this->extend("onRequirementsForPopup");
}

//fix for multilanguage, override getField from dataobject.php
public function getField($field) {

Expand Down

0 comments on commit 4d0bb97

Please sign in to comment.