Liefert Foren-Beiträge einer bestimmten Person zurück. Per Default werden nur Beiträge mit einem „Sichtbarkeits-Status“ („Visible“) „4“ („sichtbar“) oder „8“ („sichtbar/abgeschlossen“) berücksichtigt - andere gewünschte „Sichtbarkeiten“ können aber über den in dieser Version eingeführten Parameter „Visibility“ angegeben werden.
Anmerkung zur Rückgabespalte „AlreadyRead“ :
In „ForumSettings“ gibt es einen Eintrag „HoursAfterPostingsAreRegardedAsRead“, der angibt, ab wann ein Posting IMMER als gelesen gilt (einfach weil es in einem gewissen Sinn „alt“ ist). Falls „MaintainReadPostingsPerPerson“ für das angegebene Forum (in „ForumSettings“) auf „1“ steht, wird von jeder Prozedur, die Postings inkl. „Body“ ausgibt, in der Tabelle „ReadPostingsPerPerson“ festgehalten, welche Person welches Posting schon gelesen hat.
⇒ Wurde das Posting vor „HoursAfterPostingsAreRegardedAsRead“ Stunden verfaßt ODER gibt es zur Person, die diese Prozedur aufruft, einen Eintrag in „ReadPostingsPerPerson“, ist „AlreadyRead = 1“.
Anmerkungen zum Parameter „Visibility“ :
1. Je nach „Visibility“ müssen natürlich entsprechende Rechte vorhanden sein. Falls die Identifizierung fehlschlägt oder in „UniqueID“ der Wert „defaultUniqueID“ angegeben wird, wird die anonyme Person - „PersonID = 0“ - gewählt. Aus Komplexitäts-und Performance-Gründen müssen für ein Forum, das durchsucht wird, ALLE entsprechenden Rechte vorhanden sein.
Beispiel : „Visibility = 6“ (sichtbare und nicht bestätigte Postings) - In diesem Fall muß die identifizierte Person für das/die zu untersuchende(n) Forum/Foren sowohl lesenden Zugriff haben als auch das Recht zum Bestätigen von Beiträgen besitzen !
2. Aus Performance-Gründen kann im Falle fehlender Berechtigung(en) für ein Forum nicht zwischen den Fehlern „-800“, „-802“ und „-805“ unterschieden werden, d.h. es wird dann immer „-800“ zurückgegeben !
Anmerkung zum Parameter „GetOwnNotApprovedPostings“ :
Falls die identifizierte Person und „PersonID“ nicht identisch sind, wird dieser Parameter nicht beachtet (es gibt also keinen Fehler).
Anmerkung zum Parameter „RowCount“ :
Entgegen der sonst üblichen Verhaltensweise wird aber dabei NICHT die durch „OrderCriteria“ angegebene Sortierung beachtet (auch wenn dies bei gegebener „ForumID“ und „OrderCriteria = 1“ so scheint) !
Hintergrund ist Performance bzw. Code-Komplexität, insbesondere im Zusammenspiel mit einer „vernünftigen Logik“ im Falle MEHRERER gegebener „ForumID“s (in „OneID“) : Soll in so einem Fall „RowCount“ pro Forum gelten ? Wenn ja, dann kann es u.U. ziemlich viele Datensätze geben, falls nein (so ist quasi die derzeitige Implementierung), fehlen dann natürlich oftmals Foren ganz. Daher wurde die Funktionalität bzgl. „RowCount“ so simpel wie möglich gehalten und ausschließlich das Hauptziel verfolgt, die Anzahl zurückgegebener Datensätze (um damit I/Os) auf JEDEN FALL in Grenzen zu halten.
HTTP-Method | GET |
HTTP-Auth | Optional |
Tags | |
Engine-Kategorie | forums |
Engine-Typ | Daten-Ermittlung |
Letzte Aktualisierung | 7.0.7 (2015-01-29) |
Name 1) | Standard-Wert | Beschreibung 2) | SQL-Datentyp3) | ab Version |
---|---|---|---|---|
PersonIdentificationValues | Liste von Werten, die den Forum-Teilnehmer identifizieren. Diese Werte müssen Eigenschaften zu den Merkmal-IDs sein, die in „PersonTypeSettings“ zur „PersonTypeID“ zum Schlüssel „PersonIdentificationIDs“ hinterlegt sind. | varchar(255) | 3.5.10 | |
PersonTypeID | ID des Personen-Typs dem der zu identifizierende Forum-Teilnehmer angehört. Dieser muß bei einer Identifizierung immer mit angegeben werden, da die Merkmale zur Identifizierung pro Personentyp variieren können. | tinyint | 3.5.10 | |
UniqueID | Eindeutige ID eines Besuchers, die dem zu identifizierenden Forum-Teilnehmer aktuell zugeordnet ist. Falls die Identifizierungsdaten zur Person in „SessionManagement“ (zur „UniqueID“) gespeichert sind, darf „PersonIdentificationValues“ „NULL“ sein. | varchar(50) | 3.5.10 | |
ForumID | ID eines Forums. Wenn angegeben, werden nur Beiträge dieses Forums berücksichtigt, ansonsten die der in „tempdb.dbo.OneID“ angegeben Foren. Wurde auch in „OneID“ nichts übergeben, werden alle Foren durchsucht, auf die die Person entspr. Zugriff hat. | smallint | 3.5.10 | |
PersonID | ID einer Person, zu der man sich Foren-Beiträge ausgeben lassen möchte | integer | 3.5.10 | |
FromDate | NULL | Falls angegeben, werden nur Beiträge berücksichtigt, die NACH diesem Datum verfaßt wurden | datetime | 3.5.10 |
ToDate | NULL | Falls angegeben, werden nur Beiträge berücksichtigt, die VOR diesem Datum verfaßt wurden | datetime | 3.5.10 |
IncludeBodies | 1 | Gibt an, ob in der Rückgabemenge auch der „Body“ (d.h. der Beitrag selbst) des jeweiligen Postings ausgegeben werden soll | bit | 3.5.10 |
RowCount | 50 | Beschränkung der Anzahl Datensätze in der Rückgabemenge (maximal 255, „0“ oder „NULL“ ist nicht erlaubt) - s.a. Anmerkung in der Beschreibung ! | tinyint | 3.5.10 |
IncludeAdditionalInfos | 0 | Wenn hier „1“ angegeben wird, gibt es zusätzliche Rückgabespalten | bit | 3.5.10 |
OrderCriteria | 0 | Gibt an, wie die Rückgabemenge sortiert werden sol l: „0“ : „ForumID“ (aufsteigend), „PostDate“ (absteigend) <> „0“ : „ForumID“ (aufsteigend), „PostDate“ (aufsteigend) | tinyint | 3.5.15 |
Visibility | 12 | Nur Postings beachten, die einen bestimmten „Sichtbarkeitsstatus“ („Visible“ in „ForumPostings“) haben; für eine Filterung nach mehreren „Visible“-Status gibt man einfach die entsprechende Summe an. Mögliche Werte : siehe fo_GetPostingVisibilities. | tinyint | 4.0.4 |
GetOwnNotApprovedPostings | 0 | Sind die identifizierte Person und „PersonID“ identisch und übergibt man hier „1“, werden außer den „Visibility“ entsprechenden Beiträgen auch eigene (d.h. Autor ist „PersonID“), unbestätigte Beiträge (dazu ist lesender Zugriff erforderlich) beachtet. | bit | 4.0.5 |
SeparatorInIdentVals | '¶' | Gibt an, durch welche Zeichen die Werte in „PersonIdentificationValues“ getrennt sind | varchar(4) | 5.5.0 |
Spaltenname | Beschreibung | SQL-Datentyp4) | ab Version |
---|---|---|---|
ForumID | ID eines Forums, in dem der Beitrag „PostingID“ verfaßt wurde | smallint | 3.5.15 |
PostingID | ID eines Beitrags, der von „PersonID“ geschrieben wurde | integer | 3.5.10 |
ReplyToPostingID | ID des Postings, auf das „PostingID“ eine Antwort darstellt. Falls gleich „PostingID“, handelt es sich um einen Haupt-Beitrag, sprich „MainPosting“ | integer | 3.5.10 |
MainPostingID | ID des Haupt-Beitrages zu „PostingID“ (also sozusagen das Wurzel-Element des gesamten „Threads“ zu dem „PostingID“ gehört) | integer | 3.5.10 |
PostDate | Datum des Beitrags „PostingID“ | datetime | 3.5.10 |
PostDate_char | „PostDate“ als String im Format : „15.03.2001 20:48:13“ | varchar(19) | 3.5.10 |
Author | Name des Verfassers („PersonID“) des Beitrags „PostingID“, also die Eigenschaft(en) des Autors „PersonID“ zu der (den) Merkmal-ID(s), die in „ForumSettings“ zum Schlüssel „CharacteristicIDsForAuthor_<PersonTypeID von PersonID>“ hinterlegt ist (sind) | varchar(100) | 3.5.10 |
EMailOfAuthor | eMail des Verfassers „Author“ | varchar(100) | 3.5.10 |
Subject | Der Titel des Beitrags „PostingID“ | varchar(255) | 3.5.10 |
Body | Der Beitrag selbst - immer „NULL“ falls „IncludeBodies = 0“ oder wenn „SmallBody“ NICHT „NULL“ ist | text | 3.5.10 |
SmallBody | Hier erscheint der Beitrag selbst, falls er weniger als 256 Zeichen enthält UND „UseSmallBody“ in „ForumSettings“ auf „1“ gesetzt UND „IncludeBodies = 1“ ist. D.h. mindestens EINE der Rückgabespalten „SmallBody“ und „Body“ ist IMMER „NULL“. | varchar(255) | 3.5.17 |
Visible | Sichtbarkeits-Status des Postings „PostingID“ - mögliche Werte : siehe fo_GetPostingVisibilities | tinyint | 3.5.20 |
wenn OrderCriteria = 0
wenn OrderCriteria <> 0
Spaltenname | Beschreibung | SQL-Datentyp5) | ab Version |
---|---|---|---|
ForumID | ID eines Forums, in dem der Beitrag „PostingID“ verfaßt wurde | smallint | 3.5.15 |
PostingID | ID eines Beitrags, der von „PersonID“ geschrieben wurde | integer | 3.5.10 |
ReplyToPostingID | ID des Postings, auf das „PostingID“ eine Antwort darstellt. Falls gleich „PostingID“, handelt es sich um einen Haupt-Beitrag, sprich „MainPosting“ | integer | 3.5.10 |
MainPostingID | ID des Haupt-Beitrages zu „PostingID“ (also sozusagen das Wurzel-Element des gesamten „Threads“ zu dem „PostingID“ gehört) | integer | 3.5.10 |
PostDate | Datum des Beitrags „PostingID“ | datetime | 3.5.10 |
PostDate_char | „PostDate“ als String im Format : „15.03.2001 20:48:13“ | varchar(19) | 3.5.10 |
Author | Name des Verfassers („PersonID“) des Beitrags „PostingID“, also die Eigenschaft(en) des Autors „PersonID“ zu der (den) Merkmal-ID(s), die in „ForumSettings“ zum Schlüssel „CharacteristicIDsForAuthor_<PersonTypeID von PersonID>“ hinterlegt ist (sind) | varchar(100) | 3.5.10 |
EMailOfAuthor | eMail des Verfassers „Author“ | varchar(100) | 3.5.10 |
Subject | Der Titel des Beitrags „PostingID“ | varchar(255) | 3.5.10 |
Body | Der Beitrag selbst - immer „NULL“ falls „IncludeBodies = 0“ oder wenn „SmallBody“ NICHT „NULL“ ist | text | 3.5.10 |
HasSuccessors | Gibt es wenigstens eine Antwort auf „PostingID“ ? Dabei zählen nur Beiträge, die einen „Visibility“ entsprechenden „Sichtbarkeits-Status“ haben bzw. unbestätigt sind, falls „GetOwnNotApprovedPosting = 1“ und der Autor die identifizierte Person ist ! | bit | 3.5.10 |
HasBinaries | Sind „Binaries“ zu dem Posting „PostingID“ vorhanden ? | bit | 3.5.10 |
AlreadyRead | Wurde das Posting vor „HoursAfterPostingsAreRegardedAsRead“ (Eintrag in „ForumSettings“) Stunden verfaßt ODER gibt es zur Person, die diese Prozedur aufruft, einen Eintrag in „ReadPostingsPerPerson“, steht hier der Wert „1“ | bit | 3.5.10 |
SmallBody | Hier erscheint der Beitrag selbst, falls er weniger als 256 Zeichen enthält UND „UseSmallBody“ in „ForumSettings“ auf „1“ gesetzt UND „IncludeBodies = 1“ ist. D.h. mindestens EINE der Rückgabespalten „SmallBody“ und „Body“ ist IMMER „NULL“. | varchar(255) | 3.5.17 |
Visible | Sichtbarkeits-Status des Postings „PostingID“ - mögliche Werte : siehe fo_GetPostingVisibilities | tinyint | 3.5.20 |
wenn OrderCriteria = 0
wenn OrderCriteria <> 0
Die Prozedur hat keine Output-Parameter.
Code | Beschreibung | Quelle 6) |
---|---|---|
-800 | Kein Zugriff auf das Forum | direkt und indirekt |
-660 | Identifikation fehlgeschlagen | nur indirekt |
-621 | Fehlender oder falscher Eintrag in PersonTypeSettings | nur indirekt |
-602 | Zur defaultUniqueID („VisitorID = -2“) können keinerlei Daten gespeichert oder verändert werden | nur indirekt |
-599 | Lizenz ist ungültig oder abgelaufen | nur indirekt |
-569 | Der Benutzer hat kein Ausführungsrecht für die Prozedur | nur indirekt |
-567 | Die Prozedur darf z. Zt. nicht ausgeführt werden | nur indirekt |
-566 | Die Prozedur darf mit den übergebenen Parametern nicht ausgeführt werden | nur indirekt |
-550 | Fehlender oder falscher Eintrag in Settings | nur indirekt |
-535 | Das Datum liegt nicht in der Vergangenheit | nur indirekt |
-530 | Der Wert ist nicht konvertierbar | nur indirekt |
-510 | Der Benutzer ist nicht registriert | nur indirekt |
-504 | Es ist ein Problem aufgetreten, das nicht gelöst werden kann, Prozedur wird daher abgebrochen | nur indirekt |
-502 | Die Parameter-Werte der Prozedur können nicht verarbeitet werden (kein passendes Trennzeichen) | nur indirekt |
-500 | Falsche Parameter | direkt und indirekt |
Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema Response/EngineProcedure_v1_0.xsd validiert.
7.0.7 | 2015-01-29 | „Start-/Finish-Procedure“-Logik eingebaut, s. Ticket #3670 |
6.5.3 | 2013-03-18 | Anpassungen an aktuellen Code-Standard, u.a. wg. UTF8-Unterstützung |
6.5.0 | 2012-09-17 | 1. Wird in „UniqueID“ die „DefaultUniqueID“ angegeben, wird nun der Aufrufer als „anonyme Person“ identifiziert (vorher gab es einen Fehler) 2. „RowCount“ : Doku ergänzt, „NULL“ ist nicht mehr erlaubt |
5.5.0 | 2008-01-07 | 1. Neuer Parameter „SeparatorInIdentVals“ 2. Ausgabe an die Standard-Ausgabe [via „print“] im Fehler-Fall „-500“, die nähere Informationen über die Ursache enthält 3. Bearbeitung des Quellcodes hinsichtlich neuer Konventionen |
5.1.4 | 2006-08-14 | 1. Konsequente Fehlerbehandlung 2. Explizites „ORDER BY“ eingefügt, um die Sortierung der Rückgabemenge zu garantieren |
4.0.5 | 2003-10-04 | 1. Neuer Parameter „GetOwnNotApprovedPostings“ 2. Für „HasSuccessors“ wurden bisher sichtbare oder sichtbar und abgeschlossene Antworten herangezogen; jetzt werden „Visibility“ und „GetOwnNotApprovedPostings“ entsprechende Antworten berücksichtigt |
4.0.4 | 2003-08-26 | 1. Ist „ForumID“ mit „NULL“ angegeben und wurden in „tempdb.dbo.OneID“ KEINE „ForumID“s übergeben, werden ab jetzt nur Foren beachtet, auf die die identifizierte Person auch Zugriff hat 2. Neuer Parameter „Visibility“ 3. Interne Änderungen |
4.0.3 | 2003-07-10 | 1. Es wurde eine interne Variable verwendet, die gar nicht initialisiert wurde 2. Fehlende Index-Angabe in einem Fall 3. Es wurde fälschlicherweise davon ausgegangen, daß der „Settings“-Eintrag „HoursAfterPostingsAreRegardedAsRead“ immer vorhanden ist |
4.0.0 | 2003-04-03 | 1. Diverse Fehler im Fall „IncludeBodies = 0“ behoben (die seit 3.5.15 bestanden) 2. Performanceverbesserung durch bessere Ausnutzung eines Index. Unter anderem stimmten bei bestimmten Joins die Datentypen nicht überein ! |
3.5.20 | 2002-07-22 | |
3.5.18 | 2002-05-15 | |
3.5.17 | 2002-05-02 | |
3.5.15 | 2002-03-12 | |
3.5.11 | 2001-09-06 | |
3.5.10 | 2001-07-14 | Erstmalig in dieser Version erstellt |
Der folgende Link öffnet in einem separaten Fenster den Engine Playground der fest mit dem dbap-demo System verbunden ist:
Unformatierte Ausgabe:
curl -X GET 'http://<partner>-<project>.dstore.de/default/engine/fo_GetPostingsOfOnePerson_Pu?PersonIdentificationValues=<value>&PersonTypeID=<value>&UniqueID=<value>&ForumID=<value>&PersonID=<value>'
Mit xmllint 7) formatierte Ausgabe:
curl -X GET 'http://<partner>-<project>.dstore.de/default/engine/fo_GetPostingsOfOnePerson_Pu?PersonIdentificationValues=<value>&PersonTypeID=<value>&UniqueID=<value>&ForumID=<value>&PersonID=<value>' | xmllint --format -
use dStore_php\WebService; $service = new WebService\Service( WebService\Scheme::HTTP,'<partner>-<project>.dstore.de', 80); $request = new WebService\Requests\Engine\Procedure\Request( new WebService\Requests\AccessData('default'), 'fo_GetPostingsOfOnePerson_Pu', array( 'PersonIdentificationValues' => '<value>', 'PersonTypeID' => <value>, 'UniqueID' => '<value>', 'ForumID' => <value>, 'PersonID' => <value>, // 'FromDate' => NULL, // 'ToDate' => NULL, // 'IncludeBodies' => 1, // 'RowCount' => 50, // 'IncludeAdditionalInfos' => 0, // 'OrderCriteria' => 0, // 'Visibility' => 12, // 'GetOwnNotApprovedPostings' => 0, // 'SeparatorInIdentVals' => '¶' ) ); $service->execute($request); $xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument(); $ResultSet = $xml_result->getRowsAsArray();
XML zur Ausführung mit der Methode engine/execute, z.B. per
curl --header 'Content-Type: application/xml' -X POST 'http://<partner>-<kunde>.dstore.de/default/engine/execute' -d '<xml-daten>'
<?xml version="1.0" encoding="UTF-8"?> <ListOfBatches> <Batch No="0"> <Procedure Name="fo_GetPostingsOfOnePerson_Pu"> <Parameters> <Parameter Name="PersonIdentificationValues"><!-- varchar value --></Parameter> <Parameter Name="PersonTypeID"><!-- tinyint value --></Parameter> <Parameter Name="UniqueID"><!-- varchar value --></Parameter> <Parameter Name="ForumID"><!-- smallint value --></Parameter> <Parameter Name="PersonID"><!-- integer value --></Parameter> <!-- <Parameter Name="FromDate">NULL</Parameter> --> <!-- <Parameter Name="ToDate">NULL</Parameter> --> <!-- <Parameter Name="IncludeBodies">1</Parameter> --> <!-- <Parameter Name="RowCount">50</Parameter> --> <!-- <Parameter Name="IncludeAdditionalInfos">0</Parameter> --> <!-- <Parameter Name="OrderCriteria">0</Parameter> --> <!-- <Parameter Name="Visibility">12</Parameter> --> <!-- <Parameter Name="GetOwnNotApprovedPostings">0</Parameter> --> <!-- <Parameter Name="SeparatorInIdentVals">'¶'</Parameter> --> </Parameters> </Procedure> </Batch> </ListOfBatches>