Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— |
engine:procedures:fo_searchpostings_pu [11.01.2016 ] (aktuell) |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ===== fo_SearchPostings_Pu ===== | ||
+ | |||
+ | Prozedur zur Suche von Beiträgen in einem Forum.\\ | ||
+ | |||
+ | Wie immer werden natürlich eine Identifizierung durchgeführt und die Berechtigungen (es müssen Lese-Rechte vorhanden sein) der entsprechenden Person für das Forum, zu dem der Beitrag gehört, überprüft.\\ Falls die Identifizierung fehlschlägt oder in "UniqueID" der Wert "defaultUniqueID" angegeben wird, werden die Rechte für die anonyme Person (mit der speziellen "PersonID = 0") gecheckt.\\ | ||
+ | |||
+ | Es wird grundsätzlich nach zwei Arten von Suchen unterschieden :\\ | ||
+ | |||
+ | A) Suche anhand der "Wörter" der Beiträge und/oder dem Erstellungs-Zeitpunkt.\\ Anmerkung : Grundlage ist die Tabelle "SearchPostings", die NUR gepflegt wird, wenn beim Erstellen/Ändern eines Beitrags ([[dstoreproc>fo_InsertPosting_Pu]] bzw. [[dstoreproc>fo_ModifyPosting_Pu]]) die Suchbegriffe (in der Regel die Wörter, aus denen "Subject" und "Body" bestehen) angegeben werden und der Parameter "MaintainSearchPostings" auf "1" gesetzt ist !\\ | ||
+ | |||
+ | B) Suche anhand von "Properties". Dabei handelt es sich um Eigenschaften zu Beiträgen.\\ Anmerkung : Diese werden ebenfalls von der jeweiligen "Client-Anwendung" gepflegt, sieht z.B. [[dstoreproc>fo_ModifyPostingProperties_Pu]]\\ | ||
+ | |||
+ | |||
+ | |||
+ | Hinweise zur "Suchvariante" A)\\ | ||
+ | |||
+ | Diese Suchvariante wird genau dann angewendet, wenn "NULL" für den Parameter "PostingCharacteristicIDList" angegeben ist.\\ | ||
+ | |||
+ | Die Wörter bzw. Wortteile, nach denen gesucht werden soll, sind über "tempdb.dbo.AnyValues" anzugeben, wobei folgendes gilt :\\ "Value"s mit gleicher "ID" stellen einen "Bedingungsblock" dar und werden mit "und" verknüpft; die Bedingungsblöcke werden mit "oder" verknüpft. Seit Version 4.0.0 ist es aber auch möglich, keine Suchbegriffe zu übergeben und nur nach dem Datum zu suchen (-> "FromDate", "ToDate") !\\ | ||
+ | |||
+ | Beispiel :\\ | ||
+ | |||
+ | ID Value \\ --------------- \\ 1 hallo\\ 1 welt\\ 2 42\\ | ||
+ | |||
+ | Bedeutet : Suche alle Postings, in denen die Wörter "hallo" UND "welt" vorkommen ODER in denen das Wort "42" vorkommt.\\ | ||
+ | |||
+ | WICHTIGE Anmerkungen:\\ 1. Die Wörter bzw. Wortteile, nach denen gesucht werden soll, sind KOMPLETT in KLEINBUCHSTABEN ("lowercase") anzugeben, weil intern alle Wörter (gespeichert in der Tabelle "SearchPostings_Words") in Kleinbuchstaben hinterlegt sind !\\ 2.Die Wörter in "SearchPostings_Words" sind maximal 100 Zeichen lang (d.h. man kann die mehr als 200 möglichen Zeichen in "tempdb.dbo.AnyValues" NICHT voll nutzen).\\ 3. Möchte man die Postings suchen, die ein Wort enthalten, das mit einer bestimmten Zeichenfolge BEGINNT, muß in "Value" der Wert mit einem '%' am Ende stehen UND der Parameter "SearchWithLikeOperator" muß auf "1" gesetzt sein. Bei diesem Vorgehen muß jedoch darauf geachtet werden, dass der Suchbegriff nicht mit einem der Wildcards '%', '_', '[', ']' oder '^' beginnt, da sonst der Index auf SearchPostingsWords nicht benutzt werden kann. Es ist tatsächlich ein Performance-Unterschied, ob man z.B. mit "... LIKE 'hallo' ..." oder "... = 'hallo' ..." sucht, deswegen sollte dieser Parameter nur wenn unbedingt gewünscht auf "1" gesetzt sein !\\ | ||
+ | |||
+ | |||
+ | |||
+ | Hinweise zur "Suchvariante" B)\\ | ||
+ | |||
+ | Ermittelt werden alle Beiträge, deren Eigenschaften zu den durch "PostingCharacteristicIDList" angegebenen Merkmalen die in "ConditionList" aufgeführten Bedingungen erfüllen (die Elemente in den Listen sind jeweils durch "¶" zu trennen).\\ Für Vergleichsoperationen müssen die einzelnen Bedingungen in "ConditionList" ein entsprechendes Format haben : | ||
+ | * Wert : "Like" Wert | ||
+ | * ~Wert : "Like" Wert, aber case-INsensitiv | ||
+ | * ^Wert : "soundex(Wert)" | ||
+ | * {Wert : "<>" Wert | ||
+ | * (Wert : ">=" Wert | ||
+ | * Wert) : "<=" Wert | ||
+ | * [Wert : ">" Wert | ||
+ | * Wert] : "<" Wert | ||
+ | * (Wert1%%|%%Wert2) : ">=" Wert1 und "<=" Wert2 | ||
+ | * (Wert1%%|%%Wert2] : ">=" Wert1 und "<" Wert2 | ||
+ | * [Wert1%%|%%Wert2) : ">" Wert1 und "<=" Wert2 | ||
+ | * [Wert1%%|%%Wert2] : ">" Wert1 und "<" Wert2 | ||
+ | --- | ||
+ | * {} oder {) oder {] oder (} oder () oder (] oder [} oder [) oder [] : Postings, die KEINE Eigenschaft zum Mermal haben | ||
+ | |||
+ | |||
+ | Sofern eine Bedingung (in "ConditionList") eines der Formate <Wert> oder <~Wert> ("LIKE"-Suche nach <Wert>) hat, können sogenannte "Platzhalter" (o.a. "wildcards") verwendet werden : | ||
+ | * '_' oder '?' : Platzhalter für EIN Zeichen | ||
+ | * '%' oder '*' : Platzhalter für eine ZeichenKETTE | ||
+ | |||
+ | |||
+ | Weitere Hinweise :\\ 1. Um nach einem Wert zu suchen, der mit "[" oder "(" oder "{" oder "~" oder "^" beginnt oder der mit "]" oder ")" oder "}" endet, muß man den "~"-Operator verwenden (z.B. "~[*" angeben, um nach Werten zu suchen, die mit "[" beginnen)\\ 2. Soll nach einem Platzhalter-Zeichen gesucht werden, ist dieses Zeichen 2mal hintereinander einzugeben (z.B. würde durch Angabe von "<nowiki>%%</nowiki>%" nach Werten gesucht werden, die mit "%" beginnen)\\ 3. Im Falle einer "LIKE"-Suche (Format "Wert" oder "~Wert") werden (in dieser Reihenfolge !) folgende Ersetzungen vorgenommen : | ||
+ | * "?" durch "_", ausgenommen "??" (diese Zeichenkette wird durch "?" ersetzt) | ||
+ | * "*" durch "%", ausgenommen "**" (diese Zeichenkette wird durch "*" ersetzt | ||
+ | * "%%__%%" durch "[_] (um nach dem Zeichen "_" selbst suchen zu können) | ||
+ | * "<nowiki>%%</nowiki>" durch "[%] (um nach dem Zeichen "%" selbst suchen zu können) | ||
+ | => Daher wird z.B. "?_" sowie "_?" durch "[_]" ersetzt, oder "*%" sowie "%*" durch "[%]". Allerdings wird z.B. "%%__%%?" durch "[_]_" ersetzt !\\ | ||
+ | |||
+ | Posting-Eigenschaften sind grundsätzlich immer an eine "PersonID" gebunden (die besondere ID "0" bedeutet, daß die Eigenschaft "allgemein" zum Beitrag hinterlegt ist), daher bietet der Parameter "FilterByPersonIDList" die Möglichkeit, hiernach zu filtern.\\ In diesem Parameter muß eine Liste von Elementen (durch "¶" getrennt) angegeben werden, die jeweils zur an entsrechender Stelle in "PostingCharacteristicIDList" befindlichen Merkmal-ID korrespondiert.\\ Diese Elemente müssen jeweils die Form <PersonID>_<FilterCriteria> haben, wobei <FilterCriteria> ein "tinyint"-Wert ist, der angibt, WIE nach der <PersonID> zu filtern ist : | ||
+ | * "0" : Nur Eigenschaften, die zur "PersonID" hinterlegt sind | ||
+ | * "1" : Nur Eigenschaften, die NICHT zur "PersonID" hinterlegt sind | ||
+ | * "2" : Nur Eigenschaften, die zur "PersonID" ODER zur "PersonID = 0" hinterlegt sind | ||
+ | Weitere Hinweise :\\ 1. Ist für eine Suchbedingung KEINE Filterung nach einer "PersonID" angegeben, wird implizit IMMER eine Einschränkung nach der identifizierten Person vorgenommen (im folgenden abgekürzt durch "IdentifiedPersonID"), und zwar mit dem Filter-Kriterium "2". D.h. es werden dann nur Eigenschaften berücksichtigt, die zur "IdentifiedPersonID" ODER zur "PersonID = 0" hinterlegt sind !\\ 2. Derzeit ist es nur erlaubt in EIGENEN oder ALLGEMEINEN Eigenschaften zu suchen, d.h. bei "PersonID" MUSS es sich entweder um "IdentifiedPersonID" oder um die ID "0" handeln !\\ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | Anmerkungen zum Parameter "Visibility" :\\ 1. Sofern auch gelöschte Beiträge berücksichtigt werden sollen, muß die identifizierte Person für das Forum mindestens eines der folgenden Rechte besitzen :\\ "16" : "löschen eigener Postings, sofern keine Replies vorhanden"\\ "32" : "löschen eigener Postings (inkl. Replies)"\\ "128" : "löschen aller Postings des Forums, sofern keine Replies vorhanden"\\ "256" : "löschen aller Postings des Forums (inkl. Replies)"\\ Besitzt die Person nur das Recht "16" oder "32" wird zudem nur in EIGENEN (Author entspricht der identifizierten Person) gelöschten Beiträge gesucht !\\ 2. Sollen nicht bestätigte Beiträge berücksichtigt werden, benötigt die identifizierte Person das Recht\\ "64" : "bestätigen von Postings des Forums"\\ für das Forum.\\ 3. Falls die Identifizierung fehlschlägt, werden die Rechte für die anonyme Person (mit der speziellen "PersonID = 0") gecheckt.\\ | ||
+ | |||
+ | |||
+ | |||
+ | Anmerkungen zum Parameter "OutputIntoOneID" :\\ Alternativ zu einer Rückgabemenge kann man sich die "PostingID"s auch in "tempdb.dbo.OneID" einfügen lassen (für einen anschließenden Aufruf von [[dstoreproc>fo_GetPostingProperties_Pu]] z.B.). Dazu ist "OutputIntoOneID" auf "1" zu setzen. Möchte man sowohl eine Ergebnismenge erhalten, als auch die "PostingID"s in "OneID" einfügen lassen, übergibt man für besagten Parameter den Wert "2".\\ Möchte man quasi "ODER"-Suchen durchführen, macht es Sinn, daß man das Suchergebnis zu evtl. bereits vorhandenen "PostingID"s in "tempdb.dbo.OneID" HINZUfügen läßt. Dazu ist für "OutputIntoOneID" der Wert "3" anzugeben. Um gleichzeitig wiederum auch eine Ergebnismenge zu erhalten, setzt man den Parameter auf "4".\\ | ||
+ | |HTTP-Method|GET | | ||
+ | |HTTP-Auth|Optional | | ||
+ | |Tags|{{tag>[fo Search Postings Pu]}}| | ||
+ | |Engine-Kategorie|forums | | ||
+ | |Engine-Typ|Daten-Ermittlung | | ||
+ | |Letzte Aktualisierung|7.0.7 (2015-01-29)| | ||
+ | |||
+ | ==== Parameter ==== | ||
+ | |||
+ | ^Name ((Pflichtparameter sind unterstrichen)) ^Standard-Wert ^Beschreibung ((siehe [[webservice:engine_parameterconventions|Parameter-Konventionen engine/<Prozedur-Name>]])) ^SQL-Datentyp((siehe [[:webservice:engine_datatypes|Datentypen im Bereich "engine"]])) ^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.7| | ||
+ | |__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.7| | ||
+ | |__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.7| | ||
+ | |__ForumID__| |ID eines Forums, in dem gesucht werden soll\\ |smallint|3.5.7| | ||
+ | |SearchWithLikeOperator|0 |Gibt an, wie die in "tempdb.dbo.AnyValues" angegebenen Suchwörter verglichen werden sollen\\ "0" : Direkter Vergleich\\ "1" : Es wird mit dem LIKE-Operator verglichen (wildcards müssen aber explizit angegeben werden !)\\ |bit|3.5.7| | ||
+ | |IncludePostingBodies|0 |Gibt an, ob in der Rückgabemenge auch der "Body" (d.h. der Beitrag selbst) des jeweiligen Postings ausgegeben werden soll\\ |bit|3.5.7| | ||
+ | |RowCount|50 |Beschränkung der Anzahl Datensätze in der Rückgabemenge (bzw. der IDs, die in "OneID" eingefügt werden, s. "OutputIntoOneID").\\ "0" angeben, um alle Daten zu erhalten/berücksichtigen.\\ Hinweis : "NULL" oder ein Wert kleiner "0" ist nicht erlaubt !\\ |integer|3.5.7| | ||
+ | |IncludeAdditionalInfos|0 |Wenn hier "1" angegeben wird, gibt es zusätzliche Rückgabespalten\\ |bit|3.5.7| | ||
+ | |FromDate|NULL |Falls angegeben, werden nur Beiträge berücksichtigt, die NACH diesem Datum verfaßt wurden\\ |datetime|3.5.7| | ||
+ | |ToDate|NULL |Falls angegeben, werden nur Beiträge berücksichtigt, die VOR diesem Datum verfaßt wurden\\ |datetime|3.5.7| | ||
+ | |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 [[dstoreproc>fo_GetPostingVisibilities]].\\ |tinyint|4.0.5| | ||
+ | |GetOwnNotApprovedPostings|0 |Konnte eine Person identifiziert werden und wird hier "1" übergeben, werden nicht nur "Visibility" entsprechende Beiträge berücksichtigt, sondern auch eigene (d.h. Autor ist die identif. Person), unbestätigte Beiträge (dazu ist lesend. Zugr. erforderl.)\\ |bit|4.0.5| | ||
+ | |OutputIntoOneID|0 |Genaueres : s. Beschreibung !\\ Kurzerläuterung :\\ "0" : Ergebnismenge\\ "1" : IDs in "OneID" einfügen lassen\\ "2" : Ergebnismenge + IDs in "OneID" einfügen\\ "3" : IDs in "OneID" HINZUfügen lassen\\ "4" : Ergebnismenge + IDs "OneID" HINZUfügen\\ |tinyint|4.0.16| | ||
+ | |PostingCharacteristicIDList|NULL |Liste (durch "¶" getrennt) von Merkmal-IDs (zu denen "Postings" Eigenschaften besitzen können). Pro ID muß an entsprechender Stelle in "ConditionList" und "FilterByPersonIDList" eine Bedingungen angegeben sein, die erfüllt sein muß (s. Beschreibung).\\ |varchar(255)|5.0.3| | ||
+ | |ConditionList|NULL |Die zur "PostingCharacteristicIDList" korrespondierenden Suchbedingungen (durch '¶' getrennt, pro ID in "PostingCharacteristicIDList" muß auch eine Bedingung angegeben sein) - siehe Beschreibung !\\ |varchar(255)|5.0.3| | ||
+ | |FilterByPersonIDList|NULL |Die zur "PostingCharacteristicIDList" korrespondierenden Einschränkungen hinsichtlich der "PersonID" (Posting-Eigenschaften sind nämlich immer an eine "PersonID" gebunden). Die Elemente müssen die Form <PersonID>_<FilterCriteria> haben - s. Beschreibung\\ |varchar(255)|5.0.3| | ||
+ | |Country|'Germany' |Falls eine Bedingung in "ConditionList" ein Datums-/Uhrzeitformat hat, muß angegeben sein, um welches Länderformat es sich handelt (Groß-/Kleinschreibung wird nicht beachtet) :\\ 'german', 'germany' : Tag-Monat-Jahr\\ 'english', 'england' : Monat-Tag-Jahr\\ |varchar(10)|5.0.3| | ||
+ | |SearchOnlyPostingsInOneID|0 |Möchte man nicht in allen Beiträgen des Forums "ForumID" suchen, sondern nur in bestimmten Beiträgen, übergibt man für den Parameter "SearchOnlyPostingsInOneID" den Wert "1" und fügt in die Tabelle "tempdb.dbo.OneID" die entsprechenden "PostingIDs" ein.\\ |bit|5.0.3| | ||
+ | |SeparatorInIdentVals|'¶' |Gibt an, durch welche Zeichen die Werte in "PersonIdentificationValues" getrennt sind\\ |varchar(4)|5.5.0| | ||
+ | ==== Rückgabe ==== | ||
+ | |||
+ | === wenn IncludeAdditionalInfos = 0 und OutputIntoOneID IN (0,2,4) === | ||
+ | |||
+ | ^Spaltenname ^Beschreibung ^SQL-Datentyp((siehe [[:webservice:engine_datatypes|Datentypen im Bereich "engine"]])) ^ab Version ^ | ||
+ | |//PostDateSortNo((Spalte wird nicht zurückgegeben und ist hier nur aus Dokumentationsgründen aufgeführt.))//|Wird nur zur Sortierung verwendet. Da der ASE (11.0.3) keine Indizes mit ABsteigender Sortierung erlaubt, enthält diese Spalte immer den negativen Wert von "PostingID" so daß indirekt absteigend nach dem Datum des Beitrags sortiert werden kann.\\ |integer|3.5.7 | | ||
+ | |PostingID|ID eines Beitrags, der von "PersonID" geschrieben wurde\\ |integer|3.5.7 | | ||
+ | |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.7 | | ||
+ | |MainPostingID|ID des Haupt-Beitrages zu "PostingID" (also sozusagen das Wurzel-Element des gesamten "Threads" zu dem "PostingID" gehört)\\ |integer|3.5.7 | | ||
+ | |PostDate|Wann wurde der Beitrag "PostingID" erstellt ?\\ |datetime|3.5.7 | | ||
+ | |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.7 | | ||
+ | |AuthorPersonID|(Person)ID des Verfassers "Author" - "0" bedeutet, daß der Verfasser anonym ist\\ |integer|3.5.7 | | ||
+ | |EMailOfAuthor|eMail des Verfassers "Author"\\ |varchar(100)|3.5.7 | | ||
+ | |Subject|Der Titel des Beitrags "PostingID"\\ |varchar(255)|3.5.7 | | ||
+ | |Body|Der Beitrag selbst - immer "NULL" falls "IncludePostingBodies = 0" oder wenn "SmallBody" NICHT "NULL" ist\\ |text|3.5.7 | | ||
+ | |SmallBody|Hier erscheint der Beitrag selbst, falls er weniger als 256 Zeichen enthält UND "UseSmallBody" in "ForumSettings" auf "1" gesetzt UND "IncludePostingBodies = 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 [[dstoreproc>fo_GetPostingVisibilities]]\\ |tinyint|3.5.20 | | ||
+ | |||
+ | == Sortierung der Rückgabe == | ||
+ | |||
+ | (parameterunabängige Sortierung) | ||
+ | * PostDateSortNo (aufsteigend) | ||
+ | |||
+ | === wenn IncludeAdditionalInfos = 1 und OutputIntoOneID IN (0,2,4) === | ||
+ | |||
+ | ^Spaltenname ^Beschreibung ^SQL-Datentyp((siehe [[:webservice:engine_datatypes|Datentypen im Bereich "engine"]])) ^ab Version ^ | ||
+ | |//PostDateSortNo((Spalte wird nicht zurückgegeben und ist hier nur aus Dokumentationsgründen aufgeführt.))//|Wird nur zur Sortierung verwendet. Da der ASE (11.0.3) keine Indizes mit ABsteigender Sortierung erlaubt, enthält diese Spalte immer den negativen Wert von "PostingID" so daß indirekt absteigend nach dem Datum des Beitrags sortiert werden kann.\\ |integer|3.5.7 | | ||
+ | |PostingID|ID eines Beitrags, der von "PersonID" geschrieben wurde\\ |integer|3.5.7 | | ||
+ | |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.7 | | ||
+ | |MainPostingID|ID des Haupt-Beitrages zu "PostingID" (also sozusagen das Wurzel-Element des gesamten "Threads" zu dem "PostingID" gehört)\\ |integer|3.5.7 | | ||
+ | |PostDate|Wann wurde der Beitrag "PostingID" erstellt ?\\ |datetime|3.5.7 | | ||
+ | |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.7 | | ||
+ | |AuthorPersonID|(Person)ID des Verfassers "Author" - "0" bedeutet, daß der Verfasser anonym ist\\ |integer|3.5.7 | | ||
+ | |EMailOfAuthor|eMail des Verfassers "Author"\\ |varchar(100)|3.5.7 | | ||
+ | |Subject|Der Titel des Beitrags "PostingID"\\ |varchar(255)|3.5.7 | | ||
+ | |Body|Der Beitrag selbst - immer "NULL" falls "IncludePostingBodies = 0" oder wenn "SmallBody" NICHT "NULL" ist\\ |text|3.5.7 | | ||
+ | |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.7 | | ||
+ | |HasBinaries|Sind "Binaries" zu dem Posting "PostingID" vorhanden ?\\ |bit|3.5.7 | | ||
+ | |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.7 | | ||
+ | |SmallBody|Hier erscheint der Beitrag selbst, falls er weniger als 256 Zeichen enthält UND "UseSmallBody" in "ForumSettings" auf "1" gesetzt UND "IncludePostingBodies = 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 [[dstoreproc>fo_GetPostingVisibilities]]\\ |tinyint|3.5.20 | | ||
+ | |||
+ | == Sortierung der Rückgabe == | ||
+ | |||
+ | (parameterunabängige Sortierung) | ||
+ | * PostDateSortNo (aufsteigend) | ||
+ | |||
+ | ==== Output-Parameter ==== | ||
+ | |||
+ | Die Prozedur hat keine Output-Parameter.==== Mögliche Return-Codes ==== | ||
+ | |||
+ | ^Code ^Beschreibung ^Quelle ((direkt meint "von der Prozedur selber" und indirekt meint "von intern aufgerufenen Unterprozeduren")) ^ | ||
+ | |-805|Keine Berechtigung zum Löschen von Postings|nur direkt| | ||
+ | |-802|Keine Berechtigung zum Bestätigen von Postings des Forums|nur direkt| | ||
+ | |-801|Kein lesender Zugriff auf das Forum|nur direkt| | ||
+ | |-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| | ||
+ | |-536|Unerlaubte Zeichen im Suchbegriff|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| | ||
+ | ==== XML-Schema ==== | ||
+ | |||
+ | Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema [[http://resources.dstore.de/xsd/webservice_SmartGate/Response/EngineProcedure_v1_0.xsd|Response/EngineProcedure_v1_0.xsd]] validiert. | ||
+ | ==== Historie ==== | ||
+ | |||
+ | |7.0.7 |2015-01-29|Interne Änderung : Datentyp-Erweiterung des "ReferenceKey" [für "_mi_StartProcedure"-Aufruf]\\ | | ||
+ | |6.5.4 |2013-04-29|Bugfix: "ErrorMsg" wurde am Ende der Prozedur nicht ausgegeben\\ | | ||
+ | |6.5.3 |2013-03-18|Anpassungen an aktuellen Code-Standard, u.a. wg. UTF8-Unterstützung\\ | | ||
+ | |6.5.0 |2012-09-17|Holger Wies : Wird in "UniqueID" die "DefaultUniqueID" angegeben, wird nun [ohne Aufruf von\\ [[dstoreproc>pm_CheckPersonIdentity_Pu]]] der Aufrufer als "anonyme Person" ["PersonID = 0"] identifiziert\\ | | ||
+ | |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\\ | | ||
+ | |5.1.0 |2006-02-08|Ab jetzt wird explizit auf "lesendes Recht" ["AccessLevelID = 1"] geprüft\\ | | ||
+ | |5.0.3 |2005-06-07|1. Neu : "PostingCharacteristicIDList", "ConditionList", "FilterByPersonIDList", "Country" zur Suche in "Properties"\\ 2. Neu : "SearchOnlyPostingsInOneID", neue mögliche Werte für "OutputIntoOneID"\\ 3. "RowCount" ist "integer", man kann "0" angeben\\ | | ||
+ | |4.0.16 |2004-08-31|1. Neuer Parameter "OutputIntoOneID"\\ 2. Ausführen von "set transaction isolation level 1" und "set rowcount 0" zu Beginn der Prozedur\\ 3. Konsequente Fehlerbehandlung\\ | | ||
+ | |4.0.5 |2003-10-04|Neue Parameter "Visibility" und "GetOwnNotApprovedPostings"\\ | | ||
+ | |4.0.3 |2003-07-10|1. Fehler bzgl. "RowCount" in einem Fall\\ 2. Ausgabe der Ergebnismenge : "set transaction isolation level 0" entfernt, da sonst u.U. eine Endlos-Schleife entstehen kann\\ 3. Fehler bzgl. Initialisierung von internen Variablen anhand von "Setttings"-Eintr.\\ | | ||
+ | |4.0.0 |2003-04-03|Ohne Angabe von Suchbegriffen kann man jetzt auch nur nach dem Datum filtern\\ | | ||
+ | |3.5.21 |2002-08-06|\\ | | ||
+ | |3.5.20 |2002-07-22|\\ | | ||
+ | |3.5.19 |2002-06-17|\\ | | ||
+ | |3.5.18 |2002-05-15|\\ | | ||
+ | |3.5.17 |2002-05-02|\\ | | ||
+ | |3.5.12 |2001-10-17|\\ | | ||
+ | |3.5.10 |2001-07-14|\\ | | ||
+ | |3.5.7 |2001-05-04|Erstmalig 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: | ||
+ | * [[http://playground.dstore.de/index.php?proc=fo_SearchPostings_Pu|fo_SearchPostings_Pu im Engine Playground öffnen]] | ||
+ | == cURL == | ||
+ | Unformatierte Ausgabe: | ||
+ | <code bash> | ||
+ | curl -X GET 'http://<partner>-<project>.dstore.de/default/engine/fo_SearchPostings_Pu?PersonIdentificationValues=<value>&PersonTypeID=<value>&UniqueID=<value>&ForumID=<value>'</code>Mit xmllint ((I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org)) formatierte Ausgabe: | ||
+ | <code bash> | ||
+ | curl -X GET 'http://<partner>-<project>.dstore.de/default/engine/fo_SearchPostings_Pu?PersonIdentificationValues=<value>&PersonTypeID=<value>&UniqueID=<value>&ForumID=<value>' | xmllint --format -</code>== dStore_php == | ||
+ | <code 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_SearchPostings_Pu', | ||
+ | array( | ||
+ | 'PersonIdentificationValues' => '<value>', | ||
+ | 'PersonTypeID' => <value>, | ||
+ | 'UniqueID' => '<value>', | ||
+ | 'ForumID' => <value>, | ||
+ | // 'SearchWithLikeOperator' => 0, | ||
+ | // 'IncludePostingBodies' => 0, | ||
+ | // 'RowCount' => 50, | ||
+ | // 'IncludeAdditionalInfos' => 0, | ||
+ | // 'FromDate' => NULL, | ||
+ | // 'ToDate' => NULL, | ||
+ | // 'Visibility' => 12, | ||
+ | // 'GetOwnNotApprovedPostings' => 0, | ||
+ | // 'OutputIntoOneID' => 0, | ||
+ | // 'PostingCharacteristicIDList' => NULL, | ||
+ | // 'ConditionList' => NULL, | ||
+ | // 'FilterByPersonIDList' => NULL, | ||
+ | // 'Country' => 'Germany', | ||
+ | // 'SearchOnlyPostingsInOneID' => 0, | ||
+ | // 'SeparatorInIdentVals' => '¶' | ||
+ | ) | ||
+ | ); | ||
+ | |||
+ | $service->execute($request); | ||
+ | |||
+ | $xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument(); | ||
+ | $ResultSet = $xml_result->getRowsAsArray(); | ||
+ | |||
+ | </code> | ||
+ | == engine/execute == | ||
+ | XML zur Ausführung mit der Methode [[:webservice:engine:execute|engine/execute]], z.B. per | ||
+ | curl --header 'Content-Type: application/xml' -X POST 'http://<partner>-<kunde>.dstore.de/default/engine/execute' -d '<xml-daten>' | ||
+ | |||
+ | <code xml> | ||
+ | <?xml version="1.0" encoding="UTF-8"?> | ||
+ | <ListOfBatches> | ||
+ | <Batch No="0"> | ||
+ | <Procedure Name="fo_SearchPostings_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="SearchWithLikeOperator">0</Parameter> --> | ||
+ | <!-- <Parameter Name="IncludePostingBodies">0</Parameter> --> | ||
+ | <!-- <Parameter Name="RowCount">50</Parameter> --> | ||
+ | <!-- <Parameter Name="IncludeAdditionalInfos">0</Parameter> --> | ||
+ | <!-- <Parameter Name="FromDate">NULL</Parameter> --> | ||
+ | <!-- <Parameter Name="ToDate">NULL</Parameter> --> | ||
+ | <!-- <Parameter Name="Visibility">12</Parameter> --> | ||
+ | <!-- <Parameter Name="GetOwnNotApprovedPostings">0</Parameter> --> | ||
+ | <!-- <Parameter Name="OutputIntoOneID">0</Parameter> --> | ||
+ | <!-- <Parameter Name="PostingCharacteristicIDList">NULL</Parameter> --> | ||
+ | <!-- <Parameter Name="ConditionList">NULL</Parameter> --> | ||
+ | <!-- <Parameter Name="FilterByPersonIDList">NULL</Parameter> --> | ||
+ | <!-- <Parameter Name="Country">'Germany'</Parameter> --> | ||
+ | <!-- <Parameter Name="SearchOnlyPostingsInOneID">0</Parameter> --> | ||
+ | <!-- <Parameter Name="SeparatorInIdentVals">'¶'</Parameter> --> | ||
+ | </Parameters> | ||
+ | </Procedure> | ||
+ | </Batch> | ||
+ | </ListOfBatches></code> | ||