Zwei verschiedene User-Typen sollen unterschiedliche Inhalte anlegen dürfen (Restriktionen...)
am 26.05.2014 - 22:09 Uhr in
Guten Abend zusammen,
ich plane ein Projekt, das nach folgendem Schema aufgebaut sein soll: Es gibt zwei verschiedene User-Typen. Typ A darf beliebig viele Inhalte vom Typ 1 anlegen. Typ B darf jeweils zu jedem dieser Inhalte von Typ 1 genau einen Inhalt vom Typ 2 anlegen, sozusagen als Antwort. User Typ A darf dann alle Antworten der User des Typs B auf seine Einträge sehen, sonst niemand. Jedermann darf die Inhalte vom Typ 1 sehen. Ich hoffe, dies ist soweit anschaulich genug...
Nun überlege ich, mit welchen Modulen ich die nötigen Funktionen integrieren kann. Ich bin beim meinen Recherchen auf "References" gestoßen, womit man vielleicht die Verbindung zwischen den Inhalten Typ 1 und 2 herstellen könnte. Es bleiben aber auch noch ein paar andere Punkte offen: Wie lassen sich unterschiedliche User-Typen erstellen? Ist es möglich, einem User nur genau eine Anlage eines Inhalts nach bestimmten Kriterien zu gestatten?
Ich danke schon einmal im Voraus allen für gute Ideen, Tipps oder Anregungen!
Gruß
Dennis
- Anmelden oder Registrieren um Kommentare zu schreiben
Rules
am 19.06.2014 - 21:31 Uhr
Mein Vorschlag wäre es mit dem Modul Rules zu lösen. Die Anzahl Antworten hoch zuzählen und bei mehr als einer Antwort bei einem weiteren edit Aufruf per Redirect wieder zurückzuleiten.
Dazu eine Bedingung "eigenen PHP-Code ausführen" wählen und folgender Code einfügen. Muss natürlich noch an Deine Bedingungen angepaßt werden.
// Deine Spezifikationen: Anzahl Node und Inhaltstyp
$nodelimit = 1;
$content_type1 = 'xyz';
if(arg(0) == 'node' && arg(2) == 'edit'){
return FALSE;
}
// Der aktive User
global $user;
// Hier die SQL Abfrage
$query = 'SELECT * FROM {node} WHERE uid=:drupaluid AND type=:drupaltype1';
// und Definition der Variablen
$variables = array(':drupaluid' => $user->uid, ':drupaltype1' => $content_type1);
// jetzt Abfrage ausführen
$result = db_query($query, $variables);
// wieviele Treffer
// From: http://api.drupal.org/api/drupal/includes%21database%21database.inc/func...
$nodecount = $result->rowCount();
if ( $nodecount >= $nodelimit) {
return TRUE; // das ist dann einer zuviel
} else {
return FALSE; // alles okay, neuer Eintrag kann eingetragen werden
}