Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.39 veröffentlicht (02.06.25)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Beiträge für Benutzergruppe nicht zählen
#1
Hi Leute,

gibt es eine Möglichkeit Beiträge für eine bestimmte Benutzergruppe nicht zu zählen?
Ich würde mir das ganze so vorstellen:

if(prefix='test' && guid='x' == usepostcounts='0')
{
...
}


und zwar benutze ich das Präfix Plugin.
Die Präfixe werden in die Spalte prefix gespeichert. genauer gesagt in mybb_threads.
könnte man jetzt so eine bedingung schreiben?
wenn ja, wo müsste das hingeschrieben werden. Danke.


Sebastian
Zitieren
#2
Der Code zur Erhöhung des Zählers befindet sich in der Datei /inc/datahandlers/post.php ab Zeile 763.

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#3
Danke dir. Mit folgenden Code klappt es:

PHP-Code:
if($thread['prefix']='test')
{
$update_query[] = "postnum=postnum-1";
}

Warum -1?
Weil nachfolgend +1 gezählt wird. So werden Threads mit Präfixen nicht gezählt.
Problem: Wenn ich den Zähler neu durchlaufen lasse, zählt er die Thread dazu. Wo kann ich dies modifizieren?

Noch ein Problem: Er zählt auch normale Themen ohne Präfix nicht mehr.
Also mit

PHP-Code:
if($mybb->user['usergroup'] == "4")
{
$update_query[] = "postnum=postnum-1";
}

Gilt dann aber für alle Threads und nicht für die mit einem präfix. jetzt habe ich folgendes überlegt:

PHP-Code:
if($mybb->user['usergroup'] == "4" && mybb->threads['prefix'] == "Test")
{
$update_query[] = "postnum=postnum-1";
}

Aber damit geht es auch nicht. Es kommt als Fehlermeldung:

Zitat:Parse error: syntax error, unexpected T_OBJECT_OPERATOR in C:\xampp\htdocs\mybb\inc\datahandlers\post.php on line 1238


das plugin sieht so aus:

PHP-Code:
<?php

function prefix_info()
{
return array(
"name" => "Prefix-Plugin",
"description" => "adds a prefix before the thread-subject",
"website" => "http://mods.mybboard.net",
"author" => "XxAnimusxX",
"authorsite" => "http://www.k-under.de",
"version" => "1.0",
"guid" => "3fb2b1ec27e31aa2b05bb8d444bfda55",
"compatibility" => "14*"
);
}

$plugins->add_hook("forumdisplay_thread", "addPrefix_forumdisplay");
$plugins->add_hook("newthread_end", "addPrefix_newthread");
$plugins->add_hook("editpost_end", "addPrefix_editpost");
$plugins->add_hook("editpost_do_editpost_start", "savePrefix_editpost");
$plugins->add_hook("newthread_do_newthread_end", "savePrefix_newthread");

$plugins->add_hook("admin_config_menu", "prefix_toolsmenu");
$plugins->add_hook("admin_config_action_handler", "prefix_actionhandler");


function
prefix_toolsmenu($sub_menu)
{
$sub_menu[] = array(
"id" => "prefix",
"title" => "Prefix-Manager",
"link" => "index.php?module=config/prefix"
);
}



function
prefix_actionhandler($action)
{
$action['prefix'] = array('active' => 'prefix', 'file' => 'prefix.php');
}



function
prefix_is_installed()
{
global
$db;

if (
$db->field_exists("prefix", "threads"))
{
return
true;
}
return
false;
}



function
prefix_install()
{
global
$db;

$db->query("ALTER TABLE ".TABLE_PREFIX."threads ADD prefix VARCHAR(126) NOT NULL");

$find = preg_quote("{\$gotounread}");
$replace = "{\$gotounread}{\$thread['prefix']}";
prefix_replace_templatesets("forumdisplay_thread", $find, $replace);

$find = preg_quote("trow2\"><input");
$replace = "trow2\">{\$prefix_menu}<input";
prefix_replace_templatesets("newthread", $find, $replace);
prefix_replace_templatesets("editpost", $find, $replace);

$db->query("CREATE TABLE ".TABLE_PREFIX."prefix (
pid INT UNSIGNED NOT NULL AUTO_INCREMENT,
title VARCHAR(126) NOT NULL,
fid TEXT NOT NULL,
gid TEXT NOT NULL,
PRIMARY KEY (pid)
)"
);
}



function
prefix_uninstall()
{
global
$db;

$db->query("ALTER TABLE ".TABLE_PREFIX."threads DROP prefix");

$find = preg_quote("{\$gotounread}{\$thread['prefix']}");
$replace = "{\$gotounread}";
prefix_replace_templatesets("forumdisplay_thread", $find, $replace);

$find = preg_quote("trow2\">{\$prefix_menu}<input");
$replace = "trow2\"><input";
prefix_replace_templatesets("newthread", $find, $replace);
prefix_replace_templatesets("editpost", $find, $replace);

$db->query("DROP TABLE ".TABLE_PREFIX."prefix");
}



function
addPrefix_forumdisplay()
{
global
$thread;

if (
$thread['prefix'])
{
$thread['prefix'] = "<strong>[".$thread['prefix']."]</strong> ";
}
}

function
addPrefix_newthread()
{
global
$prefix_menu, $fid;

$prefix_menu = build_prefixmenu($fid);
}



function
addPrefix_editpost()
{
global
$thread, $fid, $pid, $prefix_menu;

if (
$thread['firstpost'] != $pid) return false;
$prefix_menu = build_prefixmenu($fid, $thread['prefix']);
}



function
savePrefix_editpost()
{
global
$mybb, $thread, $db;

$pid = intval($mybb->input['prefix']);
if (!
$thread['prefix'] && !$pid) return false;

$prefix = $db->fetch_array($db->simple_select("prefix", "title", "pid=".$pid));

if ((
$prefix['title'] == $thread['prefix']) || (!$prefix['title'] && $pid)) return false;
$db->update_query("threads", array("prefix"=>$prefix['title']), "tid=".$thread['tid']);
}



function
savePrefix_newthread()
{
global
$mybb, $db, $tid;

$pid = intval($mybb->input['prefix']);
if (!
$pid) return false;

$prefix = $db->fetch_array($db->simple_select("prefix", "title", "pid=".$pid));
if (!
$prefix['title']) return false;

$db->update_query("threads", array("prefix"=>$prefix['title']), "tid=".$tid);
}



function
build_prefixmenu($fid = 0, $selected = "")
{
global
$mybb, $db;
if (!
$fid) return false;

$query = $db->simple_select("prefix");
$menu = "";
while (
$prefix = $db->fetch_array($query))
{
$checked = "";
$gids = explode(",", $prefix['gid']);
$fids = explode(",", $prefix['fid']);

$group = in_array($mybb->user['usergroup'], $gids);
if ((
in_array($fid, $fids) && $group) || (!$prefix['fid'] && $group))
{
if (
$prefix['title'] == $selected) $checked = " selected";
$menu.="<option value=\"".$prefix['pid']."\"".$checked.">".$prefix['title']."</option>";
}
}

if (
$menu)
{
return
"<select name='prefix'><option value=\"0\"></option>".$menu."</select> ";
}
}



function
prefix_replace_templatesets($template, $find, $replace)
{
global
$db;

$query = $db->simple_select("templates", "template, tid", "title='".$template."'");
while (
$template = $db->fetch_array($query))
{
$tid = $template['tid']; $body = $template['template'];
$body = preg_replace("!".$find."!", $replace, $body);

$db->update_query("templates", array("template" => $db->escape_string($body)), "tid=".$tid);
}
}

?>
Zitieren
#4
Bei dem 2. $mybb fehlt das $.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#5
Stimmt.
PHP-Code:
if($mybb->user['usergroup'] == "4" && $mybb->thread['prefix'] == "Test")
{
$update_query[] = "postnum=postnum-1";
}
Er zählt aber trotzdem hoch.
Zitieren
#6
Wird $update_query nicht in einer ganz anderen Tabelle ausgeführt?
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#7
(17.12.2008, 17:36)Dragon schrieb: Wird $update_query nicht in einer ganz anderen Tabelle ausgeführt?

ich denke nicht, dass es datan liegt..

Das kuriose ist ja, wenn ich:
PHP-Code:
if(!$mybb->thread['prefix'] == "Test")
{
$update_query[] = "postnum=postnum-1";
}


mache, dann zieht er die beiträge ab. bzw. zählt nicht.
Also mit dem "!" vor dem $mybb...
Aber er zählt ja dann auch nicht, wenn man das präfix weglässt.
komisch oder..
Zitieren
#8
Zähler werden im post.php aktualisiert und im Admin CP in recount_rebuild.php nochmal, mit unabhängigem Code. Offiziell ausgeklammert aus der Zählung werden wohl nur bestimmte Foren, aber nicht bestimmte Gruppen. Das müsstest du also an beiden Stellen nachrüsten. Und da würd ich im Admin CP anfangen ehe du dich an das post.php ranmachst, das ist dort nämlich ne Ecke komplizierter.

Von dem postnum - 1 Ansatz würde ich auf jeden Fall Abstand nehmen, da es einfach Unsinn ist, einen Zähler um 1 zu verringern, wenn er später nur vielleicht wieder um 1 erhöht wird. Da sind ja noch weitere Bedingungen dran geknüpft, da wäre es besser so eine Bedingung einzuführen, damit weder verringert noch erhöht wird wenn du das nicht willst.
Zitieren
#9
Wie wird das denn geregelt wenn man ein Subforum vom Counter raus nimmt?
Die Code-Stellen finde ich gerade nicht.
Zitieren
#10
Ist $mybb->thread['prefix'] überhaupt definiert? Ich weiß nicht wie die Erweiterung arbeitet, daher kann ich dazu nichts sagen.

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
Question Zeige Benutzergruppe: --Wenn verfügbar, sekundäre Benutzergruppe-- Rookie-Doo 11 5.286 30.12.2007, 14:31
Letzter Beitrag: Rookie-Doo