MyBB.de Forum
Beiträge für Benutzergruppe nicht zählen - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Anpassungen (https://www.mybb.de/forum/forum-47.html)
+--- Forum: Plugin-Diskussionen (https://www.mybb.de/forum/forum-38.html)
+--- Thema: Beiträge für Benutzergruppe nicht zählen (/thread-11821.html)

Seiten: Seiten: 1 2 3


Beiträge für Benutzergruppe nicht zählen - Sebastian1990 - 17.12.2008

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


RE: Beiträge für Benutzergruppe nicht zählen - Michael - 17.12.2008

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


RE: Beiträge für Benutzergruppe nicht zählen - Sebastian1990 - 17.12.2008

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);
        }
}

?>



RE: Beiträge für Benutzergruppe nicht zählen - StefanT - 17.12.2008

Bei dem 2. $mybb fehlt das $.


RE: Beiträge für Benutzergruppe nicht zählen - Sebastian1990 - 17.12.2008

Stimmt.
PHP-Code:
    if($mybb->user['usergroup'] == "4" &&  $mybb->thread['prefix'] == "Test")
        {
          
$update_query[] = "postnum=postnum-1";
     } 
Er zählt aber trotzdem hoch.


RE: Beiträge für Benutzergruppe nicht zählen - StefanT - 17.12.2008

Wird $update_query nicht in einer ganz anderen Tabelle ausgeführt?


RE: Beiträge für Benutzergruppe nicht zählen - Sebastian1990 - 17.12.2008

(17.12.2008, 16: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..


RE: Beiträge für Benutzergruppe nicht zählen - frostschutz - 17.12.2008

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.


RE: Beiträge für Benutzergruppe nicht zählen - Sebastian1990 - 17.12.2008

Wie wird das denn geregelt wenn man ein Subforum vom Counter raus nimmt?
Die Code-Stellen finde ich gerade nicht.


RE: Beiträge für Benutzergruppe nicht zählen - Michael - 17.12.2008

Ist $mybb->thread['prefix'] überhaupt definiert? Ich weiß nicht wie die Erweiterung arbeitet, daher kann ich dazu nichts sagen.