MyBB.de Forum

Normale Version: Close Thread at reply count
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Eine neue Erweiterung wurde veröffentlicht: Close Thread at Reply Count

Zitat:Allows you to have threads automatically closed upon reaching a certain amount of replies (which can be set in the settings). Please note this plugin will only close a thread when it is posted in (any thread not posted in will remain open).

The setting for this is located at the bottom of the Posting setting group (setting group 13 by default).

UPDATING
(Please see the change log for what the updates fixes)
v1.0.x -> v2.0.1: Deactivate, upload new files and reactivate.
v2.0.x -> v2.0.1: Overwrite old files, no need to deactivate.
Hallo,

es geht um folgendes Plugin:
http://mods.mybb.com/view/close-thread-at-reply-count

Code:
PHP-Code:
<?php
/**
 * Close Thread At Reply Count
 * Copyright 2010 Starpaul20
 */

// Disallow direct access to this file for security reasons
if(!defined("IN_MYBB"))
{
    die(
"Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
}

// Tell MyBB when to run the hooks
$plugins->add_hook("newreply_do_newreply_end""closethread_run");

// The information that shows up on the plugin manager
function closethread_info()
{
    return array(
        
"name"                => "Close Thread At Reply Count",
        
"description"        => "Allows you to have threads automatically closed upon reaching a certain amount of replies.",
        
"website"            => "http://galaxiesrealm.com/index.php",
        
"author"            => "Starpaul20",
        
"authorsite"        => "http://galaxiesrealm.com/index.php",
        
"version"            => "2.0.1",
        
"guid"                => "0bfbf011f50e1ce3607433bdb3b8e9a0",
        
"compatibility"        => "16*"
    
);
}

// This function runs when the plugin is activated.
function closethread_activate()
{
    global 
$db;
    
$query $db->simple_select("settinggroups""gid""name='posting'");
    
$gid intval($db->fetch_field($query"gid"));

    
$insertarray = array(
        
'name' => 'maxreplycount',
        
'title' => 'Maximum Number of Replies',
        
'description' => 'The maximum amount of replies that can be added to a thread before it is closed. 0 for unlimited.',
        
'optionscode' => 'text',
        
'value' => 1500,
        
'disporder' => 26,
        
'gid' => $gid
    
);
    
$db->insert_query("settings"$insertarray);

    
rebuild_settings();
}

// This function runs when the plugin is deactivated.
function closethread_deactivate()
{
    global 
$db;
    
$db->delete_query("settings""name IN('maxreplycount')");

    
rebuild_settings();
}

// Closes the thread if it has more replies than setting
function closethread_run()
{
    global 
$mybb$db;
    if(
$mybb->settings['maxreplycount'] > 0)
    {
        
$query $db->simple_select("posts""COUNT(*) AS max_replies""tid='".intval($mybb->input['tid'])."'");
        
$reply_count $db->fetch_field($query"max_replies");

        if(
$reply_count->= intval($mybb->settings['maxreplycount']))
        {
            
$closethread = array(
                
"closed" => 1,
            );
            
$db->update_query("threads"$closethread"tid='".intval($mybb->input['tid'])."'");
        }
    }
}

?>

So weit so gut, aber ich brauche es für bestimmte Benutzergruppen und Foren. In meinem Fall soll das Plugin nur reagieren, wenn die Benutzergruppen 11 & 12 in den Foren 6 & 7 etwas posten. Mir reicht eine PHP-Änderung. Muss also nicht unbedingt per ACP einstellbar sein. Ich wäre sehr dankbar, wenn mir dabei jemand helfen könnte.
Ohne es ausgiebig geprüft zu haben. Ersetze mal die Funktion
PHP-Code:
// Closes the thread if it has more replies than setting
function closethread_run()
{
    global 
$mybb$db;
    if(
$mybb->settings['maxreplycount'] > 0)
    {
        
$query $db->simple_select("posts""COUNT(*) AS max_replies""tid='".intval($mybb->input['tid'])."'");
        
$reply_count $db->fetch_field($query"max_replies");

        if(
$reply_count->= intval($mybb->settings['maxreplycount']))
        {
            
$closethread = array(
                
"closed" => 1,
            );
            
$db->update_query("threads"$closethread"tid='".intval($mybb->input['tid'])."'");
        }
    }

durch
PHP-Code:
// Closes the thread if it has more replies than setting
function closethread_run()
{
    global 
$mybb$db;
    
$my_usergroup = array(11,12);
    
$my_fid = array(6,7);
    if(
$mybb->settings['maxreplycount'] > && in_array($mybb->usergroup['gid'], $my_usergroup) && in_array($fid$my_fid))
    {
        
$query $db->simple_select("posts""COUNT(*) AS max_replies""tid='".intval($mybb->input['tid'])."'");
        
$reply_count $db->fetch_field($query"max_replies");

        if(
$reply_count->= intval($mybb->settings['maxreplycount']))
        {
            
$closethread = array(
                
"closed" => 1,
            );
            
$db->update_query("threads"$closethread"tid='".intval($mybb->input['tid'])."'");
        }
    }

Danke Jockl, aber klappt nicht. Ich muss leider auch zugestehen dass ich hier einen grossen Gedankenfehler gemacht habe, so dass selbst wenn es klappen würde, alles so nicht zu gebrauchen ist. Folgendes:

Mir geht es darum, dass wenn ein Thema aus insgesamt 5 Beiträgen (4 Antworten) besteht, dass die Benutzergruppen 6 & 7 in den Foren 11 & 12 nicht mehr antworten können. Allerdings sollte nach wie vor das bearbeiten von Beiträgen möglich sein, was ja dann bei Schliessung des Themas nicht mehr geht. Wahrscheinlich ist es einfacher anstelle dieses Plugins anderen Code zu nutzen. Doch ich kann sowas leider nicht. Gewisse PHP Grundkenntnisse oder allgemeines Verständnis habe ich, aber sowas zu coden ist bei meinem Wissenstand noch nicht möglich. Vielleicht kann man das Plugin ja doch irgendwie für meinen Zweck anpassen. Keine Ahnung was jetzt leichter wäre. Könntest Du dabei helfen? Häng hier gerade echt in den Seilen Big Grin

btw: Dachgeschoss und 30° in der Hütte, da will das Gehirn wohl nicht so arbeiten wie sonst Big Grin
(21.08.2012, 16:37)GreenDragon schrieb: [ -> ]Häng hier gerade echt in den Seilen Big Grin

btw: Dachgeschoss und 30° in der Hütte, da will das Gehirn wohl nicht so arbeiten wie sonst Big Grin

Das geht mir, bei heute gemessenen 40°, leider auch nicht anders. Wink
Eine neue Version wurde veröffentlicht: Close Thread at Reply Count 2.0.1