Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:fo_getforumaccessmatrix_ad

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

engine:procedures:fo_getforumaccessmatrix_ad [11.01.2016 ] (aktuell)
Zeile 1: Zeile 1:
 +===== fo_GetForumAccessMatrix_Ad =====
 +
 +Ermittelt für ein Forum die Zugriffs-Berechtigungen für mehrere Gruppen bzw. Personen. Es können zwar auch nur Zugriffsrechte für EINE Gruppe bzw. Person ausgegeben werden, allerdings kann man dafür auch [[dstoreproc>​fo_GetForumAccessLevelIDs_Ad]] benutzen.\\ ​
 +
 +Seit dieser Version kann man sich auch die Zugriffsrechte für mehrere Foren (dann aber nur für EINE Person bzw. Gruppe) ausgeben lassen.\\ ​
 +
 +Die Rückgabemenge dieser Prozedur ist für eine Übersicht in "​Matrix"​-Form gedacht (siehe Sortierung der Rückgabemenge). Das bedeutet insbesondere,​ daß für JEDES Zugriffsrecht (sprich für jede "​AccessLevelID"​) ein Datensatz vorhanden ist, also angegeben ist, ob die Person bzw. die Gruppe dieses Recht besitzt oder nicht.\\ ​
 +
 +Hinweis zum grundsätzlichen Verfahren bzgl. Zugriffsrechte in Foren:\\ Unabhängig von der Aktion, die ein Teilnehmer eines Forums vornehmen möchte (Beitrag erstellen, Beitrag löschen, Thread abschließen,​ ein Binärobjekt zu einem Posting hinzufügen etc.), wird zunächst überprüft,​ ob er über das entsprechende Zugriffsrecht verfügt. Dabei gilt : Direkt für eine Person zugewiesene Rechte haben Vorrang vor Gruppenrechten. Hat jemand keine direkt definierten Zugriffsrechte,​ besitzt er die Rechte, die ALLE Gruppen, denen er zugeordnet ist, ZUSAMMEN für das entsprechende Forum bekommen haben. Sind weder für die Person, noch für irgendeine Gruppe, zu der die Person gehört, Zugriffsrechte vergeben, werden die Rechte des anonymen Benutzers ("​PersonID = 0") herangezogen - sind auch hierzu keine Rechte eingetragen,​ hat die Person überhaupt keinen Zugriff auf das Forum.\\ ​
 +|HTTP-Method|GET |
 +|HTTP-Auth|Optional |
 +|Tags|{{tag>​[fo Get Forum Access Matrix Ad]}}|
 +|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 ^
 +|__ForumID__| |ID eines Forums. Ist "​NULL"​ angegeben, MUSS eine "​GroupOrPersonID"​ übergeben werden. Es werden dann die Zugriffsrechte der Foren-IDs aus "​tempdb.dbo.OneID"​ ermittelt bzw. der Foren für die zur Person/​Gruppe explizit Zugriffsrechte vergeben sind.\\ |smallint|3.5.15|
 +|CheckPersonAccess|0 |Gibt an, ob die Zugriffsrechte für Gruppen ("​0"​) oder Personen ("​1"​) ermittelt werden sollen, d.h. hierdurch wird angegeben, ob es sich bei "​GroupOrPersonID"​ bzw. den IDs in "​tempd.dbo.OneID"​ um (eine) GroupID(s) oder PersonID(s) handelt.\\ |bit|3.5.15|
 +|GroupOrPersonID|NULL |ID einer Gruppe oder Person. Ist "​NULL"​ angegeben, MUSS "​ForumID"​ übergeben werden. Dann werden die Zugriffsrechte entweder für die Personen/​Gruppen-IDs in "​tempdb.dbo.OneID"​ ermittelt oder aber für die, zu denen explizit Zugriffsrechte vergeben sind.\\ |integer|3.5.15|
 +==== Rückgabe ====
 +
 +=== wenn CheckPersonAccess = 0 ===
 +
 +^Spaltenname ​ ^Beschreibung ^SQL-Datentyp((siehe [[:​webservice:​engine_datatypes|Datentypen im Bereich "​engine"​]])) ^ab Version ^
 +|GroupID|ID einer Personen-Gruppe - also entweder "​GroupOrPersonID"​ oder eine ID, die in "​tempdb.dbo.OneID"​ übergeben wurde, oder aber die ID einer Gruppe, für die EXPLIZIT Zugriffsrechte für das Forum "​ForumID"​ existieren\\ |smallint|3.5.15 |
 +|GroupDescription|Bezeichnung der Gruppe "​GroupID"​\\ |varchar(100)|3.5.15 |
 +|AccessLevelID|ID eines Zugriffsrechtes\\ |smallint|3.5.15 |
 +|Description|Beschreibung des Zugriffsrechtes "​AccessLevelID"​\\ |varchar(100)|3.5.15 |
 +|Access|"​0"​ Die Gruppe "​GroupID"​ hat das Zugriffsrecht "​AccessLevelID"​ für das Forum "​ForumID"​ NICHT\\ "​1"​ Die Gruppe "​GroupID"​ BESITZT das Zugriffsrecht "​AccessLevelID"​ für das Forum "​ForumID"​\\ |bit|3.5.15 |
 +|ForumID|ID eines Forums - also entweder "​ForumID"​ oder eine ID, die in "​tempdb.dbo.OneID"​ übergeben wurde, oder die ID eines Forums, für das "​GroupID"​ explizit Zugriffsrechte besitzt\\ |smallint|3.5.21 |
 +
 +== Sortierung der Rückgabe ==
 +
 +(parameterunabängige Sortierung)
 +  * GroupID (aufsteigend)
 +  * ForumID (aufsteigend)
 +  * AccessLevelID (aufsteigend)
 +
 +=== wenn CheckPersonAccess = 1 ===
 +
 +^Spaltenname ​ ^Beschreibung ^SQL-Datentyp((siehe [[:​webservice:​engine_datatypes|Datentypen im Bereich "​engine"​]])) ^ab Version ^
 +|PersonID|ID einer Person - also entweder "​GroupOrPersonID"​ oder eine ID, die in "​tempdb.dbo.OneID"​ übergeben wurde, oder die ID einer Person, für die explizit Zugriffsrechte für "​ForumID"​ vergeben sind\\ |integer|3.5.15 |
 +|AccessLevelID|ID eines Zugriffsrechtes\\ |smallint|3.5.15 |
 +|Description|Beschreibung des Zugriffsrechtes "​AccessLevelID"​\\ |varchar(255)|3.5.15 |
 +|Access|"​0"​ : Die Person "​PersonID"​ hat das Zugriffsrecht "​AccessLevelID"​ NICHT direkt zugewiesen\\ "​1"​ : Die Person "​PersonID"​ HAT das Zugriffsrecht "​AccessLevelID"​ direkt zugewiesen bekommen\\ |bit|3.5.15 |
 +|GroupAccess|"​0"​ : Es gibt KEINE Gruppe, der die Person zugeordnet ist, die das Zugriffsrecht "​AccessLevelID"​ hat\\ "​1"​ : Die Person ist in wenigstens einer Gruppe, die das Zugriffsrecht "​AccessLevelID"​ hat\\ |bit|3.5.15 |
 +|AnonymousAccess|"​0"​ : Die anonyme Person ("​PersonID = 0") besitzt das Zugriffsrecht "​AccessLevelID"​ NICHT\\ "​1"​ : Die anonyme Person ("​PersonID = 0") BESITZT das Zugriffsrecht "​AccessLevelID"​\\ |bit|3.5.21 |
 +|AccessType|Diese Rückgabespalte gibt an, ob die Person "​PersonID"​ das Zugriffsrecht "​AccessLevelID"​ besitzt (oder eben nicht) und wodurch sie das Recht erhalten hat...\\ "​1"​ : Direkt\\ "​2"​ : Über eine Gruppe\\ "​3"​ : Über die anonyme Person\\ "​4"​ : Keine Berechtigung\\ |tinyint|3.5.21 |
 +|ForumID|ID eines Forums - also entweder "​ForumID"​ oder eine ID, die in "​tempdb.dbo.OneID"​ übergeben wurde, oder die ID eines Forums, für das "​PersonID"​ explizit Zugriffsrechte besitzt\\ |smallint|3.5.21 |
 +
 +== Sortierung der Rückgabe ==
 +
 +(parameterunabängige Sortierung)
 +  * PersonID (aufsteigend)
 +  * ForumID (aufsteigend)
 +  * AccessLevelID (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"​)) ^
 +|-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|
 +|-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|
 +|-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]\\ ​ |
 +|5.5.1 |2008-07-29|1. Fehler : in der Rückgabespalte "​AccessType"​ konnte der (nicht dokumentierte) Wert "​0"​ zurückgegeben werden\\ 2. Ausgabe an die Standard-Ausgabe [via "​print"​] im Fall "​-500",​ die nähere Informationen über die Ursache enthält\\ ​ |
 +|4.0.10 |2004-03-15|1. Aufruf der Prozeduren "​_mi_StartProcedure"​ und "​_mi_FinishProcedure"​\\ 2. Ausführen von "set transaction isolation level 1" und "set rowcount 0" zu Beginn der Prozedur\\ 3. Konsequente Fehlerbehandlung\\ ​ |
 +|4.0.0 |2003-04-03|Komplette (interne) Überarbeitung der Prozedur\\ ​ |
 +|3.5.21 |2002-08-06|\\ ​ |
 +|3.5.17 |2002-05-02|\\ ​ |
 +|3.5.16 |2002-04-25|\\ ​ |
 +|3.5.15 |2002-03-12|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_GetForumAccessMatrix_Ad|fo_GetForumAccessMatrix_Ad im Engine Playground öffnen]]
 +== cURL ==
 +Unformatierte Ausgabe:
 +<code bash>
 +curl -X GET  '​http://<​partner>​-<​project>​.dstore.de/​default/​engine/​fo_GetForumAccessMatrix_Ad?​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_GetForumAccessMatrix_Ad?​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_GetForumAccessMatrix_Ad',​
 + array(
 + '​ForumID'​ => <​value>,​
 + // '​CheckPersonAccess'​ => 0,
 + // '​GroupOrPersonID'​ => NULL
 + )
 +);
 +
 +$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_GetForumAccessMatrix_Ad">​
 + <​Parameters>​
 + <​Parameter Name="​ForumID"><​!-- smallint value --></​Parameter>​
 + <!-- <​Parameter Name="​CheckPersonAccess">​0</​Parameter>​ -->
 + <!-- <​Parameter Name="​GroupOrPersonID">​NULL</​Parameter>​ -->
 + </​Parameters>​
 + </​Procedure>​
 + </​Batch>​
 +</​ListOfBatches></​code>​
  
engine/procedures/fo_getforumaccessmatrix_ad.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)