PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Themen und Beiträge erstellen


Andreas
09.08.2007, 17:26
Worum geht es hier?
Vielfach ist es nötig mit eigenem Code neue Themen oder Beiträge zu erstellen.
Dieser Code erläutert wie dies unter Nutzung von Standardfunktionalität möglich ist.

Datamanger über alles!
Wie in vielen anderen Bereichen, so sind auch für Themen und Beiträge die Datamanager der entscheidende Bestandteil.
Über die Datamanger werden Themen/Beiträge erstellt, bzw. geänderte gepsiechert oder auch wieder gelöscht.
Hierbei sorgen die DM dafür dass alle Daten überprüft werden, der Suchindex aktualisiert, usw.

Hier ist ein Beispiel für die Erstellung eines neuen Beitrags:
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------

Sollte eine der Eingabedaten fehlerhaft sein oder beim erstellen etwas schief gehen, so enthält das Array $postdm->errors die entsprechenden Fehlermeldungen.
Zu beachten ist dass evtl. vorhandene Themen-Abonnements mit sofortiger eMail-Benachrichtigug nicht aktualisiert werden.
Ebenso werden keinerlei Rechteprüfungen, Moderation, Floodcheck etc. vorgenommen.

Die Erstellung eines neuen Themas erfolg analog
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------

Die Angabe eines Titels ist hierbei jedoch obligatorsch.

In beiden Fällen existiert noch eine Fülle weiterer Eigenschaften (Icon, etc.) Eigenschaften, deren Dokumentation ich mir jedoch hier aus Platzgründen ersparen möchte.

Were nähere Informationen benötigt findet diese in der Datei includes/class_dm_threadpost.php

boxhamster
12.05.2008, 12:12
Das sieht genau nach dem aus, was ich brauche. Wir haben vor ein paar Tagen unser selbst programmiertes Forum durch vB ersetzt, nun soll auch die Kommentier-Funktion nach vB ermöglicht werden.

Allerdings stehe ich auf dem Schlauch, wie ich den Code nun in mein Script einbinden muss, wenn ich von meiner Nicht-vB-Seite aus einen neuen Thread in meinem vBulletin starten möchte.

Über etwas Hilfestellung wäre ich sehr dankbar.
Danke & Gruß Markus

boxhamster
16.05.2008, 17:35
okay, hab's inzwischen selbst rausgefunden, falls nach mir jemand das gleiche Problem haben sollte, mit

PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------

kann man die vB-Funktionen auch in anderen Scripts nutzen - in obigen Beispiel vom Verzeichnis oberhalb von /forum aus.
Weiß nicht, wo das sonst noch erklärt ist, ich hab's jedenfalls nicht gleich gefunden und in einem Hack nachgeschaut.

boxhamster
16.05.2008, 17:46
Mit
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------

kann ich ja automatisch generierte Tags direkt in die Datenbank übergeben. Das funktioniert soweit auch, man erhält aber noch kein Ergebnis, wenn man auf diesen Tag dann klickt. Muss man noch etwas anderes machen, damit ein so erzeugter Tag aktiviert wird?
Danke & Gruß
Markus

el_rob
23.05.2008, 10:59
Hallo Andreas,

Danke für diesen nützlichen Artikel! Vielleicht kannst Du mir noch einwenig weiterhelfen...

Ich versuche Dein Skript so zu erweitern, dass auch Anhänge über ein Formular im Adminbereich hinzugefügt werden können. Mein Code sieht folgendermassen aus:
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------Funktioniert grundsätzlich, bis auf 2 Punkte:

1. In der Tabelle attachment wird die postid nicht eingetragen, ausser ich ändere in der includes/class_upload.php (Zeile 908)
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------in
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------was ich aber ungern tue, denn ich möchte die vBulletin Core-Dateien eigentlich nicht verändern.

2. Bei Bilddateien wird kein Thumbnail generiert.

Versuche bereits seit Tagen eine Lösung zu finden, aber es will einfach nicht klappen... Wäre sehr dankbar für Hilfe!!!

Danke und Gruss,
Rob

el_rob
06.06.2008, 15:04
Bin immer noch auf der Suche nach einer Lösung... :(

Andreas
06.06.2008, 15:40
Ich hatte schon einen Beitrag dazu verfasst aber wohl nicht abgeschickt ...

Kurzfassung
a) Entweder die postid nach dem speichern selbst setzen
oder
b) so vorgehen wie vB selbst auch: Erst die Attachments erstellen und dann den Beitrag , dann setzt der DM die postid

el_rob
06.06.2008, 17:29
Hallo Andreas

Vielen Dank für Deine Antwort!

Inzwischen sieht mein Code folgendermassen aus und funktioniert :) Allerdings lässt sich die postid in der attachment-Tabelle nur mittels $db->query_write einfügen. Das setzen mittels
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------funktioniert nur, wenn ich in der class_upload.php wie im ersten Post beschrieben setr_info in setr ändere... Wie kriege ich es hin, dass der DM das übernimmt?

PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------Danke!!!
Rob

Andreas
06.06.2008, 20:13
Wie kriege ich es hin, dass der DM das übernimmt?
Das habe ich doch bereits geschrieben ;)

Indem Du es so machst wie vB: Erst die Attachments, dann der Beitrag.

el_rob
07.06.2008, 10:11
Das habe ich doch bereits geschrieben ;)
Sorry, bin Schweizer... manchmal dauert's einfach ein bisschen länger! ;)

Aber nun funktionierts, hurraaaaaa!!! :D

PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------Vielen Dank für Deine Hilfe!!!

Hopp Schwiiz!
Rob

Gérome
22.07.2008, 16:53
Hallo,

vorab meinen Dank für dieses Tutorial - mit einem funktionierenden Beispiel vor Augen ist man dann doch deutlich schneller am Ziel.

Eine Kleinigkeit: Version 3.7.2 prüft offenbar doch das Floodlimit. Ich habe eben ein Plugin geschrieben, dass einen Beitrag erzeugt, wenn ein Thema verschoben wurde. Selektiert und verschiebt man mehrere Themen, werden dementsprechend mehrere Beiträge erzeugt - oder auch nicht. Ich lief in eine Fehlermeldung, die mir mitteilte, ich möge 15 Sekunden warten.

Ich habe nun - analog zu dem Code, den ich in der RSS-Klasse fand - folgende Zeile hinzugefügt und nun läuft alles wie erwartetet:

PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------

Ich hoffe, dass ich jetzt nicht in unerwartete Nebeneffekte laufe.


Grüße,
Gérome

Andreas
22.07.2008, 18:13
Ja, das Floodlimit wird geprüft.

Bei 3.6 kann man das Flag skip_floodcheck setzen, bei 3.7 wie bereits angemekrt is_automated.