Wer mit TYPO3 und TemplaVoila arbeitet, dem ist es wahrscheinlich auch schonmal passiert, dass mühsame Anpassungen in dem XML der Datenstruktur nach einem erneuten Mapping wieder überschrieben wurden. Da die Datenstrukturen in der Datenbank liegen, ist eine Wiederherstellung aus einem vorhandenem Dump doch recht mühsam.
Folgendes kleines PHP-Skript legt sämtliche Datenstrukturen als einfache Textfiles im Dateisystem ab. Diese Dateien können nun auch einfach gesichert bzw. unter Versionskontrolle gestellt werden.
<?php
// DB-Verbindung hier konfigurieren
$dbname = 'typo3_db';
$dbserver = 'localhost';
$dbuser = 'abc';
$dbpass = '123';
$con = mysql_connect($dbserver, $dbuser, $dbpass);
mysql_query("set names utf8"); // wenn DB UTF-8
$res = mysql_query("SELECT title,dataprot FROM {$dbname}.tx_templavoila_datastructure");
if(!$res) {
echo "Abfrage konnte nicht ausgeführt werden: ".mysql_error()."\n";
exit;
}
while($row = mysql_fetch_array($res)) {
// Dateinamen formatieren
$file = getFilename($row['title']);
// Datenstruktur in Datei schreiben
if(writeFile($file, $row['dataprot']))
echo "DS in $file geschrieben\n";
else
echo "DS konnte nicht in $file geschrieben werden\n";
}
mysql_close($con);
function getFilename($string){
//Umlaute ersetzen
$upas = Array("ä" => "ae", "ü" => "ue", "ö" => "oe", "Ä" => "Ae", "Ü" => "Ue", "Ö" => "Oe");
$string = strtr($string, $upas);
//Sonderzeichen etc. mit $sep erstetzen
$sep = '_';
return preg_replace("/([^\w\-,+:])/e", "'\\1'==' '?'$sep':''", $string).'.ds';
}
function writeFile($file, $content) {
if (!$handle = fopen($file, "w")) return false;
if (!fwrite($handle, $content)) return false;
fclose($handle);
return true;
}
?>