Mit dieser Prozedur können Eigenschaften von Foren-Beiträgen verwaltet werden.
Diese Eigenschaften müssen via „tempdb.dbo.CharacteristicValues“ übergeben werden :
Grundsätzliche Erläuterungen :
1. Eigenschaften eines Beitrags sind immer an eine „PersonID“ gebunden. Dies bedeutet, daß eine Eigenschaft entweder „allgemein“ gültigt ist - nämlich wenn „PersonID = 0“ ist - oder die Eigenschaft hat nur Gültigkeit für die durch „PersonID“ angegebene Person. Pro Merkmal ist durch das sogenannte „CommonCharacteristic“-Flag (s. Rückgabemenge von fo_GetPostingCharacs_Ad) konfiguriert, ob
allgemeine(n) Eigenschaften hinterlegt werden können.
Auf welche Person sich nun die in „tempdb.dbo.CharacteristicValues“ angegebenen Eigenschaften beziehen, ist durch „PersonID“ angegeben. Dieser Parameter darf derzeit allerdings nur mit …
… belegt werden.
Zur „PersonID = 0“ sind allgemeine (also für jeden gültige bzw. einsehbare) Eigenschaften gespeichert.
Im Falle der Bearbeitung von allgemeinen Eigenschaften sind lesende Rechte (auf das Forum des Beitrags) natürlich nicht ausreichend, sondern es müssen entsprechende Bearbeitungs-Rechte wie bei fo_ModifyPosting_Pu vorhanden sein.
ACHTUNG : Dies gilt auch, falls die Identifizierung fehlschlägt. Denn dann werden immer die Rechte des anonymen Benutzers („PersonID = 0“) herangezogen. Der anonyme Benutzer kann AUSSCHLIEßLICH die allgemeinen Eigenschaften (also wiederum zur „PersonID = 0“) ändern, d.h. die anonyme Person benötigt Bearbeitungs-Rechte !
2. Um eine bestehende Eigenschaft zu ändern oder zu löschen, ist die NEGATIVE „PostingCharacteristicID“ zu übergeben, und als „Value“ muß die „ValueID“ übergeben werden ! Hintergrund sind Datums-Werte, die u.U. anders ausgegeben werden, als sie intern gespeichert sind. Fehlt ein „korrespondierender“ Datensatz (zur POSITIVEN „CharacteristicID“), dann wird die vorhandene Eigenschaft gelöscht.
Bsp.: Der folgende Aufruf von mi_InsertTempdb_CharacValues vor dem Aufruf dieser Prozedur führt dazu, daß die Eigenschaft mit der „ValueID = 42“ zum Merkmal mit der ID „17“ auf den Wert „Warum“ gesetzt wird :
exec mi_InsertTempdb_CharacValues '-17¶17', '42¶Warum', Delete = 1
Hingegen würde der Aufruf…
exec mi_InsertTempdb_CharacValues '-17', '42', Delete = 1
… bewirken, daß die Eigenschaft (mit der „ValueID = 42“) zum Merkmal mit der ID „17“ gelöscht würde.
Anmerkung : Ist der Beitrag gelöscht, können grundsätzlich keine Änderung der Eigenschaften mehr vorgenommen werden !
3. Genau wie im „Item-“ und „Person-Management“ gehören Eigenschaften immer zu einem Merkmal - Merkmale charakterisieren sozusagen die Eigenschaften.
Wenn für das zugehörige Forum eines Beitrags mindestens ein Merkmal zugeordnet ist (→ fo_ModifyCharacsForForums_Ad), können diesem Beitrag ausschließlich Eigenschaften zu Merkmalen hinzugefügt werden, die dem Forum zugeordnet sind.
4. Sind dem Forum eines Beitrags direkt KEINE Merkmale zugeordnet (→ fo_ModifyCharacsForForums_Ad), können diesem Beitrag ausschließlich Eigenschaften zu Merkmalen hinzugefügt werden, die wenigestens einer Kategorie, in die das Forum DIREKT eingeordnet ist, zugeordnet sind (→ fo_ModifyCharacForForumCats_Ad).
Anmerkung zur Rückgabespalte „ErrorCode“ :
Für „ErrorCode“ sind derzeit folgende Werte möglich :
HTTP-Method | POST |
HTTP-Auth | Optional |
Tags | |
Engine-Kategorie | forums |
Engine-Typ | Daten-Änderung |
Letzte Aktualisierung | 7.0.7 (2015-01-29) |
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) | 4.0.16 | |
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 | 4.0.16 | |
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) | 4.0.16 | |
PostingID | ID eines Postings, dessen Eigenschaften (zur „PersonID“) bearbeitet werden sollen | integer | 4.0.16 | |
PersonID | NULL | ID der Person, auf die sich die Eigenschaften beziehen. Folgende Werte sind derzeit möglich (s.a. Beschreibung !) : „<ID der identifizierten Person>„ „NULL“ (dies führt automatisch zur ID der identifizierten Person) „0“ (für „allgemeine“ Eigenschaften) | integer | 4.0.16 |
CancelOnError | 1 | Sollte es bzgl. einiger Eigenschaften Fehler geben, … „0“ : werden die Eigenschaften, die in Ordnung sind, geändert „1“ : schlägt das Bearbeiten ALLER Eigenschaften fehl | bit | 4.0.16 |
Country | 'german' | Gibt an, in welchem Format Datums-Eigenschaften angegeben sind (Groß-/Kleinschreibung wird nicht beachtet) : 'german', 'germany' : Tag-Monat-Jahr 'english', 'england' : Monat-Tag-Jahr | varchar(10) | 4.0.16 |
SeparatorInIdentVals | '¶' | Gibt an, durch welche Zeichenkette die Werte in „PersonIdentificationValues“ getrennt sind | varchar(4) | 5.5.0 |
NoResultIfNoErrorsOccured | 0 | Nur relevant, wenn es keinen Fehler gab ! Möchte man GAR KEINE Rückgabemenge (anstelle einer leeren), wenn es keine fehlerhaften Eigenschaften gab, übergibt man hier „1“. | bit | 6.5.0 |
Spaltenname | Beschreibung | SQL-Datentyp1) | ab Version |
---|---|---|---|
PostingCharacteristicID | ID eines Posting-Merkmals, auf das sich die fehlerhafte Eigenschaft „Value“ bezieht | smallint | 4.0.16 |
Value | Fehlerhafte Eigenschaft zum Merkmal „PostingCharacteristicID“ | varchar(250) | 4.0.16 |
ErrorCode | Gibt die Ursache des Fehlers an, also warum die Eigenschaft nicht übernommen werden konnte. Mögliche Werte : s. Beschreibung ! | tinyint | 4.0.16 |
Spaltenname | Beschreibung | SQL-Datentyp2) | ab Version |
---|---|---|---|
PostingCharacteristicID | ID eines Posting-Merkmals, auf das sich die fehlerhafte Eigenschaft „Value“ bezieht | smallint | 4.0.16 |
Value | Fehlerhafte Eigenschaft zum Merkmal „PostingCharacteristicID“ | varchar(250) | 4.0.16 |
ErrorCode | Gibt die Ursache des Fehlers an, also warum die Eigenschaft nicht übernommen werden konnte. Mögliche Werte : s. Beschreibung ! | tinyint | 4.0.16 |
Die Prozedur hat keine Output-Parameter.
Code | Beschreibung | Quelle 3) |
---|---|---|
-875 | Keine Berechtigung zum Ändern/Lesen von Posting-Eigenschaften einer anderen Person | nur direkt |
-874 | Die Posting-Eigenschaften können nicht gesetzt/geändert/gelöscht werden, da Fehler auftraten | nur indirekt |
-856 | Fehlerhafte Daten in „MainPostingSorting“ | nur indirekt |
-855 | Fehlerhafte Konfiguration des Sortier-Kriteriums | nur indirekt |
-850 | Sortier-Kriterium nicht definiert oder inaktiv oder nicht verwendbar | nur indirekt |
-804 | Keine Berechtigung zum Bearbeiten des Postings | nur direkt |
-803 | Das Posting ist gelöscht | 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 |
-572 | Die Prozedur darf nur innerhalb einer Transaktion ausgeführt werden | 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 |
-540 | Falsches Format | 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 | Interne Änderung : Datentyp-Erweiterung des „ReferenceKey“ [für „_mi_StartProcedure“-Aufruf] |
6.5.3 | 2013-03-18 | Anpassungen an aktuellen Code-Standard, u.a. wg. UTF8-Unterstützung |
6.5.0 | 2012-09-17 | 1. Neuer Parameter „NoResultIfNoErrorsOccured“ 2. „rollback tran“ fehlte in der Fehlerbehandlung |
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 | Die intern verwendete Prozedur „_fo_ModifyPostingProperties“ hat einen neuen Parameter bekommen, wodurch man die Rückgabe der fehlerhaften „Properties“ steuern kann |
5.0.4 | 2005-09-26 | Fehler im Fall : „CheckPostingVisibility = 1“ für ein Merkmal und Ermitteln der Eigenschaften für einen bestimmten Beitrag |
5.0.0 | 2004-12-21 | In der Doku wurde auf eine Parameter „SavePostingProperties“ Bezug genommen, den es nicht gibt |
4.0.16 | 2004-08-31 | 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 POST 'http://<partner>-<project>.dstore.de/default/engine/fo_ModifyPostingProperties_Pu?PersonIdentificationValues=<value>&PersonTypeID=<value>&UniqueID=<value>&PostingID=<value>'
Mit xmllint 4) formatierte Ausgabe:
curl -X POST 'http://<partner>-<project>.dstore.de/default/engine/fo_ModifyPostingProperties_Pu?PersonIdentificationValues=<value>&PersonTypeID=<value>&UniqueID=<value>&PostingID=<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_ModifyPostingProperties_Pu', array( 'PersonIdentificationValues' => '<value>', 'PersonTypeID' => <value>, 'UniqueID' => '<value>', 'PostingID' => <value>, // 'PersonID' => NULL, // 'CancelOnError' => 1, // 'Country' => 'german', // 'SeparatorInIdentVals' => '¶', // 'NoResultIfNoErrorsOccured' => 0 ) ); $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_ModifyPostingProperties_Pu"> <Parameters> <Parameter Name="PersonIdentificationValues"><!-- varchar value --></Parameter> <Parameter Name="PersonTypeID"><!-- tinyint value --></Parameter> <Parameter Name="UniqueID"><!-- varchar value --></Parameter> <Parameter Name="PostingID"><!-- integer value --></Parameter> <!-- <Parameter Name="PersonID">NULL</Parameter> --> <!-- <Parameter Name="CancelOnError">1</Parameter> --> <!-- <Parameter Name="Country">'german'</Parameter> --> <!-- <Parameter Name="SeparatorInIdentVals">'¶'</Parameter> --> <!-- <Parameter Name="NoResultIfNoErrorsOccured">0</Parameter> --> </Parameters> </Procedure> </Batch> </ListOfBatches>