Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:fo_modifypostingproperties_pu

fo_ModifyPostingProperties_Pu

Mit dieser Prozedur können Eigenschaften von Foren-Beiträgen verwaltet werden.

Diese Eigenschaften müssen via „tempdb.dbo.CharacteristicValues“ übergeben werden :

  • „CharacteristicID“ enthält die ID eines Merkmals, zu der die Eigenschaft gehört
  • „Value“ enthält die Eigenschaft selbst

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

  • nur
  • auch
  • keine

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 …

  • „NULL“ (dann werden die Eigenschaften der identifizierten Person geändert) oder mit
  • <der ID der identifizierten Person> (falls bereits bekannt - hat aber keinerlei Vorteile) oder mit
  • „0“

… 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 :

  • „1“ : Das Merkmal ist dem zugehörigen Forum des Postings nicht zugeordnet
  • „2“ : Die Eigenschaft ist ungültig, d.h. entspricht nicht dem Feldtyp des zugehörigen Merkmals
  • „3“ : Es handelt sich um ein Merkmal mit vordefinierten Werten, aber die übergebene Eigenschaft ist nicht vordefiniert
  • „4“ : Aufgrund des „CommonCharacteristic“-Flags kann die Eigenschaft zu diesem Merkmal zur angegebenen „PersonID“ nicht gesetzt werden
  • „5“ : Allgemeine Eigenschaften zu diesem Merkmal dürfen nicht mehr hinzugefügt werden
  • „6“ : Allgemeine Eigenschaften zu diesem Merkmal dürfen nicht mehr geändert werden
  • „7“ : Allgemeine Eigenschaften zu diesem Merkmal dürfen nicht mehr gelöscht werden
  • „8“ : Der Beitrag besitzt (zur gleichen „PersonID“) die Eigenschaft bereits
  • „9“ : Die maximale Anzahl von Eigenschaften zu diesem Merkmal ist überschritten
HTTP-MethodPOST
HTTP-AuthOptional
Tags
Engine-Kategorieforums
Engine-TypDaten-Änderung
Letzte Aktualisierung7.0.7 (2015-01-29)

Parameter

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.
tinyint4.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
integer4.0.16
PersonIDNULL 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)
integer4.0.16
CancelOnError1 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
bit4.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
NoResultIfNoErrorsOccured0 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“.
bit6.5.0

Rückgabe

wenn Result (Pseudo-Parameter) = -874

Spaltenname Beschreibung SQL-Datentyp1) ab Version
PostingCharacteristicIDID eines Posting-Merkmals, auf das sich die fehlerhafte Eigenschaft „Value“ bezieht
smallint4.0.16
ValueFehlerhafte Eigenschaft zum Merkmal „PostingCharacteristicID“
varchar(250)4.0.16
ErrorCodeGibt die Ursache des Fehlers an, also warum die Eigenschaft nicht übernommen werden konnte. Mögliche Werte : s. Beschreibung !
tinyint4.0.16

wenn Result (Pseudo-Parameter) = 0 und NoResultIfNoErrorsOccured = 0

Spaltenname Beschreibung SQL-Datentyp2) ab Version
PostingCharacteristicIDID eines Posting-Merkmals, auf das sich die fehlerhafte Eigenschaft „Value“ bezieht
smallint4.0.16
ValueFehlerhafte Eigenschaft zum Merkmal „PostingCharacteristicID“
varchar(250)4.0.16
ErrorCodeGibt die Ursache des Fehlers an, also warum die Eigenschaft nicht übernommen werden konnte. Mögliche Werte : s. Beschreibung !
tinyint4.0.16

Output-Parameter

Die Prozedur hat keine Output-Parameter.

Mögliche Return-Codes

Code Beschreibung Quelle 3)
-875Keine Berechtigung zum Ändern/Lesen von Posting-Eigenschaften einer anderen Personnur direkt
-874Die Posting-Eigenschaften können nicht gesetzt/geändert/gelöscht werden, da Fehler auftratennur indirekt
-856Fehlerhafte Daten in „MainPostingSorting“nur indirekt
-855Fehlerhafte Konfiguration des Sortier-Kriteriumsnur indirekt
-850Sortier-Kriterium nicht definiert oder inaktiv oder nicht verwendbarnur indirekt
-804Keine Berechtigung zum Bearbeiten des Postingsnur direkt
-803Das Posting ist gelöschtnur direkt
-801Kein lesender Zugriff auf das Forumnur direkt
-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
-572Die Prozedur darf nur innerhalb einer Transaktion ausgeführt werdennur 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
-540Falsches Formatnur 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-29Interne Änderung : Datentyp-Erweiterung des „ReferenceKey“ [für „_mi_StartProcedure“-Aufruf]
6.5.3 2013-03-18Anpassungen an aktuellen Code-Standard, u.a. wg. UTF8-Unterstützung
6.5.0 2012-09-171. Neuer Parameter „NoResultIfNoErrorsOccured“
2. „rollback tran“ fehlte in der Fehlerbehandlung
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
5.1.0 2006-02-08Die 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-26Fehler im Fall : „CheckPostingVisibility = 1“ für ein Merkmal und Ermitteln der Eigenschaften für einen bestimmten Beitrag
5.0.0 2004-12-21In der Doku wurde auf eine Parameter „SavePostingProperties“ Bezug genommen, den es nicht gibt
4.0.16 2004-08-31Erstmalig 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 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 -
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_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();
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_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>
3)
direkt meint „von der Prozedur selber“ und indirekt meint „von intern aufgerufenen Unterprozeduren“
4)
I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org
engine/procedures/fo_modifypostingproperties_pu.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)