PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Neue Themen erst ab bestimmter Beitragszahl


Merlin_
29.07.2008, 19:16
Hallo,
die Suche hat leider nichts passendes gefunden :o. Ich möchte, dass User in einem Teil des Forums erst ab einer Beitragszahl von fünf neue Themen erstellen können. Im ACP habe ich nichts Entsprechendes gefunden, obwohl ich der Ansicht war sowas schonmal gesehen zu haben. Kann mir jemand weiterhelfen ?
Gruss,Micha

P.S.: Ich möchte nicht den Weg über "Beförderungen" einschlagen ;)

Jaydee
29.07.2008, 20:08
Musst Du auch nicht. :)

Im Prinzip reicht es, wenn Du den Benutzern eine zusätzliche Gruppe mit vollen Schreibrechten (unmoderiert) einrichtest und der Primärgruppe zunächst die Schreibrechte für die bestimmten Foren entziehst.

Der Nachteil ist nur, dass Du dann die Beitragshöhe manuell überwachen musst---wenn es ein kleines überschaubares Forum ist, ist das sicher so machbar.
Nach 5 Postings/Themen gibst Du ihnen dann die Rechte, diese Zusatzgruppe zusätzlich anzunehmen oder verschiebst sie dorthin (primär).

Automatisch gehts halt nur per Beförderung und Bedingung..ansonsten hilft da wohl nur ein Add-on.

Merlin_
29.07.2008, 22:33
Hallo Jörg,
vielen Dank für Deine Antwort. Unser Forum hat knapp über 3000 Benutzer, die von "Hand" zu verwalten wäre recht aufwändig. Ein entsprechendes Add-On habe ich auch schon gesucht, aber nicht gefunden. Mein Tip wären ja Conditionals, also in der Art

<if condition="$bbuserinfo[posts] > 4"> Thema erstellen </if>

Wobei "Thema erstellen" dann die Funktion wäre ein neues Thema zu erstellen. Evtl. noch gekoppelt mit der entsprechenden ForumsID (40). Nur wo schreibe ich das rein (Template?) und was genau ?
Gruss,Micha

Jaydee
29.07.2008, 22:51
Hallo Micha,

hm..wenn ich ehrlich bin, glaube ich nicht das es sich in dem Fall per "Condition" lösen lässt. Bin da eher skeptisch.

Wenn überhaupt, müsste es dann in "forumhome". Aber allein das mit dem "Thema erstellen" dürfte schon nicht klappen.

Die Gruppen-Rechte haben ja auch ihre Berechtigung..über Conditions kannst Du zwar bspw. bestimmte Dinge wie Links etc. nur für gewisse Gruppen/User usw. anzeigen lassen, aber grundsätzliche Rechte würde ich darüber nicht steuern.

Was spricht denn gegen die autom. Beförderung bei Dir?
Das von mir angesprochene "teilweise nicht funktionieren" oder andere Gründe?

Merlin_
29.07.2008, 22:58
Hallo Jörg,
eigentlich ist es eher "Faulheit" ;). Ich habe die Forenrechte an vielen Stellen für die registrierten Benutzer verändert. Befördere ich jetzt alle Benutzer aus dieser Gruppe, muss ich diese Veränderungen auch für die neue Gruppe machen. Ich hoffe das ist jetzt nicht zu umständlich geschrieben :). Die Lösung durch editieren eines Templates wäre für diesen einen Sonderfall mit weitaus weniger Aufwand verbunden.
Gruss,Micha

Jaydee
29.07.2008, 23:06
Ok, verstehe.

Eine Lösung wäre dann evtl., eine zusätzliche Gruppe zu erstellen und einmalig die User mit Sonderrechten auszufiltern und dorthin zu verschieben.
Dieser Gruppe dann die Befugnis geben, einer weiteren Gruppe (zusätzlich) beizutreten und deren Recht zu übernehmen. Das können dann wieder die bisherigen Gruppen sein. Also Du müsstest dort keine Rechte ändern und auch in Zukunft keine User manuell verschieben.

Wäre zwar einmalig das "Austüffteln", wie man die Rechte am cleversten vergibt...ist aber nicht so wild. Ich habs x-fach ähnlich gemacht und das klappt eigentlich hervorragend.

Dabei kannst Du ja die kleinsten Kleinigkeiten einstellen, bis hin zur PN_Anzahl, Größe eines Signaturbildes und und...

Da machen die Sekundärgruppen eigentlich wieder Sinn, die Primärgruppe kann dann ruhig dieselbe bleiben.

Merlin_
31.07.2008, 20:17
Hallo Jörg,
ich werde das mal in meinem Testforum probieren. Schade dass keiner eine Idee hat wie ich das mit Conditionals lösen kann :o.
Vielen Dank nochmal.
Gruss,Micha

StGaensler
31.07.2008, 22:27
Hallo,

alleine mit Conditionals kannst du das auch garnicht lösen. Du musst einerseits im Template dafür sorgen, dass der Knopf nicht angezeigt wird (z.B. conditional) aber andererseits auch dafür, dass der Benutzer dort auch wirklich keinen Beitrag schreiben kann -> dazu brauchst du ein Plug-in, denn das muss im PHP-Code geschehen.
Wenn du nur den Knopf entfernst, dann ist das so, wie wenn du einen Wegweiser abschraubst. Die Leute, die den Weg aber kennen, können ihn trotzdem gehen - das musst du auch noch verbauen.

Viele Grüße

Stefan

pogo
04.08.2008, 14:09
Das mit dem Plug-in, es werden 2 benötigt, ist recht einfach.

Einstiegspunkte newthread_start und newreply_start.

Code:

if ($bbuserinfo['posts'] < 5 AND $foruminfo['forumid'] = X)
{
$foruminfo['allowposting'] = 0;
}

Wenn dann noch die Phrase forumclosed angepasst wird, damit der Benutzer auch weiß, warum er nichts schreiben darf, ist das doch ne schnelle Lösung.

Merlin_
04.08.2008, 23:30
Hallo pogo,
vielen Dank, ich werde das mal testen.
Gruss,Micha

RHS
05.08.2008, 17:34
Hallo pogo,

gibt es von dieser Art Variablen ($foruminfo['allowposting']) noch mehr und wo finde ich diese dokumentiert?

StGaensler
05.08.2008, 18:41
Hallo,

da kannst du einfach im vBulletin-Quelltext nachsehen, und/oder sie dir ausgeben lassen, dann siehst du was es da gibt. Hier am Beispiel von $foruminfo:Array
(
[forumid] => 2
[styleid] => 0
[title] => Beispiel-Forum
[title_clean] => Beispiel-Forum
[description] => Hier sollte eine Beschreibung sein!
[description_clean] => Hier sollte eine Beschreibung sein!
[options] => 89799
[showprivate] => 0
[displayorder] => 1
[lastpostid] => 49
[daysprune] => -1
[newpostemail] =>
[newthreademail] =>
[parentid] => 1
[parentlist] => 2,1,-1
[password] =>
[link] =>
[childlist] => Array
(
[0] => 2
[1] => -1
)

[defaultsortfield] => lastpost
[defaultsortorder] => desc
[imageprefix] =>
[depth] => 1
[permissions] => Array
(
[4] => 655375
[6] => 8388607
[3] => 655375
[8] => 0
[7] => 3928575
[1] => 2752719
[2] => 3928575
[5] => 8388607
)

[active] => 1
[allowposting] => 1
[cancontainthreads] => 1
[moderatenewpost] => 0
[moderatenewthread] => 0
[moderateattach] => 0
[allowbbcode] => 1
[allowimages] => 1
[allowhtml] => 0
[allowsmilies] => 1
[allowicons] => 1
[allowratings] => 1
[countposts] => 1
[canhavepassword] => 0
[indexposts] => 1
[styleoverride] => 0
[showonforumjump] => 1
[prefixrequired] => 0
[bottomcolspan] => 8
)
Viele Grüße

Stefan

Merlin_
09.08.2008, 10:34
Hallo,
sorry für das späte Feedback :o. Ich habe nun 2 Plugins erstellt:
1.
Add-On : vBulletin
Hook: newthread_start
Titel: Begrenzung Teilemarkt 1
Ausführungsreiehenfolge: 5
PHP-Code:
if ($bbuserinfo['posts'] < 5 AND ($foruminfo['forumid'] = 40)
{
$foruminfo['allowposting'] = 0;
}2.
Add-On : vBulletin
Hook: newreply_start
Titel: Begrenzung Teilemarkt 2
Ausführungsreiehenfolge: 5
PHP-Code:
if ($bbuserinfo['posts'] < 5 AND ($foruminfo['forumid'] = 40)
{
$foruminfo['allowposting'] = 0;
}Beide sind natürlich aktiv ;).
Nun bekommt man wenn man auf neues Thema geht folgende Fehlermeldung im Header:
Parse error: syntax error, unexpected '{' in /var/xxxxx/xxxxxx/html/forum/newthread.php(74) : eval()'d code on line 6Beim Klick auf Antworten kommt das hier:
Parse error: syntax error, unexpected '{' in /var/xxxxx/xxxxxx/html/forum/newreply.php(110) : eval()'d code on line 2Was kann da schief gelaufen sein ?
Gruss,Micha

P.S.: Und das Erstellen eines Themas geht trotzdem, obwohl der Testbenutzer nur 2 Beiträge hat ;)

StGaensler
09.08.2008, 14:13
Hallo,

dann schließe bitte in der ersten Zeile deiner Code-Ausschnitte die geöffnete Klammer, oder entferne sie, da sie eh unnötig ist.

Viele Grüße

Stefan

Merlin_
09.08.2008, 15:41
Hallo Stefan,
ach du Sch...ande wie peinlich ;). Vielen Dank für Deine Antwort. Jetzt funktioniert es natürlich. Das war ja jetzt die Veränderung in unseren Teileangeboten. Wenn ich das nun in unserem Forum Teilesuche auch aktivieren möchte, muss der Code des Plugins dann so
if ($bbuserinfo['posts'] < 5 AND ($foruminfo['forumid'] = 40 OR $foruminfo['forumid'] = 39))
{
$foruminfo['allowposting'] = 0;
}

oder so

if ($bbuserinfo['posts'] < 5 AND $foruminfo['forumid'] = (40 OR 39))
{
$foruminfo['allowposting'] = 0;
}

aussehen ? Weiss nicht ob die Klammer ums OR sein muss. Oder muss ich vielleicht für das zweite Forum (39) zwei neue Plugins erstellen ?
Gruss,Micha

StGaensler
09.08.2008, 15:54
Hallo,

die erste Lösung ist korrekt. Das AND bindet stärker als das OR, insofern brauchst du die Klammern um das OR. Wenn du sie weglassen würdest, könnte im Forum 39 keiner mehr was schreiben.

Die zweite Lösung schlägst du dir am besten gleich aus dem Kopf, das gibt keinen Sinn :)

Du könntest auch noch if ($bbuserinfo['posts'] < 5 AND in_array($foruminfo['forumid'], array(40, 39)))verweden, da wird es dann für mehrere Foren einfacher, den Code zu erweitern - einfach mit Kommata getrennt noch anhängen.

Viele Grüße

Stefan

Merlin_
09.08.2008, 21:52
Hallo Stefan,
ich habe es jetzt mal so gemacht wie Du oben beschrieben hast. Mit dem Resultat, dass selbst ich als Admin nicht mehr in dem Forum posten darf :D. Aber jetzt kommt der Hammer: Der ursprüngliche Code
if ($bbuserinfo['posts'] < 5 AND ($foruminfo['forumid'] = 40))
{
$foruminfo['allowposting'] = 0;
}

lässt jetzt auch niemanden mehr im Forum 40 posten :eek:. Schalte ich das Plugin ab, kann wieder jeder posten. Ist durch das "array" irgendwas verbogen worden ?
Gruss,Micha

StGaensler
09.08.2008, 22:00
Hm, nein. Pogo hat oben im Code einen Fehler drinnen (*schimpf* *zeter*), es muss $foruminfo['forumid'] == 40 (mit ==) heißen. Du willst der Variable keinen Wert zuweisen (=), sondern sie mit einem Wert vergleichen (==). Ändere das ab, und dann sollte es wieder funktionieren.

Wo der Fehler in meinem Code liegt, will mir aber nicht einfallen... Das muss ich mal ausprobieren.

Viele Grüße

Stefan

Merlin_
09.08.2008, 22:08
Hallo Stefan,
vielen Dank für Deine Antwort. Das == hätte ich wirklich sofort merken müssen, meine Software auf der Arbeit beinhaltet auch Scripting und da wird natürlich verglichen was das Zeug hält :). Ok, daran liegt es aber net, der Fehler ist immer noch da :o.
Sieht jetzt so aus:
if ($bbuserinfo['posts'] < 5 AND ($foruminfo['forumid'] == 40))
{
$foruminfo['allowposting'] = 0;
}

Gruss,Micha

StGaensler
09.08.2008, 22:11
Hallo Micha,

korrekt, ich habe den anderen Fehler jetzt auch gefunden. Die Variable $bbuserinfo ist zu diesem Zeitpunkt nicht gesetzt. Ersetze es durch $vbulletin->userinfo['posts'] dann sollte es entgültig funktionieren.

Viele Grüße

Stefan

Merlin_
09.08.2008, 22:21
Hallo Stefan,
zunächst einmal http://www.omega-senator.de/forum/images/smilies/respekt.gif sowas nenne ich Support !! Das hat ja super hingehauen, es läuft alles wie ich es wollte http://www.omega-senator.de/forum/images/smilies/top.gif. Und schimpf bitte nicht so mit dem armen pogo, er hat es doch nur gut gemeint ;) http://www.omega-senator.de/forum/images/smilies/muss-weg.gif.
Gruss,Micha

StGaensler
09.08.2008, 22:34
Hallo Micha,

ich verspreche, dass ich in nicht 6743 oder 6742 werde :) Ich mache ja genauso Fehler, kann jedem mal passieren.

Viele Grüße

Stefan