Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
de:entwickler:aenderungen_in_der_datenbank_einbauen [2015/05/30 23:10] – [Wo baue ich die Änderungen im Sourcecode ein ?] fassede:entwickler:aenderungen_in_der_datenbank_einbauen [2015/05/30 23:15] (current) – [Wie wird die XML-Datei bearbeitet ?] fasse
Line 18: Line 18:
  
 ==== Wie wird die XML-Datei bearbeitet ? ==== ==== Wie wird die XML-Datei bearbeitet ? ====
-Die XML-Datei wird auch in dem Ordner **adm_install/db_scripts** abgelegt und folgt dem Namenschema **update_//Hauptversion//_//Unterversion//.xml**. Für Version 3.0.0 wäre das //update_3_0.xml//. Der XML-Aufbau sieht dann folgendermaßen aus: <code xml><?xml version="1.0" encoding="UTF-8"?>+Die XML-Datei wird auch in dem Ordner **adm_program/installation/db_scripts** abgelegt und folgt dem Namenschema **update_//Hauptversion//_//Unterversion//.xml**. Für Version 3.0.0 wäre das //update_3_0.xml//. Der XML-Aufbau sieht dann folgendermaßen aus: <code xml><?xml version="1.0" encoding="UTF-8"?>
 <update> <update>
     <step id="10">1. SQL-Statement</step>     <step id="10">1. SQL-Statement</step>
Line 24: Line 24:
     <step id="30">usw...</step>     <step id="30">usw...</step>
     <step>stop</step>     <step>stop</step>
-</update></code>Hieran kann man schon erkennen, wie das Update funktioniert. Es werden mit aufsteigender ID einfach jeweils ein SQL-Befehl in einen **step** geschrieben. <code xml><step id="40">UPDATE %PREFIX%_organizations SET org_homepage = 'http://www.example.com' WHERE org_homepage IS NULL</step></code> Bei Tabellen muss immer hier der Platzhalter **%PREFIX%** genutzt werden, damit die installationsspezifischen Tabellenpräfixe berücksichtigt werden. Wichtig ist auch der letzte **step** mit dem Inhalt **stop**. Hieran erkennt das System das das gewünschte Ende erreicht wurde und das Script nicht irgendwo abgebrochen ist.+</update></code>Hieran kann man schon erkennen, wie das Update funktioniert. Es werden mit aufsteigender ID einfach jeweils ein Befehl in einen **step** geschrieben. <code xml><step id="40">UPDATE %PREFIX%_organizations SET org_homepage = 'http://www.example.com' WHERE org_homepage IS NULL</step></code> Bei Tabellen muss immer hier der Platzhalter **%PREFIX%** genutzt werden, damit die installationsspezifischen Tabellenpräfixe berücksichtigt werden. Wichtig ist auch der letzte **step** mit dem Inhalt **stop**. Hieran erkennt das System das das gewünschte Ende erreicht wurde und das Script nicht irgendwo abgebrochen ist.
  
 Möchte man datenbankabhängige SQL-Befehle erstellen, welche nur auf einer bestimmten Datenbank ausgeführt werden sollen, so muss noch das Attribut **database** mit dem definierten Namen der Datenbank als Wert hinterlegt werden. <code xml><step id="50" database="mysql">ALTER TABLE %PREFIX%_organizations ADD COLUMN org_example varchar(255)</step></code> Möchte man datenbankabhängige SQL-Befehle erstellen, welche nur auf einer bestimmten Datenbank ausgeführt werden sollen, so muss noch das Attribut **database** mit dem definierten Namen der Datenbank als Wert hinterlegt werden. <code xml><step id="50" database="mysql">ALTER TABLE %PREFIX%_organizations ADD COLUMN org_example varchar(255)</step></code>
 +
 +Zusätzlich zu den SQL-Befehlen ist es auch möglich PHP-Code ausführen zu lassen. Dies geschieht durch den Aufruf einer Methode aus der Klasse **ComponentUpdate**. Du kannst also dieser Klasse eine neue Methode hinzufügen, die einen Codeschnipsel enthält, der z.B. eine Schleife über alle Organisationen macht und dann ein SQL-Statement für jede Organisation ausführt. Aufrufen kann man diese Methode dann indem man in der XML-Datei im **step** diese Methode wie eine statische Methode aufruft <code xml><step id="550">ComponentUpdate::updateStepDeleteDateRoles</step></code>
  • de/entwickler/aenderungen_in_der_datenbank_einbauen.txt
  • Last modified: 2015/05/30 23:15
  • by fasse