Extension Updates
- D@ve
- Ehemaliges Teammitglied
- Beiträge: 3842
- Registriert: 28.08.2002 19:33
- Wohnort: Bretzfeld
- Kontaktdaten:
Extension Updates
Wie genau funktioniert das mit den Updates.
Man legt ja im Migrations Ordner eine Klasse release_x_x_x an.
a)
Macht es da Sinn, für jedes Release eine neue Datei anzulegen? Ich hab die Datei/Klasse bisher mit den Releases immer nur umbenannt, weil sich in der Migration bzw. in der Datenbank nix geändert hat.
b)
verstehe ich das richtig, dass wenn ich in der static public function depends_on() Methode eine andere Migration File angebe, dass diese dann zuerst ausgeführt wird?
c)
Wie kann ich Datenbankaufrufe machen? Wie kann ich zum Beispiel config variablen ändern. bzw. wie kann ich auf die bestehende config zugreifen. Das klappt irgendwie nicht. Angenommen ich habe im alten Release eine variable $config['my_ext_abc'] die will ich jetzt in $config['my_ext_xyz'] umbenennen. Der Wert soll bei einem Update natürlich erhalten bleiben. Wie mache ich das?
d)
Wie würde ein Update praktisch aussehen? Überschreibt man einfach die Alte Extension und phpBB erkennt das dann wenn man Manage Extensions im ACP aufruft und führt die neuen migrations dann aus?
Gruß, Dave
Man legt ja im Migrations Ordner eine Klasse release_x_x_x an.
a)
Macht es da Sinn, für jedes Release eine neue Datei anzulegen? Ich hab die Datei/Klasse bisher mit den Releases immer nur umbenannt, weil sich in der Migration bzw. in der Datenbank nix geändert hat.
b)
verstehe ich das richtig, dass wenn ich in der static public function depends_on() Methode eine andere Migration File angebe, dass diese dann zuerst ausgeführt wird?
c)
Wie kann ich Datenbankaufrufe machen? Wie kann ich zum Beispiel config variablen ändern. bzw. wie kann ich auf die bestehende config zugreifen. Das klappt irgendwie nicht. Angenommen ich habe im alten Release eine variable $config['my_ext_abc'] die will ich jetzt in $config['my_ext_xyz'] umbenennen. Der Wert soll bei einem Update natürlich erhalten bleiben. Wie mache ich das?
d)
Wie würde ein Update praktisch aussehen? Überschreibt man einfach die Alte Extension und phpBB erkennt das dann wenn man Manage Extensions im ACP aufruft und führt die neuen migrations dann aus?
Gruß, Dave
There are only 10 types of people in the world: Those who understand binary, and those who don't
- nickvergessen
- Ehrenadmin
- Beiträge: 11559
- Registriert: 09.10.2006 21:56
- Wohnort: Stuttgart, Germany
- Kontaktdaten:
Re: Extension Updates
IMMER eine neue Datei nehmen. Wenn eine alte fehlt könnte es zu Fehlern kommen.D@ve hat geschrieben:a)
Macht es da Sinn, für jedes Release eine neue Datei anzulegen? Ich hab die Datei/Klasse bisher mit den Releases immer nur umbenannt, weil sich in der Migration bzw. in der Datenbank nix geändert hat.
Macht phpBB an sich auch so: https://github.com/phpbb/phpbb/blob/dev ... x/v312.php
Richtig.D@ve hat geschrieben:b)
verstehe ich das richtig, dass wenn ich in der static public function depends_on() Methode eine andere Migration File angebe, dass diese dann zuerst ausgeführt wird?
https://wiki.phpbb.com/Migrations/Tools/ConfigD@ve hat geschrieben:c)
Wie kann ich Datenbankaufrufe machen? Wie kann ich zum Beispiel config variablen ändern. bzw. wie kann ich auf die bestehende config zugreifen. Das klappt irgendwie nicht. Angenommen ich habe im alten Release eine variable $config['my_ext_abc'] die will ich jetzt in $config['my_ext_xyz'] umbenennen. Der Wert soll bei einem Update natürlich erhalten bleiben. Wie mache ich das?
Man löscht die alten Dateien und lädt die neuen hoch, danach geht man in den Extensionbereich im ACP, deaktiviert die Extension und aktiviert sie dann erneut.D@ve hat geschrieben:d)
Wie würde ein Update praktisch aussehen? Überschreibt man einfach die Alte Extension und phpBB erkennt das dann wenn man Manage Extensions im ACP aufruft und führt die neuen migrations dann aus?
Im letzten Schritt werden dabei die Datenbankänderungen ausgeführt.
kein Support per PN
Re: Extension Updates
Man löscht die alten Extension Dateien zuerst per FTP und deaktiviert die Extension dann? Wieso denn das? Ich dachte gelöscht wird erst nach dem Deaktivieren.
- oxpus
- Ehemaliges Teammitglied
- Beiträge: 5394
- Registriert: 03.02.2003 12:33
- Wohnort: Bad Wildungen
- Kontaktdaten:
Re: Extension Updates
Löschen vor dem Deaktivieren kann das Forum lahmlegen. Also immer erst deaktivieren, dann löschen.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
- D@ve
- Ehemaliges Teammitglied
- Beiträge: 3842
- Registriert: 28.08.2002 19:33
- Wohnort: Bretzfeld
- Kontaktdaten:
Re: Extension Updates
ok... werde ich dann ab der ersten Final machen...IMMER eine neue Datei nehmen. Wenn eine alte fehlt könnte es zu Fehlern kommen.
Ich würde aber auch folgende Reihenfolge vorschlagen:Man löscht die alten Dateien und lädt die neuen hoch, danach geht man in den Extensionbereich im ACP, deaktiviert die Extension und aktiviert sie dann erneut.
Im letzten Schritt werden dabei die Datenbankänderungen ausgeführt.
1) Alt deaktivieren
2) Alt löschen
3) Upload Neu
4) Aktivieren Neu
Also gibt es da keine richtige Update-Funktion für die User... Das ganze klingt seeeeehr fehleranfällig...
Ich sehe schon die Support-Anfragen, wo die Leute versehentlich erst gelöscht haben und alte Versionen nicht mehr sauber entfernt kriegen.

Wenn WIR da schon durcheinander kommen...
Gruß, Dave
There are only 10 types of people in the world: Those who understand binary, and those who don't
- Talk19zehn
- Ehemaliges Teammitglied
- Beiträge: 5014
- Registriert: 08.06.2009 12:03
Re: Extension Updates
Hi, stimmt ist doch recht verwirrend, wenn ich die Frage und Antwort auf ein "Update" verfolge:

ACP schreibt (Anpassen/Erweiterungen verwalten): Version 3.1.2 (Stand 26.11.2014)nickvergessen hat geschrieben:Man löscht die alten Dateien und lädt die neuen hoch, danach geht man in den Extensionbereich im ACP, deaktiviert die Extension und aktiviert sie dann erneut.
Dateisystem = ich löschte sodann händisch in der Datenbank und zusätzlich den Twig-Ordner bevor ich Caches bereinigte. Na hoffentlich ist mir da nun nichts "angebrannt".Eine Erweiterung aktualisieren
- Deaktiviere die Erweiterung
Lösche die Dateien der Erweiterung aus dem Dateisystem
Lade die neuen Dateien hoch
Aktiviere die Erweiterung
Eine Erweiterung komplett aus dem Board entfernen
- Deaktiviere die Erweiterung
Lösche die Arbeitsdaten der Erweiterung
Lösche die Dateien der Erweiterung aus dem Dateisystem

Adventereigniskalender für phpBB 3.3.x,
Meine persönliche Meinung im Jahr 2024: Im Zenit seiner Popularität wirkt KI zunächst wie eine Blaupause und lässt sich aufgrund der Vielschichtigkeit nicht auf eine einzige Botschaft reduzieren. Präteritum, Perfekt, Präsens, Futur & Plusquamperfekt werden nicht fehlerfrei genutzt, gar missverstanden.
Meine persönliche Meinung im Jahr 2024: Im Zenit seiner Popularität wirkt KI zunächst wie eine Blaupause und lässt sich aufgrund der Vielschichtigkeit nicht auf eine einzige Botschaft reduzieren. Präteritum, Perfekt, Präsens, Futur & Plusquamperfekt werden nicht fehlerfrei genutzt, gar missverstanden.
Re: Extension Updates
In den Migration-Files solltest du nicht für die Config-Klasse gehen, sondern über das Datenbankschema.D@ve hat geschrieben:Wie kann ich Datenbankaufrufe machen? Wie kann ich zum Beispiel config variablen ändern. bzw. wie kann ich auf die bestehende config zugreifen. Das klappt irgendwie nicht. Angenommen ich habe im alten Release eine variable $config['my_ext_abc'] die will ich jetzt in $config['my_ext_xyz'] umbenennen. Der Wert soll bei einem Update natürlich erhalten bleiben. Wie mache ich das?
Wenn du die bisher gesetzte Variable übernehmen willst, wird es etwas schwieriger. Am einfachsten wäre eine Custom-Methode, in der du die Einstellung einfach zwischenspeicherst, dann löschst und die neue Variable anlegst.
Oder du schreibst eine einfache Query, die den config_name anpasst.
Lesser, greater, middling, it's all the same. Proportions are negotiated, boundaries blurred.
I'm not a pious hermit, I haven't done only good in my life. But if I'm to choose between one evil and another,
then I prefer not to choose at all. ― Andrzej Sapkowski, The Last Wish
I'm not a pious hermit, I haven't done only good in my life. But if I'm to choose between one evil and another,
then I prefer not to choose at all. ― Andrzej Sapkowski, The Last Wish
- Elsensee
- Ehemaliges Teammitglied
- Beiträge: 832
- Registriert: 19.05.2010 15:14
- Wohnort: Hamburg
- Kontaktdaten:
Re: Extension Updates
Zum Release von phpBB 3.1.0 hat man solche Migrations auch aufgeteilt, wenn zum Beispiel Spalten gelöscht werden sollten, die Daten in den Spalten aber noch in andere sollten.
Da hat man in Part 1 die neuen Spalten angelegt und die Daten rüberkopiert und in Part 2 die alten Spalten gelöscht.
Da hat man in Part 1 die neuen Spalten angelegt und die Daten rüberkopiert und in Part 2 die alten Spalten gelöscht.

Posts mostly powered by GitHub and phpBB.de Cross-Reference
2015-03-20 - Never forget
2015-03-20 - Never forget

-
- Gesperrt
- Beiträge: 1999
- Registriert: 08.02.2009 22:58
Re: Extension Updates
Wie kann ich bei einer bestehenden Tabelle eine Spalte ändern?
Und zwar
ändern zu
value soll auf 500 geändert werden ohne die vorhandenen Daten zu löschen.
Damit habe ich keinen Erfolg
Und zwar
Code: Alles auswählen
'name' => array('INT:2', 0),
'value' => array('VCHAR:255', ''),
'aktiv' => array('INT:1', 0),
Code: Alles auswählen
'name' => array('INT:2', 0),
'value' => array('VCHAR:500', ''),
'aktiv' => array('INT:1', 0),
Damit habe ich keinen Erfolg
Code: Alles auswählen
public function update_schema()
{
return array(
'change_value' => array(
$this->table_prefix . 'foe' => array(
'COLUMNS' => array(
'value' => array('VCHAR:500', ''),
),
),
),
);
}
-
- Mitglied
- Beiträge: 1302
- Registriert: 20.04.2007 20:48
- Wohnort: 45481 Mülheim an der Ruhr
- Kontaktdaten:
Re: Extension Updates
Da ich auch nichts gefunden habe, habe ich das so gelöst:
Code: Alles auswählen
public function update_schema()
{
$sql = 'ALTER TABLE ' . $this->table_prefix . 'foe
MODIFY value varchar(500)';
$this->sql_query($sql);
}