Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:fo_getpostingsofoneperson_pu

fo_GetPostingsOfOnePerson_Pu

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-MethodGET
HTTP-AuthOptional
Tags
Engine-Kategorieforums
Engine-TypDaten-Ermittlung
Letzte Aktualisierung7.0.7 (2015-01-29)

Parameter

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.
tinyint3.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.
smallint3.5.10
PersonID ID einer Person, zu der man sich Foren-Beiträge ausgeben lassen möchte
integer3.5.10
FromDateNULL Falls angegeben, werden nur Beiträge berücksichtigt, die NACH diesem Datum verfaßt wurden
datetime3.5.10
ToDateNULL Falls angegeben, werden nur Beiträge berücksichtigt, die VOR diesem Datum verfaßt wurden
datetime3.5.10
IncludeBodies1 Gibt an, ob in der Rückgabemenge auch der „Body“ (d.h. der Beitrag selbst) des jeweiligen Postings ausgegeben werden soll
bit3.5.10
RowCount50 Beschränkung der Anzahl Datensätze in der Rückgabemenge (maximal 255, „0“ oder „NULL“ ist nicht erlaubt) - s.a. Anmerkung in der Beschreibung !
tinyint3.5.10
IncludeAdditionalInfos0 Wenn hier „1“ angegeben wird, gibt es zusätzliche Rückgabespalten
bit3.5.10
OrderCriteria0 Gibt an, wie die Rückgabemenge sortiert werden sol l:
„0“ : „ForumID“ (aufsteigend), „PostDate“ (absteigend)
<> „0“ : „ForumID“ (aufsteigend), „PostDate“ (aufsteigend)
tinyint3.5.15
Visibility12 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.
tinyint4.0.4
GetOwnNotApprovedPostings0 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.
bit4.0.5
SeparatorInIdentVals'¶' Gibt an, durch welche Zeichen die Werte in „PersonIdentificationValues“ getrennt sind
varchar(4)5.5.0

Rückgabe

wenn IncludeAdditionalInfos = 0

Spaltenname Beschreibung SQL-Datentyp4) ab Version
ForumIDID eines Forums, in dem der Beitrag „PostingID“ verfaßt wurde
smallint3.5.15
PostingIDID eines Beitrags, der von „PersonID“ geschrieben wurde
integer3.5.10
ReplyToPostingIDID des Postings, auf das „PostingID“ eine Antwort darstellt. Falls gleich „PostingID“, handelt es sich um einen Haupt-Beitrag, sprich „MainPosting“
integer3.5.10
MainPostingIDID des Haupt-Beitrages zu „PostingID“ (also sozusagen das Wurzel-Element des gesamten „Threads“ zu dem „PostingID“ gehört)
integer3.5.10
PostDateDatum des Beitrags „PostingID“
datetime3.5.10
PostDate_char„PostDate“ als String im Format : „15.03.2001 20:48:13“
varchar(19)3.5.10
AuthorName 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
EMailOfAuthoreMail des Verfassers „Author“
varchar(100)3.5.10
SubjectDer Titel des Beitrags „PostingID“
varchar(255)3.5.10
BodyDer Beitrag selbst - immer „NULL“ falls „IncludeBodies = 0“ oder wenn „SmallBody“ NICHT „NULL“ ist
text3.5.10
SmallBodyHier 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
VisibleSichtbarkeits-Status des Postings „PostingID“ - mögliche Werte : siehe fo_GetPostingVisibilities
tinyint3.5.20
Sortierungen der Rückgabe

wenn OrderCriteria = 0

  • ForumID (aufsteigend)
  • PostDate (absteigend)

wenn OrderCriteria <> 0

  • ForumID (aufsteigend)
  • PostDate (aufsteigend)

wenn IncludeAdditionalInfos = 1

Spaltenname Beschreibung SQL-Datentyp5) ab Version
ForumIDID eines Forums, in dem der Beitrag „PostingID“ verfaßt wurde
smallint3.5.15
PostingIDID eines Beitrags, der von „PersonID“ geschrieben wurde
integer3.5.10
ReplyToPostingIDID des Postings, auf das „PostingID“ eine Antwort darstellt. Falls gleich „PostingID“, handelt es sich um einen Haupt-Beitrag, sprich „MainPosting“
integer3.5.10
MainPostingIDID des Haupt-Beitrages zu „PostingID“ (also sozusagen das Wurzel-Element des gesamten „Threads“ zu dem „PostingID“ gehört)
integer3.5.10
PostDateDatum des Beitrags „PostingID“
datetime3.5.10
PostDate_char„PostDate“ als String im Format : „15.03.2001 20:48:13“
varchar(19)3.5.10
AuthorName 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
EMailOfAuthoreMail des Verfassers „Author“
varchar(100)3.5.10
SubjectDer Titel des Beitrags „PostingID“
varchar(255)3.5.10
BodyDer Beitrag selbst - immer „NULL“ falls „IncludeBodies = 0“ oder wenn „SmallBody“ NICHT „NULL“ ist
text3.5.10
HasSuccessorsGibt 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 !
bit3.5.10
HasBinariesSind „Binaries“ zu dem Posting „PostingID“ vorhanden ?
bit3.5.10
AlreadyReadWurde 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“
bit3.5.10
SmallBodyHier 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
VisibleSichtbarkeits-Status des Postings „PostingID“ - mögliche Werte : siehe fo_GetPostingVisibilities
tinyint3.5.20
Sortierungen der Rückgabe

wenn OrderCriteria = 0

  • ForumID (aufsteigend)
  • PostDate (absteigend)

wenn OrderCriteria <> 0

  • ForumID (aufsteigend)
  • PostDate (aufsteigend)

Output-Parameter

Die Prozedur hat keine Output-Parameter.

Mögliche Return-Codes

Code Beschreibung Quelle 6)
-800Kein Zugriff auf das Forumdirekt und indirekt
-660Identifikation fehlgeschlagennur indirekt
-621Fehlender oder falscher Eintrag in PersonTypeSettingsnur indirekt
-602Zur defaultUniqueID („VisitorID = -2“) können keinerlei Daten gespeichert oder verändert werdennur indirekt
-599Lizenz ist ungültig oder abgelaufennur indirekt
-569Der Benutzer hat kein Ausführungsrecht für die Prozedurnur indirekt
-567Die Prozedur darf z. Zt. nicht ausgeführt werdennur indirekt
-566Die Prozedur darf mit den übergebenen Parametern nicht ausgeführt werdennur indirekt
-550Fehlender oder falscher Eintrag in Settingsnur indirekt
-535Das Datum liegt nicht in der Vergangenheitnur indirekt
-530Der Wert ist nicht konvertierbarnur indirekt
-510Der Benutzer ist nicht registriertnur indirekt
-504Es ist ein Problem aufgetreten, das nicht gelöst werden kann, Prozedur wird daher abgebrochennur indirekt
-502Die Parameter-Werte der Prozedur können nicht verarbeitet werden (kein passendes Trennzeichen)nur indirekt
-500Falsche Parameterdirekt und indirekt

XML-Schema

Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema Response/EngineProcedure_v1_0.xsd validiert.

Historie

7.0.7 2015-01-29„Start-/Finish-Procedure“-Logik eingebaut, s. Ticket #3670
6.5.3 2013-03-18Anpassungen an aktuellen Code-Standard, u.a. wg. UTF8-Unterstützung
6.5.0 2012-09-171. 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-071. 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-141. Konsequente Fehlerbehandlung
2. Explizites „ORDER BY“ eingefügt, um die Sortierung der Rückgabemenge zu garantieren
4.0.5 2003-10-041. 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-261. 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-101. 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-031. 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-14Erstmalig in dieser Version erstellt

Code-Snippets

Engine Playground

Der folgende Link öffnet in einem separaten Fenster den Engine Playground der fest mit dem dbap-demo System verbunden ist:

cURL

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 -
dStore_php
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();
engine/execute

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>
1)
Pflichtparameter sind unterstrichen
6)
direkt meint „von der Prozedur selber“ und indirekt meint „von intern aufgerufenen Unterprozeduren“
7)
I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org
engine/procedures/fo_getpostingsofoneperson_pu.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)