Extension Updates

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Benutzeravatar
D@ve
Ehemaliger
Beiträge: 3840
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Extension Updates

Beitragvon D@ve » 06.01.2015 11:34

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

Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11558
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Re: Extension Updates

Beitragvon nickvergessen » 06.01.2015 12:07

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.
IMMER eine neue Datei nehmen. Wenn eine alte fehlt könnte es zu Fehlern kommen.
Macht phpBB an sich auch so: https://github.com/phpbb/phpbb/blob/dev ... x/v312.php

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?
Richtig.

D@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?

https://wiki.phpbb.com/Migrations/Tools/Config

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?

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.
kein Support per PN

Benutzeravatar
Crizzo
Administrator
Administrator
Beiträge: 9952
Registriert: 19.05.2005 21:45
Kontaktdaten:

Re: Extension Updates

Beitragvon Crizzo » 06.01.2015 12:29

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.
phpBB Translations & International Support Teams Manager

Benutzeravatar
oxpus
Ehemaliger
Beiträge: 5174
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Extension Updates

Beitragvon oxpus » 06.01.2015 13:16

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!!

Benutzeravatar
D@ve
Ehemaliger
Beiträge: 3840
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Re: Extension Updates

Beitragvon D@ve » 06.01.2015 14:00

IMMER eine neue Datei nehmen. Wenn eine alte fehlt könnte es zu Fehlern kommen.

ok... werde ich dann ab der ersten Final machen...


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.

Ich würde aber auch folgende Reihenfolge vorschlagen:

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. :ugeek:
Wenn WIR da schon durcheinander kommen...

Gruß, Dave

Talk19zehn
Ehemaliger
Beiträge: 4692
Registriert: 08.06.2009 12:03

Re: Extension Updates

Beitragvon Talk19zehn » 06.01.2015 14:30

Hi, stimmt ist doch recht verwirrend, wenn ich die Frage und Antwort auf ein "Update" verfolge:
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.


ACP schreibt (Anpassen/Erweiterungen verwalten): Version 3.1.2 (Stand 26.11.2014)
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


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". :-?

Benutzeravatar
Wolfsblvt
Mitglied
Beiträge: 29
Registriert: 26.10.2014 22:15

Re: Extension Updates

Beitragvon Wolfsblvt » 07.01.2015 01:12

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?

In den Migration-Files solltest du nicht für die Config-Klasse gehen, sondern über das Datenbankschema.
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

Benutzeravatar
Elsensee
Ehemaliger
Beiträge: 832
Registriert: 19.05.2010 15:14
Wohnort: Hamburg
Kontaktdaten:

Re: Extension Updates

Beitragvon Elsensee » 07.01.2015 01:30

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. :wink:
Posts mostly powered by GitHub and phpBB.de Cross-Reference

2015-03-20 - Never forget 8)

Gast234254
Gesperrt
Beiträge: 1999
Registriert: 08.02.2009 22:58

Re: Extension Updates

Beitragvon Gast234254 » 17.01.2015 04:23

Wie kann ich bei einer bestehenden Tabelle eine Spalte ändern?
Und zwar

Code: Alles auswählen

                  'name'            => array('INT:2', 0),
                  'value'            => array('VCHAR:255', ''),
                  'aktiv'            => array('INT:1', 0),


ändern zu

Code: Alles auswählen

                  'name'            => array('INT:2', 0),
                  'value'            => array('VCHAR:500', ''),
                  'aktiv'            => array('INT:1', 0),

value soll auf 500 geändert werden ohne die vorhandenen Daten zu löschen.

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', ''),
               ),
            ),
         ),
      );
   }

HJW
Mitglied
Beiträge: 976
Registriert: 20.04.2007 20:48
Wohnort: 45481 Mülheim an der Ruhr
Kontaktdaten:

Re: Extension Updates

Beitragvon HJW » 17.01.2015 09:42

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);
   }


Zurück zu „Extension Bastelstube“