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]
fasse [Wo baue ich die Änderungen im Sourcecode ein ?]
de:entwickler:aenderungen_in_der_datenbank_einbauen [2015/05/30 23:15] (current)
fasse [Wie wird die XML-Datei bearbeitet ?]
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