Script als .php Datei abspeichern und in einem Ordner über dem Contenido-Verzeichnis abspeichern. Vor dem Starten des Scriptes im Broeser noch die idclient des zu kopierenden Mandanten ($old_idclient) und die des Mandanten, auf den kopiert werden soll ($new_idclient) eintragen.
Code: Alles auswählen
<?
/* Script um Kunden zu kopieren
* Für Contenido 4.4.2 (Für andere Versionen nicht getestet)
* Autor: Axel Womatschka
* Datum: 21.01.2004
* Dieses Script kopiert die Module, Layouts, Templates, Container und auf Wunsch auch Kategorien
* von einem Kunden (Mandanten) ($old_idclient) auf den anderen ($new_idclient)
* Beide müssen bereits existieren.
*/
/* In der config.php stehen die Basisvariablen von Contenido. In der config.php
* werden zudem via Include noch folgende Dateien geladen
* cfg_sql.inc.php (Hier stehen die Tabellennamen)
* prepend.php3 (Hier werden weitere Dateien via require geladen, die das Sessions-Managment der MySQL-DB regeln
* unter anderem auch die my_sql.inc)
*
*/
include "../contenido/includes/config.php"; /* Die braucht man immer */
/* MACHE DEINE INDIVIDUELLEN ANGABEN HIER*******************************************************/
/* Neuer Kunde auf den kopiert werden soll. Dieser muss vorher angelegt werden*/
$new_idclient=4;
/* Kunde, der kopiert werden soll */
$old_idclient=1;
/*Auch die Kategorien (Menübaum) mit kopieren? */
$CopyKategorien=1; /* 0=Nein, 1=Ja */
/***********************************************************************************************/
/* Instanz der Klasse DB_Sql (die ist in der Datei my_sql.inc zu finden)*/
$db1 = new DB_Sql();
$db1->Host = $contenido_host;
$db1->Database = $contenido_database;
$db1->User = $contenido_user;
$db1->Password = $contenido_password;
$db2 = new DB_Sql();
$db2->Host = $contenido_host;
$db2->Database = $contenido_database;
$db2->User = $contenido_user;
$db2->Password = $contenido_password;
$new_client_Name="";
$old_client_Name="";
/* Für die Layouts */
$ArrIdxAltLayout=array();
$ArrIdxNeuLayout=array();
/* Für die Module */
$ArrIdxAltModul=array();
$ArrIdxNeuModul=array();
/* Für die Templates */
$ArrIdxAltTpl=array();
$ArrIdxNeuTpl=array();
$ArrIdxAltTplConf=array();
$ArrIdxNeuTplConf=array();
/* Für die Kategorien */
$ArrIdxAltKat=array();
$ArrIdxNeuKat=array();
/* Ermittel Kundennamen und prüfe die Gültigkeit der idclient-Nummern */
$sql = "SELECT idclient, name from ".$cfg["tab"]["clients"]." where (idclient=".$old_idclient." OR idclient=".$new_idclient.")";
$db1->query($sql); /* liefert Zeiger auf Ergebnisliste (Result Set)*/
while ($db1->next_record())
{
if ($db1->Record[0]==$new_idclient) $new_client_Name=trim($db1->Record[1]);
if ($db1->Record[0]==$old_idclient) $old_client_Name=trim($db1->Record[1]);
}
if ($old_client_Name=="" OR $new_client_Name=="")
{
/* Irgendwas stimmt nicht. vermutlich sind die verwendeten idclient-Nummern falsch */
$Meldung="Zu den verwendeten Mandantennummern (idclient) ".$old_idclient." und ".$new_idclient." gibt es keinen Mandanten-Namen. Überprüfen Sie die Mandanten-Nummern (idclient) in Ihrem Script. Die Ausführung wird abgebrochen.";
echo "<hr><h3><font face='Arial' color='#ff0000'>Fehler: <BR>".$Meldung."</font></h3><hr>";
die($Meldung); /* Scriptausführung abbrechen */
}
/* Alles OK....leg los */
echo "<hr><h1><font face='Arial' color='#ff0000'>Kopiere den Mandanten >".$old_client_Name."< (idclient ".$old_idclient.") auf den Mandanten >".$new_client_Name."< (idclient ".$new_idclient."):</font></h1><hr>";
/*****************************************************************************************/
/*Module KOPIEREN*/
/* ermittel alle Module des zu kopierenden Kunden */
$sql = "SELECT * from ".$cfg["tab"]["mod"]." where idclient=".$old_idclient;
$db1->query($sql); /* liefert Zeiger auf Ergebnisliste (Result Set)*/
/* In der Tabelle con_sequence stehen die Werte der Indizes der Primärschlüssel !
Lese daher erst hier den aktuelen Index-Wert für die Tabelle con_mod aus */
$MyModSeq=0;
$sql="Select nextid as MyNextID from ".$cfg["tab"]["sequence"]." where seq_name = '".$cfg["tab"]["mod"]."'";
$db2->query($sql);
if ($db2->next_record())
{
$MyModSeq=$db2->Record[0];
$MyModSeq++; /* erhöhe um 1 */
}
$sql="";
$lauf=0;
/* $db1->next_record() liefert Zeiger auf nächsten Datensatz, der noch nicht
ausgelesen wurde und gibt ein Array in der Eigenschaft Record zurück */
echo "<hr><h2><font face='Arial' color='#ff0000'>Kopiere die folgenden Module:</font></h2>";
while($db1->next_record())
{
echo "<font face='Arial' color='#000000'>".$db1->Record[2]."</font><BR>"; /* Index 2 des Arrays. Entspricht dem Inhalt der 2.ten Datenspalte der Tabelle con_mod..das ist der Modulname */
$lauf++;
$sql = "INSERT INTO ".$cfg["tab"]["mod"]." VALUES ('".$MyModSeq."','".$new_idclient."'";
$db1->Record[4]="YES"; /* Spalte deletable der Tabelle con_mod */
/*Merke im Array $ArrIdxAltModule[] den Index (idmod) der Module des alten Mandanten */
$ArrIdxAltModule[]=$db1->Record[0];
/*Merke im Array $ArrIdxNeuModule[] den Index (idmod) der Module des neuen Mandanten */
$ArrIdxNeuModule[]=$MyModSeq;
/*Das Merken im Array ist nötig um später noch zu wissen welcher alte idmod welchem neuen idmod entspricht*/
for ($i=2;$i<$db1->num_fields();$i++)
{
$sql = $sql .",";
$cont = $db1->Record[$i];
$cont = str_replace('\\','\\\\',$cont);
$cont = str_replace('"','\"',$cont);
$sql = $sql ."\"".$cont."\"";
}
$sql = $sql .")";
$db2->query($sql);
/* erhöhe um eins um den neuen maximalen Index-Wert zu merken, der wieder in die Tabelle con_Sequence geschrieben werden muss */
$MyModSeq++; /* erhöhe um 1 */
}
/* schreibe nun den letzten wert von $MyModSeq bei con_mod in die Tabelle con_sequence */
$MyModSeq=$MyModSeq-1;
$sql="Update ".$cfg["tab"]["sequence"]." set nextid=".$MyModSeq." where seq_name = '".$cfg["tab"]["mod"]."'";
$db2->query($sql);
echo "<h3><font face='Arial' color='#ff0000'>Es wurden ".$lauf." Module vom Mandanten ".$old_idclient." auf den Mandanten ".$new_idclient." kopiert. Der Eintrag für ".$cfg["tab"]["mod"]." wurde in der Tabelle ".$cfg["tab"]["sequence"]." korrigiert.</font></h3>";
echo "<hr>";
/*****************************************************************************************/
/*LAYOUTS KOPIEREN*/
/* ermittel alle Layouts des zu kopierenden Kunden */
$sql = "SELECT * from ".$cfg["tab"]["lay"]." where idclient=".$old_idclient;
$db1->query($sql); /* liefert Zeiger auf Ergebnisliste (Result Set)*/
/* In der Tabelle con_sequence stehen die Werte der Indizes der Primärschlüssel !
Lese daher erst hier den aktuelen Index-Wert für die Tabelle con_mod aus */
$MyLaySeq=0;
$sql="Select nextid as MyNextID from ".$cfg["tab"]["sequence"]." where seq_name = '".$cfg["tab"]["lay"]."'";
$db2->query($sql);
if ($db2->next_record())
{
$MyLaySeq=$db2->Record[0];
$MyLaySeq++; /* erhöhe um 1 */
}
$sql="";
$lauf=0;
echo "<hr><h2><font face='Arial' color='#ff0000'>Kopiere die folgenden Layouts:</font></h2>";
while($db1->next_record())
{
echo "<font face='Arial' color='#000000'>".$db1->Record[2]."</font><BR>"; /* Index 2 des Arrays. Entspricht dem Inhalt der 2.ten Datenspalte der Tabelle con_lay..das ist der Layoutname */
$lauf++;
$sql = "INSERT INTO ".$cfg["tab"]["lay"]." VALUES ('".$MyLaySeq."','".$new_idclient."'";
$db1->Record[4]="YES"; /* Spalte deletable der Tabelle con_lay */
/*Merke im Array $ArrIdxAltLayout[] den Index (idlay) der Layouts des alten Mandanten */
$ArrIdxAltLayout[]=$db1->Record[0];
/*Merke im Array $ArrIdxNeuLayout[] den Index (idlay) der Layouts des neuen Mandanten */
$ArrIdxNeuLayout[]=$MyLaySeq;
/*Das Merken im Array ist nötig um später noch zu wissen welcher alte idlay welchem neuen idlay entspricht*/
for ($i=2;$i<$db1->num_fields();$i++)
{
$sql = $sql .",";
$cont = $db1->Record[$i];
$cont = str_replace('\\','\\\\',$cont);
$cont = str_replace('"','\"',$cont);
$sql = $sql ."\"".$cont."\"";
}
$sql = $sql .")";
$db2->query($sql);
/* erhöhe um eins um den neuen maximalen Index-Wert zu merken, der wieder in die Tabelle con_Sequence geschrieben werden muss */
$MyLaySeq++; /* erhöhe um 1 */
}
/* schreibe nun den letzten wert von $MyLaySeq bei con_lay in die Tabelle con_sequence */
$MyLaySeq=$MyLaySeq-1;
$sql="Update ".$cfg["tab"]["sequence"]." set nextid=".$MyLaySeq." where seq_name = '".$cfg["tab"]["lay"]."'";
$db2->query($sql);
echo "<h3><font face='Arial' color='#ff0000'>Es wurden ".$lauf." Layouts vom Mandanten ".$old_idclient." auf den Mandanten ".$new_idclient." kopiert. Der Eintrag für ".$cfg["tab"]["lay"]." wurde in der Tabelle ".$cfg["tab"]["sequence"]." korrigiert.</font></h3>";
echo "<hr>";
/*****************************************************************************************/
/*TEMPLATES KOPIEREN*/
/* In der Tabelle con_sequence stehen die Werte der Indizes der Primärschlüssel !
Lese daher erst hier den aktuelen Index-Wert für die Tabelle con_template aus */
$MyTplSeq=1;
$sql="Select nextid as MyNextID from ".$cfg["tab"]["sequence"]." where seq_name = '".$cfg["tab"]["tpl"]."'";
$db2->query($sql);
if ($db2->next_record()) $MyTplSeq=$db2->Record[0];
$MyTplConfSeq=1;
$sql="Select nextid as MyNextID from ".$cfg["tab"]["sequence"]." where seq_name = '".$cfg["tab"]["tpl_conf"]."'";
$db2->query($sql);
if ($db2->next_record())
{
$MyTplConfSeq=$db2->Record[0];
$MyTplConfSeq++;
}
/* ermittel alle Templates des zu kopierenden Kunden */
$sql = "SELECT * from ".$cfg["tab"]["tpl"]." where idclient=".$old_idclient." order by idtpl";
$db1->query($sql); /* liefert Zeiger auf Ergebnisliste (Result Set)*/
/*Lese die idtpl der Templates erst mal in ein Array um sich die alten Indizes zu merken */
while($db1->next_record())
{
/*Merke im Array $ArrIdxAltLayout[] den Index (idlay) der Layouts des alten Mandanten */
$ArrIdxAltTpl[]=$db1->Record[2]; /* Spalte idtpl */
$ArrIdxNeuTpl[]=$MyTplSeq;
$MyTplSeq++; /* erhöhe um 1 */
$ArrIdxAltTplConf[]=$db1->Record[3]; /* Spalte idtplcfg */
$ArrIdxNeuTplConf[]=$MyTplConfSeq;
$MyTplConfSeq++; /* erhöhe um 1 */
}
/*Hinweis:
$MyTplSeq ist der Wert, der für nextid con_tpl in con_sequence eingetragen werden muss
$MyTplConfSeq-1 ist der Wert, der für nextid con_tplConf in con_sequence eingetragen werden muss
*/
/* Nun sind alle ID's, die alten und die neuen bekannt. Kopiere nun die Daten der Tabelle con_Templates */
$sql = "SELECT * from ".$cfg["tab"]["tpl"]." where idclient=".$old_idclient." order by idtpl";
$db1->query($sql); /* liefert Zeiger auf Ergebnisliste (Result Set)*/
echo "<hr><h2><font face='Arial' color='#ff0000'>Kopiere die folgenden Templates:</font></h2>";
$lauf=0;
while($db1->next_record())
{
$lauf++;
/* Lese nun idlay aus und stelle fest, wo dieser idlay im Array der alten Indizes steht (in ArrIdxAltLayer[]) */
$ArrPosLay=array_search($db1->Record[1], $ArrIdxAltLayout);
/* Lese nun idtpl aus und stelle fest, wo dieser idtpl im Array der alten Indizes steht (in ArrIdxAltTpl[]) */
$ArrPosTpl=array_search($db1->Record[2], $ArrIdxAltTpl);
/* dito für idtplconf */
$ArrPosTplConf=array_search($db1->Record[3], $ArrIdxAltTplConf);
$sql = "INSERT INTO ".$cfg["tab"]["tpl"]." VALUES ('".$new_idclient."'";
$db1->Record[1]=$ArrIdxNeuLayout[$ArrPosLay];
$db1->Record[2]=$ArrIdxNeuTpl[$ArrPosTpl];
$db1->Record[3]=$ArrIdxNeuTplConf[$ArrPosTplConf];
echo "<font face='Arial' color='#000000'>".$db1->Record[4]."</font><BR>";
for ($i=1;$i<$db1->num_fields();$i++)
{
$sql = $sql .",";
$cont = $db1->Record[$i];
$cont = str_replace('\\','\\\\',$cont);
$cont = str_replace('"','\"',$cont);
$sql = $sql ."\"".$cont."\"";
}
$sql = $sql .")";
$db2->query($sql);
/*Neuen Datensatz auch in Tabelle tplconf */
$sql = "INSERT INTO ".$cfg["tab"]["tpl_conf"]." (idtplcfg, idtpl, author) VALUES ('".$ArrIdxNeuTplConf[$ArrPosTplConf]."', '".$ArrIdxNeuTpl[$ArrPosTpl]."', 'admin')";
$db2->query($sql);
}
/*Korrigiere nun noch die Werte in der Tabelle con_sequences */
$sql="Update ".$cfg["tab"]["sequence"]." set nextid=".$MyTplSeq." where seq_name = '".$cfg["tab"]["tpl"]."'";
$db2->query($sql);
$MyTplConfSeq=$MyTplConfSeq-1;
$sql="Update ".$cfg["tab"]["sequence"]." set nextid=".$MyTplConfSeq." where seq_name = '".$cfg["tab"]["tpl_conf"]."'";
$db2->query($sql);
echo "<h3><font face='Arial' color='#ff0000'>Es wurden ".$lauf." Templates vom Mandanten ".$old_idclient." auf den Mandanten ".$new_idclient." kopiert. Der Eintrag für ".$cfg["tab"]["tpl"]." und für ".$cfg["tab"]["tpl_conf"]." wurde in der Tabelle ".$cfg["tab"]["sequence"]." korrigiert.</font></h3>";
echo "<hr>";
/*CONTAINER kopieren */
/* Die Container sind nur an den Index der Templates gebunden, nicht direkt an die idClient, also nicht direkt an den Mandanten */
echo "<hr><h2><font face='Arial' color='#ff0000'>Kopiere die Container:</font></h2>";
$sql = "SELECT * from ".$cfg["tab"]["container"]." order by idtpl";
$db1->query($sql); /* liefert Zeiger auf Ergebnisliste (Result Set)*/
/* Ermittel aus der Tabelle sequences den max. Index von con_container */
$MyContainerSeq=1;
$sql="Select nextid as MyNextID from ".$cfg["tab"]["sequence"]." where seq_name = '".$cfg["tab"]["container"]."'";
$db2->query($sql);
if ($db2->next_record()) $MyContainerSeq=$db2->Record[0];
$lauf=0;
while($db1->next_record())
{
/* Lese nun idtpl aus und stelle fest, wo dieser idtpl im Array der alten Indizes steht (in ArrIdxAltTpl[]) */
$ArrPosTpl=array_search($db1->Record[1], $ArrIdxAltTpl);
if ($ArrPosTpl<>False)
{ /* if */
$lauf++;
$ArrPosModul=array_search($db1->Record[3], $ArrIdxAltModul);
$MyContainerSeq++;
$sql = "INSERT INTO ".$cfg["tab"]["container"]." VALUES ('".$MyContainerSeq."'";
$db1->Record[1]=$ArrIdxNeuTpl[$ArrPosTpl];
$db1->Record[3]=$ArrIdxNeuModul[$ArrPosModul];
for ($i=1;$i<$db1->num_fields();$i++)
{
$sql = $sql .",";
$cont = $db1->Record[$i];
$cont = str_replace('\\','\\\\',$cont);
$cont = str_replace('"','\"',$cont);
$sql = $sql ."\"".$cont."\"";
}
$sql = $sql .")";
$db2->query($sql);
} /*End if */
}
/*Korrigiere nun noch die Werte in der Tabelle con_sequences */
$sql="Update ".$cfg["tab"]["sequence"]." set nextid=".$MyContainerSeq." where seq_name = '".$cfg["tab"]["container"]."'";
$db2->query($sql);
echo "<h3><font face='Arial' color='#ff0000'>Es wurden ".$lauf." Container vom Mandanten ".$old_idclient." auf den Mandanten ".$new_idclient." kopiert. Der Eintrag für ".$cfg["tab"]["container"]." wurde in der Tabelle ".$cfg["tab"]["sequence"]." korrigiert.</font></h3>";
echo "<hr>";
/*CONTAINER CONF kopieren */
echo "<hr><h2><font face='Arial' color='#ff0000'>Kopiere die Container_Conf:</font></h2>";
$sql="SELECT * FROM ".$cfg["tab"]["container_conf"]." Order by idtplcfg ";
$db1->query($sql); /* liefert Zeiger auf Ergebnisliste (Result Set)*/
/* Ermittel aus der Tabelle sequences den max. Index von con_container_conf */
$MyContainerConfSeq=1;
$sql="Select nextid as MyNextID from ".$cfg["tab"]["sequence"]." where seq_name = '".$cfg["tab"]["container_conf"]."'";
$db2->query($sql);
if ($db2->next_record()) $MyContainerConfSeq=$db2->Record[0];
$lauf=0;
while($db1->next_record())
{
/* Lese nun idtplcfg aus und stelle fest, wo dieser idtplcfg im Array der alten Indizes steht (in ArrIdxAltTplConf[]) */
$ArrPosTplConf=array_search($db1->Record[1], $ArrIdxAltTplConf);
if ($ArrPosTplConf!==False)
{ /* If */
$lauf++;
$MyContainerConfSeq++;
$sql = "INSERT INTO ".$cfg["tab"]["container_conf"]." VALUES ('".$MyContainerConfSeq."'";
$db1->Record[1]=$ArrIdxNeuTplConf[$ArrPosTplConf];
for ($i=1;$i<$db1->num_fields();$i++)
{
$sql = $sql .",";
$cont = $db1->Record[$i];
$cont = str_replace('\\','\\\\',$cont);
$cont = str_replace('"','\"',$cont);
$sql = $sql ."\"".$cont."\"";
}
$sql = $sql .")";
$db2->query($sql);
} /* End if */
}
/*Korrigiere nun noch die Werte in der Tabelle con_sequences */
$sql="Update ".$cfg["tab"]["sequence"]." set nextid=".$MyContainerConfSeq." where seq_name = '".$cfg["tab"]["container_conf"]."'";
$db2->query($sql);
echo "<h3><font face='Arial' color='#ff0000'>Es wurden ".$lauf." Container Conf-Daten vom Mandanten ".$old_idclient." auf den Mandanten ".$new_idclient." kopiert. Der Eintrag für ".$cfg["tab"]["container_conf"]." wurde in der Tabelle ".$cfg["tab"]["sequence"]." korrigiert.</font></h3>";
echo "<hr>";
if ($CopyKategorien=0) /* 0=Nein */
{
echo "<h1><font face='Arial' color='#ff0000'>FERTIG</font></h1>";
die("Es wurden alle Templates, Layouts, Container und Module kopiert. Die Kategorien wurden auf Wunsch nicht mit kopiert.");
}
/*Kategorien kopieren */
/* Die Container sind nur an den Index der Templates gebunden, nicht direkt an die idClient, also nicht direkt an den Mandanten */
echo "<hr><h2><font face='Arial' color='#ff0000'>Kopiere die Kategorien/Menüs:</font></h2>";
/* lese aus der Tabelle con_cat alle Kategorien des zu kopierenden Mandanten ($old_idclient) aus */
$sql = "SELECT * from ".$cfg["tab"]["cat"]." where idclient=".$old_idclient." order by idcat";
$db1->query($sql); /* liefert Zeiger auf Ergebnisliste (Result Set)*/
/* Ermittel den nächsten gültigen Index für idcat aus der Tabelle con_sequences */
$MyKatSeq=0;
$sql="Select nextid as MyNextID from ".$cfg["tab"]["sequence"]." where seq_name = '".$cfg["tab"]["cat"]."'";
$db2->query($sql);
if ($db2->next_record()) $MyKatSeq=$db2->Record[0];
/* Lese nun die vorhanden Kategorie-IDs in das Array ein und generiere gleichzeitig das Array
* der neuen Kategorie-IDs. Dananch ist bekannt, welche neue idcat welcher alten idcat entsprach
*/
while($db1->next_record())
{
$MyKatSeq++; /* erhöhe um 1 */
$ArrIdxAltKat[]=$db1->Record[0]; /* Spalte idcat */
$ArrIdxNeuKat[]=$MyKatSeq;
$sql = "INSERT INTO ".$cfg["tab"]["cat"]." VALUES ('".$MyKatSeq."', '".$new_idclient."'";
for ($i=2;$i<$db1->num_fields();$i++)
{
$sql = $sql .",";
$cont = $db1->Record[$i];
$cont = str_replace('\\','\\\\',$cont);
$cont = str_replace('"','\"',$cont);
$sql = $sql ."\"".$cont."\"";
}
$sql = $sql .")";
$db2->query($sql);
} /*End while */
/*Korrigiere nun noch die Werte in der Tabelle con_sequences */
$sql="Update ".$cfg["tab"]["sequence"]." set nextid=".$MyKatSeq." where seq_name = '".$cfg["tab"]["cat"]."'";
$db2->query($sql);
echo "<h3><font face='Arial' color='#ff0000'>Die Kategorien wurden kopiert....kopiere nun deren Baumstruktur...</font></h3>";
echo "<hr>";
/* Die Daten der Tabelle con_cat wurden für den neuen Mandanten kopiert */
/* Nun muss die Baum-Struktur der Kategorien kopiert werden (steht in Tabelle con_cat_tree) */
/* Nur die Daten aus cat_tree, die zum zu kopierenden Mandanten gehören */
$sql = "SELECT * FROM ".$cfg["tab"]["cat_tree"]." RIGHT JOIN ".$cfg["tab"]["cat"]." ON ".$cfg["tab"]["cat_tree"].".idcat = ".$cfg["tab"]["cat"].".idcat WHERE ".$cfg["tab"]["cat"].".idclient=".$old_idclient." order by idtree";
$db1->query($sql); /* liefert Zeiger auf Ergebnisliste (Result Set)*/
/* Ermittel den nächsten gültigen Index für idtree aus der Tabelle con_sequences */
$MyKatTreeSeq=0;
$sql="Select nextid as MyNextID from ".$cfg["tab"]["sequence"]." where seq_name = '".$cfg["tab"]["cat_tree"]."'";
$db2->query($sql);
if ($db2->next_record()) $MyKatTreeSeq=$db2->Record[0];
$MyKatTreeSeq++; /* erhöhe um 1 */
while($db1->next_record())
{
/* Lese nun idcat aus und stelle fest, wo dieser idcat im Array der alten Indizes steht (in ArrIdxAltcat[]) */
$ArrPosKat=array_search($db1->Record[1], $ArrIdxAltKat);
if ($ArrPosKat!==False)
{
$sql = "INSERT INTO ".$cfg["tab"]["cat_tree"]." VALUES ('".$MyKatTreeSeq."', '".$ArrIdxNeuKat[$ArrPosKat]."', '".$db1->Record[2]."')";
$db2->query($sql);
$MyKatTreeSeq++;
} /* End if */
} /* End While */
$MyKatTreeSeq=$MyKatTreeSeq-1;
/*Korrigiere nun noch die Werte in der Tabelle con_sequences */
$sql="Update ".$cfg["tab"]["sequence"]." set nextid=".$MyKatTreeSeq." where seq_name = '".$cfg["tab"]["cat_tree"]."'";
$db2->query($sql);
echo "<h3><font face='Arial' color='#ff0000'>Die Baumstruktur der Kategorien wurde kopiert....kopiere nun deren Bezeichnungen und Sprache...</font></h3>";
echo "<hr>";
/* Die Baumstruktur (Tabelle con_cat_tree) wurde für den neuen Mandanten kopiert */
/* Nun müssen die Bezeichnungen der Kategorien kopiert werden (steht in Tabelle con_cat_lang) */
$sql = "SELECT * FROM ".$cfg["tab"]["cat_lang"]." order by idcat";
$db1->query($sql); /* liefert Zeiger auf Ergebnisliste (Result Set)*/
/* Ermittel den nächsten gültigen Index für idcatlang aus der Tabelle con_sequences */
$MyKatLangSeq=0;
$sql="Select nextid as MyNextID from ".$cfg["tab"]["sequence"]." where seq_name = '".$cfg["tab"]["cat_lang"]."'";
$db2->query($sql);
if ($db2->next_record()) $MyKatLangSeq=$db2->Record[0];
$MyKatLangSeq++; /* erhöhe um 1 */
while($db1->next_record())
{
/* Lese nun ids aus und stelle fest, wo diese im Array der alten Indizes stehen */
$ArrPosKat=array_search($db1->Record[1], $ArrIdxAltKat);
$ArrPosTplConf=array_search($db1->Record[3], $ArrIdxAltTplConf);
$sql = "INSERT INTO ".$cfg["tab"]["cat_lang"]." VALUES ('".$MyKatLangSeq."'";
$db1->Record[1]=$ArrIdxNeuKat[$ArrPosKat]; /* Die korrespondierende neue idcat */
if ($ArrPosTplConf!==False) $db1->Record[3]=$ArrIdxNeuTplConf[$ArrPosTplConf]; /* Die korrespondierende neue idtplcfg */
for ($i=1;$i<$db1->num_fields();$i++)
{
$sql = $sql .",";
$cont = $db1->Record[$i];
$cont = str_replace('\\','\\\\',$cont);
$cont = str_replace('"','\"',$cont);
$sql = $sql ."\"".$cont."\"";
}
$sql = $sql .")";
$db2->query($sql);
$MyKatLangSeq++;
} /* End While */
$MyKatLangSeq=$MyKatLangSeq-1;
/*Korrigiere nun noch die Werte in der Tabelle con_sequences */
$sql="Update ".$cfg["tab"]["sequence"]." set nextid=".$MyKatLangSeq." where seq_name = '".$cfg["tab"]["cat_lang"]."'";
$db2->query($sql);
echo "<h3><font face='Arial' color='#ff0000'>Die Bezeichnungen der Kategorien wurden kopiert.</font></h3>";
echo "<hr>";
/*Stelle zum Schluß noch sicher, dass beide Mandanten auf die gleiche Sprache eingestellt sind */
$sql = "SELECT * FROM ".$cfg["tab"]["clients_lang"]."";
$db1->query($sql);
$langold=0;
$MandantNeuExist=0;
$MyClientLangSeq=0;
$sql="Select nextid as MyNextID from ".$cfg["tab"]["sequence"]." where seq_name = '".$cfg["tab"]["clients_lang"]."'";
$db2->query($sql);
if ($db2->next_record()) $MyClientLangSeq=$db2->Record[0];
$MyClientLangSeq++; /* erhöhe um 1 */
while($db1->next_record())
{
if ($db1->Record[1]==$old_idclient) $langold=$db1->Record[2];
if ($db1->Record[1]==$new_idclient) $MandantNeuExist=1;
} /* End While */
if ($MandantNeuExist==0) /* Neuer Mandant existiert nicht in Tabelle client_lang */
{
$sql = "INSERT INTO ".$cfg["tab"]["clients_lang"]." VALUES ('".$MyClientLangSeq."', '".$new_idclient."', '".$langold."')";
$db2->query($sql);
}
else
{
$sql = "UPDATE ".$cfg["tab"]["clients_lang"]." Set idlang='".$langold."' where idclient='".$new_idclient."'";
$db2->query($sql);
}
/*Korrigiere nun noch die Werte in der Tabelle con_sequences */
$sql="Update ".$cfg["tab"]["sequence"]." set nextid=".$MyClientLangSeq." where seq_name = '".$cfg["tab"]["clients_lang"]."'";
$db2->query($sql);
echo "<h1><font face='Arial' color='#ff0000'>FERTIG</font></h1>";
echo "<font face='Arial' color='#2244ff'>Es wurden alle Module, Templates, Layouts, Container und Kategorien kopiert.</font>";
?>