bbcodes mit migration anlegen.

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.
Antworten
Benutzeravatar
chris1278
Mitglied
Beiträge: 3532
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

bbcodes mit migration anlegen.

Beitrag von chris1278 »

So ich mus meine Frage anders Forumlieren.

Ich würde gern einen bbcode über die migrationsdateoi anlegen. Ähnlich dieses Codes:

Code: Alles auswählen

public function update_data()
	{
		return array(
			array('config.add', array ('eintrag', '1')),
		);
	}
Bei bbcode müsste das in etwa so aussehen:

Code: Alles auswählen

public function update_data()
	{
		return array(
			array('bbcode.add', array...
		);
	}
Aber wie geht es nach dem array weiter, um alle Felder abzudecken. Und wie geht es das der bbcode sich automatisch an den Vorhanden anschliesst (ich meine damit fortlaufende bbcode_id automatisch nimmt).
Benutzeravatar
Mike-on-Tour
Supporter
Supporter
Beiträge: 1075
Registriert: 13.01.2020 21:09
Kontaktdaten:

Re: bbcodes mit migration anlegen.

Beitrag von Mike-on-Tour »

Ich glaube nicht, dass das so funktioniert, weil im Migrator kein entsprechendes Tool hinterlegt ist (vgl. hier), ansonsten habe ich zu BBCodes nur das hier gefunden - und das geht auf BBCodes und Migrationsdateien nicht ein.
Benutzeravatar
chris1278
Mitglied
Beiträge: 3532
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: bbcodes mit migration anlegen.

Beitrag von chris1278 »

So ich hab jetzt die Möglichkeit gefunden bbcodes mittels insert Befehl in die bbcodes Tabelle vom Forum zu schreiben.

Der Eintrag in der Migrationsdatei sieht dabei wie folgt aus:

Code: Alles auswählen

public function update_data()
	{
		return array(
		
			array('custom', array(array($this, 'import_bbcode'))),

		);
	}
	
	public function import_bbcode()
	{
		
		$sqlary = array(
		"INSERT INTO  " . $this->table_prefix . 'bbcodes' . " (`bbcode_id`, `bbcode_tag`, `bbcode_helpline`, `display_on_posting`, `bbcode_match`, `bbcode_tpl`, `first_pass_match`, `first_pass_replace`, `second_pass_match`, `second_pass_replace`) VALUES (01, 'youtube', '', 1, '[youtube]https://{IDENTIFIER2}.youtube.com/watch?v={IDENTIFIER}[/youtube]', '<div class=\"videoCConsentContainer\" data-source=\"{IDENTIFIER}\">\n <div class=\"ccMessageContainer embed-responsive embed-responsive-16by9\">\n  <div class=\"msgMedienContent\">\n  <p>Video: https://{IDENTIFIER2}.youtube.com/watch?v={IDENTIFIER}<br><br>{L_COOKIE_INFO}</p>\n  <a class=\"btn btn-primary\" onclick=\"return klaro.show();\">Cookie-Consent-Einstellungen anpassen</a>\n  </div>\n </div>\n <div class=\"videoLayer embed-responsive embed-responsive-16by9 vimvid\"></div>\n</div>', '/(?!)/', '', '/(?!)/', '');",
		
		);
		
		foreach ($sqlary as $sql)
		{
			$this->db->sql_query($sql);
		}
		
	}


Der eigentliche einfügen Befehl sieht dann so aus:

Code: Alles auswählen

"INSERT INTO  " . $this->table_prefix . 'bbcodes' . " (`bbcode_id`, `bbcode_tag`, `bbcode_helpline`, `display_on_posting`, `bbcode_match`, `bbcode_tpl`, `first_pass_match`, `first_pass_replace`, `second_pass_match`, `second_pass_replace`) VALUES (01, 'youtube', '', 1, '[youtube]https://{IDENTIFIER2}.youtube.com/watch?v={IDENTIFIER}[/youtube]', '<div class=\"videoCConsentContainer\" data-source=\"{IDENTIFIER}\">\n <div class=\"ccMessageContainer embed-responsive embed-responsive-16by9\">\n  <div class=\"msgMedienContent\">\n  <p>Video: https://{IDENTIFIER2}.youtube.com/watch?v={IDENTIFIER}<br><br>{L_COOKIE_INFO}</p>\n  <a class=\"btn btn-primary\" onclick=\"return klaro.show();\">Cookie-Consent-Einstellungen anpassen</a>\n  </div>\n </div>\n <div class=\"videoLayer embed-responsive embed-responsive-16by9 vimvid\"></div>\n</div>', '/(?!)/', '', '/(?!)/', '');",
		
Bis hier hin ist das kein Problem. Gut ich kann die ID jetzt mit dem Befehl nicht automatisch ermitteln lassen und um nur eine stelle der letzten ID erhöhen. Aber wenn ich die ID auf 1000 setze sollte es kein Problem geben mit dem erstellen. Ich wage zu bezweifeln das man diese ID mit automatischer Zählweise der bbcodes erreicht.

Mein Problem ist aber das Entfernen des bbcods bei Arbeitsdaten Löschung der Extension, die ich schreibe.

Im Moment sieht das so aus:

Code: Alles auswählen

public function revert_schema()
	{
		return array(
		array('custom', array(array($this, 'remove_bbcode'))),
		);
	}
	
	public function remove_bbcode()
	{
		
		$sqlary = array(
		"DELETE FROM  " . $this->table_prefix . 'bbcodes' . " WHERE `phpbb_bbcodes`.`bbcode_id` = 1 ;",
		);
		
		foreach ($sqlary as $sql)
		{
			$this->db->sql_query($sql);
		}
		
	}
Der lädt zwar aber der bbcode ist immer noch in der Tabelle enthalten. Das Problem ist sollte die extension deinstalliert werden und später nochmal installiert werden würde die Installationsroutine den Die doppelte id bemängeln.

@edit

Habe es jetzt so gelöst:

Code: Alles auswählen

public function update_data()
	{
		return array(
		
			array('custom', array(array($this, 'import_bbcode'))),

		);
	}
	
	public function import_bbcode()
	{
		
		$sqlary = array(
		"INSERT INTO  " . $this->table_prefix . 'bbcodes' . " (`bbcode_id`, `bbcode_tag`, `bbcode_helpline`, `display_on_posting`, `bbcode_match`, `bbcode_tpl`, `first_pass_match`, `first_pass_replace`, `second_pass_match`, `second_pass_replace`) VALUES (1001, 'youtube', '', 0, '[youtube]https://{IDENTIFIER2}.youtube.com/watch?v={IDENTIFIER}[/youtube]', '<div class=\"videoCConsentContainer\" data-source=\"{IDENTIFIER}\">\n <div class=\"ccMessageContainer embed-responsive embed-responsive-16by9\">\n  <div class=\"msgMedienContent\">\n  <p>Video: https://{IDENTIFIER2}.youtube.com/watch?v={IDENTIFIER}<br><br>{L_COOKIE_INFO}</p>\n  <a class=\"btn btn-primary\" onclick=\"return klaro.show();\">Cookie-Consent-Einstellungen anpassen</a>\n  </div>\n </div>\n <div class=\"videoLayer embed-responsive embed-responsive-16by9 vimvid\"></div>\n</div>', '/(?!)/', '', '/(?!)/', '');",
		
		);
		
		foreach ($sqlary as $sql)
		{
			$this->db->sql_query($sql);
		}
		
	}
	
		public function revert_schema()
	{
		$sqlary = array(
				"DELETE FROM " . $this->table_prefix . 'bbcodes' . " WHERE `bbcode_id` = 1001;",
		
		);
		
		foreach ($sqlary as $sql)
		{
			$this->db->sql_query($sql);
		}
		
	}
}
Das generiert im Oberen Teil die bbcodes und im unteren Teil löscht es diese bei deinstallierung wieder. Das einzige was ich nicht hinbekomme ist das der id wert sich automatisch um eins erhöht wenn in der bbcode tabelle schon welche vorhanden sind. Daher habe ich für meine Extension jetzt als id bei 1001 angefangen. Ich denke da sollte sich auch nicht die advanced bbcode box mit quer kommen. In meinen Tests funktioniert beides egal welche reienfolge man installiert. aber wenn man nach meiner Extension die bbcode box installiert mus man meoine nochmal neu installieren da die alle bbcodes löscht bei erstinstallation.
Benutzeravatar
Kirk
Supporter
Supporter
Beiträge: 7869
Registriert: 24.05.2010 08:31
Kontaktdaten:

Re: bbcodes mit migration anlegen.

Beitrag von Kirk »

Hi
Für mein TB hatte ich zu Testzwecken eine inlinebbcode Extension erstellt, du kannst dir die migrations Datei hier im Pastebin ansehen.
Benutzeravatar
chris1278
Mitglied
Beiträge: 3532
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: bbcodes mit migration anlegen.

Beitrag von chris1278 »

ok das ist gut denke wenn ich das für die opt in ext umsetzen kann wäre das besser als die variante die ich jetzt nutze. Wie mache ich das das die bbcodebox von vse bei installation nachher den bbcode nicht löschen tut
Benutzeravatar
Kirk
Supporter
Supporter
Beiträge: 7869
Registriert: 24.05.2010 08:31
Kontaktdaten:

Re: bbcodes mit migration anlegen.

Beitrag von Kirk »

Bei der Advanced BBCode Box EXT wird bei der Installation kein vorhandener BBCode gelöscht.
Antworten

Zurück zu „Extension Bastelstube“