Skip to content

Instantly share code, notes, and snippets.

@KristianH
Last active August 29, 2015 14:11
Show Gist options
  • Save KristianH/4dab4f64c200f7c16ebc to your computer and use it in GitHub Desktop.
Save KristianH/4dab4f64c200f7c16ebc to your computer and use it in GitHub Desktop.
switchLanguageInOxidShop
<?php
//Use this in a oxid e-sales shop 4.7.0 or higher
//if you understand, remove or comment the next line:
die('Please read the comments!');
include('bootstrap.php');
$oConfig = oxRegistry::getConfig();
$sDatabaseName = "NameOfDataBase";
$aShowTables = oxDb::getDb()->getAll(
"show tables WHERE
Tables_in_{$sDatabaseName} NOT LIKE 'oxv\_%'
AND Tables_in_{$sDatabaseName} NOT LIKE 'tmp%'
AND Tables_in_{$sDatabaseName} NOT LIKE 'view%'
"
);
foreach ($aShowTables as $aTableInfo) {
$sTableName = $aTableInfo[0];
$aTables[] = $aTableInfo[0];
}
$oDb = oxDb::getDb(oxDb::FETCH_MODE_ASSOC);
/** @var oxDbMetaDataHandler $oDbHandler */
$oDbHandler = oxNew("oxDbMetaDataHandler");
$sSourceIdent = '_1';
$sTargetIdent = '';
$sUseIdent = '_3';
echo '<h1 style="color:red;">you should carefully check the queries for correctness (Do multilingual fields/columns really exists? is it necessary to switch language in this table?, etc.)</h1>';
foreach ($aTables as $sTable) {
$sSelect = "UPDATE $sTable SET ";
/** @var oxi18n $oBaseObject */
$oBaseObject = oxNew('oxi18n');
$oBaseObject->init($sTable, true);
$aFields = array();
$sClearUseQueries = $sUseToTargetQueries = $sTargetToUseQueries = $sSourceToTargetQueries = "";
$aFields = $oDbHandler->getMultilangFields($sTable);
foreach ($aFields as $sFieldName) {
$sTargetToUseQueries .= "{$sFieldName}{$sUseIdent} = {$sFieldName}{$sTargetIdent},";
$sSourceToTargetQueries .= "{$sFieldName}{$sTargetIdent} = {$sFieldName}{$sSourceIdent},";
$sUseToTargetQueries .= "{$sFieldName}{$sSourceIdent} = {$sFieldName}{$sUseIdent},";
$sClearUseQueries .= "{$sFieldName}{$sUseIdent} = '',";
}
$sTargetToUseQueries = trim($sTargetToUseQueries, ',');
$sSourceToTargetQueries = trim($sSourceToTargetQueries, ',');
$sUseToTargetQueries = trim($sUseToTargetQueries, ',');
$sClearUseQueries = trim($sClearUseQueries, ',');
if (false == empty($sTargetToUseQueries)) {
echo '<pre>' . $sSelect . $sTargetToUseQueries . ';' . PHP_EOL;
echo $sSelect . $sSourceToTargetQueries . ';' . PHP_EOL;
echo $sSelect . $sUseToTargetQueries . ';' . PHP_EOL;
echo $sSelect . $sClearUseQueries . ';</pre>';
}
}
$sResultQuery = <<<MYSQL
-- this use the fields _3 to backup the language in baselanguage field
UPDATE `oxactions` SET `OXTITLE_3` = `OXTITLE`,`OXLONGDESC_3` = `OXLONGDESC`,`OXPIC_3` = `OXPIC`,`OXLINK_3` = `OXLINK`;
UPDATE `oxactions` SET `OXTITLE` = `OXTITLE_1`,`OXLONGDESC` = `OXLONGDESC_1`,`OXPIC` = `OXPIC_1`,`OXLINK` = `OXLINK_1`;
UPDATE `oxactions` SET `OXTITLE_1` = `OXTITLE_3`,`OXLONGDESC_1` = `OXLONGDESC_3`,`OXPIC_1` = `OXPIC_3`,`OXLINK_1` = `OXLINK_3`;
UPDATE `oxactions` SET `OXTITLE_3` = '',`OXLONGDESC_3` = '',`OXPIC_3` = '',`OXLINK_3` = '';
UPDATE `oxartextends` SET `OXLONGDESC_3` = `OXLONGDESC`,`OXTAGS_3` = `OXTAGS`;
UPDATE `oxartextends` SET `OXLONGDESC` = `OXLONGDESC_1`,`OXTAGS` = `OXTAGS_1`;
UPDATE `oxartextends` SET `OXLONGDESC_1` = `OXLONGDESC_3`,`OXTAGS_1` = `OXTAGS_3`;
UPDATE `oxartextends` SET `OXLONGDESC_3` = '',`OXTAGS_3` = '';
UPDATE `oxarticles` SET `OXVARNAME_3` = `OXVARNAME`,`OXVARSELECT_3` = `OXVARSELECT`,`OXTITLE_3` = `OXTITLE`,`OXSHORTDESC_3` = `OXSHORTDESC`,`OXURLDESC_3` = `OXURLDESC`,`OXSEARCHKEYS_3` = `OXSEARCHKEYS`,`OXSTOCKTEXT_3` = `OXSTOCKTEXT`,`OXNOSTOCKTEXT_3` = `OXNOSTOCKTEXT`;
UPDATE `oxarticles` SET `OXVARNAME` = `OXVARNAME_1`,`OXVARSELECT` = `OXVARSELECT_1`,`OXTITLE` = `OXTITLE_1`,`OXSHORTDESC` = `OXSHORTDESC_1`,`OXURLDESC` = `OXURLDESC_1`,`OXSEARCHKEYS` = `OXSEARCHKEYS_1`,`OXSTOCKTEXT` = `OXSTOCKTEXT_1`,`OXNOSTOCKTEXT` = `OXNOSTOCKTEXT_1`;
UPDATE `oxarticles` SET `OXVARNAME_1` = `OXVARNAME_3`,`OXVARSELECT_1` = `OXVARSELECT_3`,`OXTITLE_1` = `OXTITLE_3`,`OXSHORTDESC_1` = `OXSHORTDESC_3`,`OXURLDESC_1` = `OXURLDESC_3`,`OXSEARCHKEYS_1` = `OXSEARCHKEYS_3`,`OXSTOCKTEXT_1` = `OXSTOCKTEXT_3`,`OXNOSTOCKTEXT_1` = `OXNOSTOCKTEXT_3`;
UPDATE `oxarticles` SET `OXVARNAME_3` = '',`OXVARSELECT_3` = '',`OXTITLE_3` = '',`OXSHORTDESC_3` = '',`OXURLDESC_3` = '',`OXSEARCHKEYS_3` = '',`OXSTOCKTEXT_3` = '',`OXNOSTOCKTEXT_3` = '';
UPDATE `oxattribute` SET `OXTITLE_3` = `OXTITLE`;
UPDATE `oxattribute` SET `OXTITLE` = `OXTITLE_1`;
UPDATE `oxattribute` SET `OXTITLE_1` = `OXTITLE_3`;
UPDATE `oxattribute` SET `OXTITLE_3` = '';
UPDATE `oxcategories` SET `OXTHUMB_3` = `OXTHUMB`,`OXACTIVE_3` = `OXACTIVE`,`OXTITLE_3` = `OXTITLE`,`OXDESC_3` = `OXDESC`,`OXLONGDESC_3` = `OXLONGDESC`;
UPDATE `oxcategories` SET `OXTHUMB` = `OXTHUMB_1`,`OXACTIVE` = `OXACTIVE_1`,`OXTITLE` = `OXTITLE_1`,`OXDESC` = `OXDESC_1`,`OXLONGDESC` = `OXLONGDESC_1`;
UPDATE `oxcategories` SET `OXTHUMB_1` = `OXTHUMB_3`,`OXACTIVE_1` = `OXACTIVE_3`,`OXTITLE_1` = `OXTITLE_3`,`OXDESC_1` = `OXDESC_3`,`OXLONGDESC_1` = `OXLONGDESC_3`;
UPDATE `oxcategories` SET `OXTHUMB_3` = '',`OXACTIVE_3` = '',`OXTITLE_3` = '',`OXDESC_3` = '',`OXLONGDESC_3` = '';
UPDATE `oxcontents` SET `OXACTIVE_3` = `OXACTIVE`,`OXTITLE_3` = `OXTITLE`,`OXCONTENT_3` = `OXCONTENT`;
UPDATE `oxcontents` SET `OXACTIVE` = `OXACTIVE_1`,`OXTITLE` = `OXTITLE_1`,`OXCONTENT` = `OXCONTENT_1`;
UPDATE `oxcontents` SET `OXACTIVE_1` = `OXACTIVE_3`,`OXTITLE_1` = `OXTITLE_3`,`OXCONTENT_1` = `OXCONTENT_3`;
UPDATE `oxcontents` SET `OXACTIVE_3` = '',`OXTITLE_3` = '',`OXCONTENT_3` = '';
UPDATE `oxcountry` SET `OXTITLE_3` = `OXTITLE`,`OXSHORTDESC_3` = `OXSHORTDESC`,`OXLONGDESC_3` = `OXLONGDESC`;
UPDATE `oxcountry` SET `OXTITLE` = `OXTITLE_1`,`OXSHORTDESC` = `OXSHORTDESC_1`,`OXLONGDESC` = `OXLONGDESC_1`;
UPDATE `oxcountry` SET `OXTITLE_1` = `OXTITLE_3`,`OXSHORTDESC_1` = `OXSHORTDESC_3`,`OXLONGDESC_1` = `OXLONGDESC_3`;
UPDATE `oxcountry` SET `OXTITLE_3` = '',`OXSHORTDESC_3` = '',`OXLONGDESC_3` = '';
UPDATE `oxdelivery` SET `OXTITLE_3` = `OXTITLE`;
UPDATE `oxdelivery` SET `OXTITLE` = `OXTITLE_1`;
UPDATE `oxdelivery` SET `OXTITLE_1` = `OXTITLE_3`;
UPDATE `oxdelivery` SET `OXTITLE_3` = '';
UPDATE `oxdeliveryset` SET `OXTITLE_3` = `OXTITLE`;
UPDATE `oxdeliveryset` SET `OXTITLE` = `OXTITLE_1`;
UPDATE `oxdeliveryset` SET `OXTITLE_1` = `OXTITLE_3`;
UPDATE `oxdeliveryset` SET `OXTITLE_3` = '';
UPDATE `oxdiscount` SET `OXTITLE_3` = `OXTITLE`;
UPDATE `oxdiscount` SET `OXTITLE` = `OXTITLE_1`;
UPDATE `oxdiscount` SET `OXTITLE_1` = `OXTITLE_3`;
UPDATE `oxdiscount` SET `OXTITLE_3` = '';
UPDATE `oxlinks` SET `OXURLDESC_3` = `OXURLDESC`;
UPDATE `oxlinks` SET `OXURLDESC` = `OXURLDESC_1`;
UPDATE `oxlinks` SET `OXURLDESC_1` = `OXURLDESC_3`;
UPDATE `oxlinks` SET `OXURLDESC_3` = '';
UPDATE `oxmanufacturers` SET `OXTITLE_3` = `OXTITLE`,`OXSHORTDESC_3` = `OXSHORTDESC`;
UPDATE `oxmanufacturers` SET `OXTITLE` = `OXTITLE_1`,`OXSHORTDESC` = `OXSHORTDESC_1`;
UPDATE `oxmanufacturers` SET `OXTITLE_1` = `OXTITLE_3`,`OXSHORTDESC_1` = `OXSHORTDESC_3`;
UPDATE `oxmanufacturers` SET `OXTITLE_3` = '',`OXSHORTDESC_3` = '';
UPDATE `oxnews` SET `OXACTIVE_3` = `OXACTIVE`,`OXSHORTDESC_3` = `OXSHORTDESC`,`OXLONGDESC_3` = `OXLONGDESC`;
UPDATE `oxnews` SET `OXACTIVE` = `OXACTIVE_1`,`OXSHORTDESC` = `OXSHORTDESC_1`,`OXLONGDESC` = `OXLONGDESC_1`;
UPDATE `oxnews` SET `OXACTIVE_1` = `OXACTIVE_3`,`OXSHORTDESC_1` = `OXSHORTDESC_3`,`OXLONGDESC_1` = `OXLONGDESC_3`;
UPDATE `oxnews` SET `OXACTIVE_3` = '',`OXSHORTDESC_3` = '',`OXLONGDESC_3` = '';
UPDATE `oxobject2attribute` SET `OXVALUE_3` = `OXVALUE`;
UPDATE `oxobject2attribute` SET `OXVALUE` = `OXVALUE_1`;
UPDATE `oxobject2attribute` SET `OXVALUE_1` = `OXVALUE_3`;
UPDATE `oxobject2attribute` SET `OXVALUE_3` = '';
UPDATE `oxpayments` SET `OXDESC_3` = `OXDESC`,`OXVALDESC_3` = `OXVALDESC`,`OXLONGDESC_3` = `OXLONGDESC`;
UPDATE `oxpayments` SET `OXDESC` = `OXDESC_1`,`OXVALDESC` = `OXVALDESC_1`,`OXLONGDESC` = `OXLONGDESC_1`;
UPDATE `oxpayments` SET `OXDESC_1` = `OXDESC_3`,`OXVALDESC_1` = `OXVALDESC_3`,`OXLONGDESC_1` = `OXLONGDESC_3`;
UPDATE `oxpayments` SET `OXDESC_3` = '',`OXVALDESC_3` = '',`OXLONGDESC_3` = '';
UPDATE `oxselectlist` SET `OXTITLE_3` = `OXTITLE`,`OXVALDESC_3` = `OXVALDESC`;
UPDATE `oxselectlist` SET `OXTITLE` = `OXTITLE_1`,`OXVALDESC` = `OXVALDESC_1`;
UPDATE `oxselectlist` SET `OXTITLE_1` = `OXTITLE_3`,`OXVALDESC_1` = `OXVALDESC_3`;
UPDATE `oxselectlist` SET `OXTITLE_3` = '',`OXVALDESC_3` = '';
UPDATE `oxshops` SET `OXTITLEPREFIX_3` = `OXTITLEPREFIX`,`OXTITLESUFFIX_3` = `OXTITLESUFFIX`,`OXSTARTTITLE_3` = `OXSTARTTITLE`,`OXORDERSUBJECT_3` = `OXORDERSUBJECT`,`OXREGISTERSUBJECT_3` = `OXREGISTERSUBJECT`,`OXFORGOTPWDSUBJECT_3` = `OXFORGOTPWDSUBJECT`,`OXSENDEDNOWSUBJECT_3` = `OXSENDEDNOWSUBJECT`,`OXSEOACTIVE_3` = `OXSEOACTIVE`,`EBINVOICEMAILSUBJECT_3` = `EBINVOICEMAILSUBJECT`;
UPDATE `oxshops` SET `OXTITLEPREFIX` = `OXTITLEPREFIX_1`,`OXTITLESUFFIX` = `OXTITLESUFFIX_1`,`OXSTARTTITLE` = `OXSTARTTITLE_1`,`OXORDERSUBJECT` = `OXORDERSUBJECT_1`,`OXREGISTERSUBJECT` = `OXREGISTERSUBJECT_1`,`OXFORGOTPWDSUBJECT` = `OXFORGOTPWDSUBJECT_1`,`OXSENDEDNOWSUBJECT` = `OXSENDEDNOWSUBJECT_1`,`OXSEOACTIVE` = `OXSEOACTIVE_1`,`EBINVOICEMAILSUBJECT` = `EBINVOICEMAILSUBJECT_1`;
UPDATE `oxshops` SET `OXTITLEPREFIX_1` = `OXTITLEPREFIX_3`,`OXTITLESUFFIX_1` = `OXTITLESUFFIX_3`,`OXSTARTTITLE_1` = `OXSTARTTITLE_3`,`OXORDERSUBJECT_1` = `OXORDERSUBJECT_3`,`OXREGISTERSUBJECT_1` = `OXREGISTERSUBJECT_3`,`OXFORGOTPWDSUBJECT_1` = `OXFORGOTPWDSUBJECT_3`,`OXSENDEDNOWSUBJECT_1` = `OXSENDEDNOWSUBJECT_3`,`OXSEOACTIVE_1` = `OXSEOACTIVE_3`,`EBINVOICEMAILSUBJECT_1` = `EBINVOICEMAILSUBJECT_3`;
UPDATE `oxshops` SET `OXTITLEPREFIX_3` = '',`OXTITLESUFFIX_3` = '',`OXSTARTTITLE_3` = '',`OXORDERSUBJECT_3` = '',`OXREGISTERSUBJECT_3` = '',`OXFORGOTPWDSUBJECT_3` = '',`OXSENDEDNOWSUBJECT_3` = '',`OXSEOACTIVE_3` = '',`EBINVOICEMAILSUBJECT_3` = '';
UPDATE `oxstates` SET `OXTITLE_3` = `OXTITLE`;
UPDATE `oxstates` SET `OXTITLE` = `OXTITLE_1`;
UPDATE `oxstates` SET `OXTITLE_1` = `OXTITLE_3`;
UPDATE `oxstates` SET `OXTITLE_3` = '';
UPDATE `oxvendor` SET `OXTITLE_3` = `OXTITLE`,`OXSHORTDESC_3` = `OXSHORTDESC`;
UPDATE `oxvendor` SET `OXTITLE` = `OXTITLE_1`,`OXSHORTDESC` = `OXSHORTDESC_1`;
UPDATE `oxvendor` SET `OXTITLE_1` = `OXTITLE_3`,`OXSHORTDESC_1` = `OXSHORTDESC_3`;
UPDATE `oxvendor` SET `OXTITLE_3` = '',`OXSHORTDESC_3` = '';
UPDATE `oxwrapping` SET `OXACTIVE_3` = `OXACTIVE`,`OXNAME_3` = `OXNAME`;
UPDATE `oxwrapping` SET `OXACTIVE` = `OXACTIVE_1`,`OXNAME` = `OXNAME_1`;
UPDATE `oxwrapping` SET `OXACTIVE_1` = `OXACTIVE_3`,`OXNAME_1` = `OXNAME_3`;
UPDATE `oxwrapping` SET `OXACTIVE_3` = '',`OXNAME_3` = '';
-- oxlang fields
UPDATE `oxseo` SET `oxlang` = 66 WHERE `oxlang` = 1;
UPDATE `oxseo` SET `oxlang` = 1 WHERE `oxlang` = 0;
UPDATE `oxseo` SET `oxlang` = 0 WHERE `oxlang` = 66;
UPDATE `oxseohistory` SET `oxlang` = 66 WHERE `oxlang` = 1;
UPDATE `oxseohistory` SET `oxlang` = 1 WHERE `oxlang` = 0;
UPDATE `oxseohistory` SET `oxlang` = 0 WHERE `oxlang` = 66;
UPDATE `oxseologs` SET `oxlang` = 66 WHERE `oxlang` = 1;
UPDATE `oxseologs` SET `oxlang` = 1 WHERE `oxlang` = 0;
UPDATE `oxseologs` SET `oxlang` = 0 WHERE `oxlang` = 66;
UPDATE `oxobject2seodata` SET `oxlang` = 66 WHERE `oxlang` = 1;
UPDATE `oxobject2seodata` SET `oxlang` = 1 WHERE `oxlang` = 0;
UPDATE `oxobject2seodata` SET `oxlang` = 0 WHERE `oxlang` = 66;
UPDATE `oxpricealarm` SET `oxlang` = 66 WHERE `oxlang` = 1;
UPDATE `oxpricealarm` SET `oxlang` = 1 WHERE `oxlang` = 0;
UPDATE `oxpricealarm` SET `oxlang` = 0 WHERE `oxlang` = 66;
UPDATE `oxorder` SET `oxlang` = 66 WHERE `oxlang` = 1;
UPDATE `oxorder` SET `oxlang` = 1 WHERE `oxlang` = 0;
UPDATE `oxorder` SET `oxlang` = 0 WHERE `oxlang` = 66;
UPDATE `oxreviews` SET `oxlang` = 66 WHERE `oxlang` = 1;
UPDATE `oxreviews` SET `oxlang` = 1 WHERE `oxlang` = 0;
UPDATE `oxreviews` SET `oxlang` = 0 WHERE `oxlang` = 66;
-- Result of array @Line 191 $aLanguageParams
REPLACE INTO `oxconfig` (`OXID`, `OXSHOPID`, `OXMODULE`, `OXVARNAME`, `OXVARTYPE`, `OXVARVALUE`, `OXTIMESTAMP`)
VALUES ("dca904005576b6ae26510ff7ff662857","oxbaseshop","","aLanguageParams","arr",0x4DBA852E754D5687A270D8DE32768E946FF20EB0E9BA84D87A3A5CE53F6AAC698CFD6E62A9AE35B23391CCD7FD899D8F7665F515E7B011C899ABEE29F257B190918E3EABF72DCE42C5F97E2179C07C216036F2B98F9F7AEDCDB1AFD92B4634819596A75ACDF7F8AB876C9F3086624EF9DAA2A9E3D75D047E6B0E2A48C2B20358F49C3A5203F4FB2646D31AA8709E9262455A1A3372B9C908D49E2F6008804B67CC42E120667245B077B91E9C284E6E61C443F40349E1CB8C10FAD26631E57C344A7F6D8F808D0F3800B0AEABFB1C8EDB036CA1984B96CAE92C1429D95947D2F7E0AFF32F15A2B335B394FFE3C29762BAE7C9B4FD69EFEA50EE23048DC910E75368A11828526885670C9AD51469F58061DB,"2014-12-19 15:15:12"),
("b96e6c4a3311fce4d74998f9af2324df","oxbaseshop","","sDefaultLang","str",0xDE,"2014-12-19 15:15:12");
em
MYSQL;
$aLanguageParams = array(
'de' => array(
'baseId' => 0,
'active' => 1,
'sort' => '10',
'default' => '1',
),
'en' => array(
'baseId' => 1,
'active' => 0,
'sort' => '1',
'default' => false,
),
'fr' => array(
'baseId' => 2,
'active' => '1',
'default' => false,
'sort' => '3',
),
);
//$oConfig->saveShopConfVar( 'arr', 'aLanguageParams', $aLanguageParams );
//$oConfig->saveShopConfVar( 'str', 'sDefaultLang', 0 );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment