Aktualisiert: Mandanten kopieren

SIL
Beiträge: 12
Registriert: Sa 25. Jun 2005, 13:33
Kontaktdaten:

Beitrag von SIL » Sa 25. Jun 2005, 13:35

Hmm, schade...

bei dem Versuch einen Mandanten zu kopieren, bricht das Script bei den Templates mit folgender Meldung ab:
Standard
Newsletter
$db->Record[3] is not set
tried to change table :con_template
Vielleicht hat jemand eine Idee?

Gruß
SIL

kptkip
Beiträge: 192
Registriert: Mi 8. Jun 2005, 18:02
Kontaktdaten:

Mandante auf einen anderen Server Kopieren

Beitrag von kptkip » Di 28. Jun 2005, 15:11

Hallo, das Kopieren von Mandanten Date finde ich ne super Idee.

Mich würden allerdings zwei Sachen Interessieren:

1. Eine einfache Kopiermöglichkeit von Modulen von einem Mandanten zum anderen ohne alle anderen Datensätze

2. EIn Server-übergreifendes (dann allerdings komplettes) Kopieren. Damit könnte ich die Daten von unserem Entwicklungs-Server auf unseren Live-Server schieben. Da fehlt mir ehrlich gesagt noch so der Workflow. WIr haben mehrere Domains mit unterschiedlichen Aussehen und Anforderungen und entwickeln eben auf einem Test-Server und dann geht es eben ab auf den Live-Server.

Gibt es so etwas, oder wie macht Ihr das im Workflow?

Gruß
Kpt|Kip

emergence
Beiträge: 10641
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 25. Jul 2005, 09:24

hab leider immer zu wenig zeit...
ich hab mir jetzt mal ein paar sachen aus dem script wieder angesehen...

und die funktion etwas nachmodifiziert die den abbruch verursacht
-> $db->Record[3] is not set
tried to change table :con_template

diesen abbruch kann man unterbinden, in dem man die function changeDbRecord

durch diese version ersetzt

Code: Alles auswählen

// change $db Record by name
//
// modify values of $db record by name
// $table specifies the table name
// $valueArray must be an Array with
// syntax $valueArray["fieldname"] = "new value";
//
// @author horwath@dayside.net
function changeDbRecord($table, $valueArray) {

    global $db, $db2;

    // $db2 muss hier verwendet werden !!
    $values = $db2->metadata($table);

    // get field names and position
    $pos = 0;
    foreach ($values as $key) {
        $thisPosition[$key["name"]] = $pos;
        $pos++;
    }

    if ($pos==0) {
        echo "no field names found in table";
        die();
    }

    // modify $db->Record[]
    foreach ($valueArray as $name => $value) {

        if (!isset($thisPosition[$name])) {
            echo "sorry this $name does not exist in definied table<br>\n";
            echo "available fields in table: <b>".$table."</b><br>\n";
            echo "<pre>";
            print_r($thisPosition);
            echo "</pre>";
            die();
        } else {

            if (!isset($db->Record[$thisPosition[$name]])) {

               echo "no value stored in \$db->Record[".$thisPosition[$name]."]<br>";
               echo "you should check table: '".$table."' ,field:'".$name."'<br>";
               echo "skipping setting value to: '".$value."'<br>";
               echo "DB Record:";
               echo "<pre>";
               print_r($db->Record);
               echo "</pre>";

            } else {

               // change field value
               $db->Record[$thisPosition[$name]] = $value;

            }

        }

    }
}
ein abbruch erfolgt nur mehr falls die tabelle nicht exisitiert bzw das feld das geändert werden soll in dieser tabelle nicht vorhanden ist...
wenn kein wert gesetzt ist erfolgt nur ein hinweis das der wert unverändert bleibt...

ich hab mir das mit den artikel kopieren und kategorie kopieren noch etwas angesehen...
kategorie kopieren sollte noch fehlerfrei funktionieren,
die vorgangsweise artikel zu kopieren stimmt leider nur teilweise, da müsste die logik beim template configuration kopieren nachmodifiziert werden...
das mit dem content kopieren funktioniert theoretisch fehlerfrei... (sprich es ließe sich implementieren)

was nicht möglich ist
die korrekte anpassung der artikel, kategorie, template konfigurationen...
das ist leider ein ding der unmöglichkeit... (sprich die einstellungen die man vorgenommen hat)

auf gut deutsch
wenn man diese optionen korrekt einbaut, müsste nach dem mandanten kopieren jede konfigurationseinstellung überprüft und händisch nachgebessert werden... (siehe anmerkung am ende)

was es nicht bringt ins script zu implementieren:
nur die möglichkeit module zum neuen mandanten zu kopieren...
ich persönlich hatte bis jetzt noch nie, den fall das ich ein modul unverändert bei einem anderen mandanten einsetzen konnte...

ein server übergreifendes kopieren auf basis dieses scripts
da würd ich einfach nur empfehlen einen dump(test server) ohne die tabellen con_code und con_client zu erzeugen und beim server(live server) einzuspielen...

anmerkung:
der grund dafür ist ein design technisches problem seitens contenido
die parameter der konfigurations einstellungen beinhalten keinen hinweis darauf welcher wert typ die ziffer dort hat...
eine ziffer könnte somit idcat, idart oder irgend einen anderen wert gespeichert haben... ein rausfiltern aus dem modulcode ist somit nicht möglich...
zusätzlich gibt es auch das problem das bei einem CMS_VALUE nicht definiert werden kann welcher wert dort gespeichert wird...
simples beispiel -> modul hauptnavigation -> die idcat des hauptbaumes...
vielleicht ließe sich in contenido etwas wie CMS_VALUE[type:idtype] implementieren...
erst dann wäre eine automatische 100% kopiermöglichkeit mit korrekten anpassungen möglich...
*** make your own tools (wishlist :: thx)

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Beitrag von Oldperl » Mo 25. Jul 2005, 10:24

emergence hat geschrieben: ein server übergreifendes kopieren auf basis dieses scripts
da würd ich einfach nur empfehlen einen dump(test server) ohne die tabellen con_code und con_client zu erzeugen und beim server(live server) einzuspielen...
Da kann ich emergence nur zustimmen, ich mache es genau auf diese Weise.
Ich verwende dabei auf dem Testserver die gleiche relative Verzeichnisstruktur wie auf dem Liveserver.

Was bei mir aber nicht geht, wenn ich auf dem Liveserver Dateien ins uploadverzeichnis per Backend gestellt habe, bekomme ich sie beim Synchronisieren mittels FTP-Proggi nicht auf den Testserver geladen. Ich bekomme vom FTP-Proggi die Meldung 'Zugriff verweigert'.
Nur Löschen kann ich die Dateien per FTP.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

emergence
Beiträge: 10641
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 25. Jul 2005, 12:30

noch ne funktionsänderung
für alle die das script ab 4.5.x einsetzen...

Code: Alles auswählen

// read out next free id
function getSequenceId($table) {

    global $db2, $cfg;

    $sql= "SELECT nextid FROM ".$cfg['sql']['sqlprefix']."_sequence"." where seq_name = '$table'";
    $db2->query($sql);
    if ($db2->next_record()) {
        return ($db2->f("nextid") + 1);
    } else {
        msg($table,"missing in con_sequence");
        return 0;
    }
}
*** make your own tools (wishlist :: thx)

#ayshe
Beiträge: 445
Registriert: Do 25. Mär 2004, 10:04
Kontaktdaten:

Klasse!

Beitrag von #ayshe » Fr 30. Sep 2005, 15:10

Hallo Alex, hallo Emergence,

vielen Dank für dieses zeitsparende Skript. Ich mußte heute 7 Mandanten aus einem Mandanten generieren (=kopieren), da hätt ich Stunden auf dem Fußweg für gebraucht.

Ich habe noch eine Ergänzung zur Anleitung:
- Im Frontend (Version 2.4 des Skripts) wird nur nach dem Mandantennamen, nicht nach seiner ID gefragt - ergo braucht man sich auch nur den Namen zu merken ;-)
- per ssh oder ftp (bzw. sftp) sind noch die Ordner upload, css, und templates in die neuen mandanten zu kopieren, denn CSS und Daten in der Dateiverwaltung werden nicht mit dem Skript kopiert (logisch, ist ja auch content).
Falls man an den Templates der Hauptnavigation was geändert hat (ich hab sie auf XHTML/CSS umgebaut), dann muss man natürlich auch das templates-Verzeichnis zum neuen Mandanten kopieren.

Die Übernahme der Vorkonfigurationen war mal durchgeführt, und mal nicht. Das muß man also noch anschließend händisch überprüfen.
Und dann noch ebenfalls händisch die Kategorien konfigurieren.
Artikel wurden bis auf den letzten Mandanten alle übernommen; keine Ahnung, warum beim letzten nicht, Fehlermeldung gab's keine.

Vielen Dank nochmal für dieses Skript und ein schönes WE,
Ayshe

micattack
Beiträge: 28
Registriert: Fr 14. Nov 2003, 13:31
Kontaktdaten:

Beitrag von micattack » Mo 10. Okt 2005, 10:00

Danke für das Skript. Hatte zwar einige kleiner Troubles (Template Vars waren irgendwie leer) aber sonst ganz OK.
Werde in den nächsten Wochen wohl mal dran herumprogrammieren, um das ganze (inkl File-Copy und config.php anpassung) komplett zu automatisieren.

Aber auch so: Tolle Sache.

Cheers

MediaMuchacho
Beiträge: 71
Registriert: Do 3. Nov 2005, 15:01
Wohnort: Ulm
Kontaktdaten:

Beitrag von MediaMuchacho » Do 24. Nov 2005, 02:30

Ich hab das Teil mal in 4.6.2 ausprobiert. Scheitert aber wohl an einigen Änderungen am System. Mich würde interessieren was zu ändern wäre um es 4.6.2 fit zu machen...

gruß und danke :-)

Gugro
Beiträge: 2
Registriert: Fr 25. Mai 2007, 17:15
Kontaktdaten:

Beitrag von Gugro » Fr 25. Mai 2007, 17:28

Gibt es eine funktionsfähige Version für 4.6.x ??

Was hier schon kurz angesprochen wurde, aber ich noch nicht so gefunden habe:
Wir pflegen die Seiten erst auf einem Testsystem bevor sie dann auf den Live-Server beim Hostingprovider kopiert werden. D.h. wir haben

Testwebserver internal.xxxx.de mit Testdatenbank testmysql
und Mandaten Test1, Test2, Test3, ...

und möchten jetzt die am Mandaten Test2 gemachten Änderungen auf
das live System yyyy.de mit Datenbank livemysql kopieren.

Gibt es so was??

Viele Grüße

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 » Fr 25. Mai 2007, 17:40

Gugro hat geschrieben:Gibt es eine funktionsfähige Version für 4.6.x ??
http://www.contenido.org/forum/viewtopi ... 3416#93416

djavet
Beiträge: 264
Registriert: Do 22. Jan 2004, 11:31
Kontaktdaten:

Beitrag von djavet » Di 2. Dez 2008, 10:49

Gibt etwas similar für 4.8.x ?

Gruss, dom

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Aktualisiert: Mandanten kopieren

Beitrag von homtata » So 10. Okt 2010, 11:16

Hallo,

seit heute (2010-10-09) gibt es ein Plugin für diese Funktionalität für Contenido 4.8.13, ich habe es im Forum "Plugins 4.8.x" online gestellt:
http://forum.contenido.org/viewtopic.php?f=66&t=30670

Gesperrt