Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.8 veröffentlicht (17.10.16)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
[Erledigt] Moderatoren Status im Forum
#21
Ok, dankeschön
Zitieren
#22
Okay, das Problem liegt sehr tief im MyBB.
Wer Moderator ist, ist automatisch Moderator Status. das heißt, man kann ihm den nicht wegnehmen, ohne den Code stark zu ändern.

Warum möchtest du denn ihn nicht als Moderator anzeigen?
Er kann ja als Angezeigte Gruppe "registered" wählen. Dann sollte es gehen, klappt zumindestens bei mir im Board. Er muss es halt nur explizit wählen.

Zitieren
#23
Okay,
ich habe einen absoluten Hardcoded Beta Code.
Er soll eher als Denkanstoss gesehen werden, denn als fertiger Code.

Es müssen folgende Bedingungen bisher zutreffen:
  1. Der User darf nur in einer Kategorie Moderator sein.
  2. Den Moderator Status muss er in der Kategorie bekommen, nicht in einem Forum oder Unterforum.
Folgende Funktionen sind geliefert:
  1. Wenn der Autor kein Moderator ist, bekommt er Standardangaben, es werden also nicht die Sterne und der Titel den er normal hat angezeigt.
  2. In Foren in der der Autor Moderator ist, wird alles normal angezeigt.

Hier was wo geändert werden muss:
Öffne die functions_post.php
Füge vor
PHP-Code:
/**
 * Build a post bit
 *
 * @param array The post data
 * @param int The type of post bit we're building (1 = preview, 2 = pm, 3 = announcement, else = post)
 * @return string The built post bit
 */ 
folgenden Code ein:
PHP-Code:
/**        Unsere Behelfsfunktion für Moderatoren        */
function malte($id) {
    global 
$db$altbg$theme$mybb$postcounter;
    global 
$titlescache$page$templates$forumpermissions$attachcache;
    global 
$lang$ismod$inlinecookie$inlinecount$groupscache$fid;
    global 
$plugins$parser$cache;
$query $db->query("SELECT `fid` , `pid` 
                            FROM `mybb_forums` 
                            WHERE `fid` ="
.$id."
                            LIMIT 0 , 1"
);
    while(
$forumb $db->fetch_array($query))
    {
        if(
$forumb['pid'] == 0)
        {
            
$parent_id $forumb['fid'];
            return 
$parent_id;
        }
        else
        {
            
$parent_id malte($forumb['pid']);
            return 
$parent_id;
        }
    }

Suche
PHP-Code:
    if($post['userusername'])
    { 
// This post was made by a registered user 
füge danach ein
PHP-Code:
##########################################
$query $db->query("SELECT `tid` , `fid` 
                            FROM `mybb_threads` 
                            WHERE `tid` ="
.$post['tid']."
                            LIMIT 0 , 1"
);
while(
$thema $db->fetch_array($query))
{
    
$parent_id malte($thema['fid']);
    
$query $db->query("SELECT * FROM ".TABLE_PREFIX."moderators 
                                            WHERE uid='"
.$post['uid']."'");
    while(
$moderatorinfo $db->fetch_array($query))
    {
        if(
$parent_id != $moderatorinfo['fid'])
        {
            
$post['displaygroup'] = '2';
            
$post['usertitle'] = 'Junior Member';
            
$usergroup['title'] = 'Registered';
            
$usergroup['stars'] = '2';
        }
    }
}
########################################## 

Zitieren
#24
Jan schrieb:Es müssen folgende Bedingungen bisher zutreffen:
  1. Der User darf nur in einer Kategorie Moderator sein.
  2. Den Moderator Status muss er in der Kategorie bekommen, nicht in einem Forum oder Unterforum.

  1. Das ist aber schlecht, da ich mehrere Bereiche habe und ich da auch verschiedene Moderatoren nutze bzw. nutzen möchte.
  2. Einen Moderator in eine gesamten Kategorie ist bei mir fast unmöglich.

Ich will ja nicht unverschämt sein. Nur das ist für mich nicht machbar, da ich ein sehr großes Projekt am laufen habe. Es ist zwar noch ganz am Anfang, aber es wird mit Sicherheit wachsen, da ich mit Freenet zusammen arbeiten werde, was den Support betrifft.
Zitieren
#25
Jan schrieb:Okay,
ich habe einen absoluten Hardcoded Beta Code.
Er soll eher als Denkanstoss gesehen werden, denn als fertiger Code.
Ich versuch das ganze eventuell noch gerade zu biegen.
Kann aber nichts versprechen.

Zitieren
#26
Okay, kleines Update für den Code. Es ist weiterhin nur ein Denkanstoss, aber du siehst, das da ne Menge zu machen wäre.
Wieso möchtest das die Moderatoren nur in einer Kategorie als Moderator angezeigt werden? Es ist doch eigentlich ok, wenn man sie überall als Moderator wieder erkennt oder?

Ansonsten verweise ich dich gerne auf folgende Seiten:
http://ideas.mybboard.net/
http://www.mybbcoder.de/index.php

Naja, hier was geändert werden muss:
Öffne die functions_post.php
Ersetzte
PHP-Code:
##########################################
$query $db->query("SELECT `tid` , `fid` 
                            FROM `mybb_threads` 
                            WHERE `tid` ="
.$post['tid']."
                            LIMIT 0 , 1"
);
while(
$thema $db->fetch_array($query))
{
    
$parent_id malte($thema['fid']);
    
$query $db->query("SELECT * FROM ".TABLE_PREFIX."moderators 
                                            WHERE uid='"
.$post['uid']."'");
    while(
$moderatorinfo $db->fetch_array($query))
    {
        if(
$parent_id != $moderatorinfo['fid'])
        {
            
$post['displaygroup'] = '2';
            
$post['usertitle'] = 'Junior Member';
            
$usergroup['title'] = 'Registered';
            
$usergroup['stars'] = '2';
        }
    }
}
########################################## 
durch:
PHP-Code:
##########################################
$query $db->query("SELECT `tid` , `fid` 
                            FROM `mybb_threads` 
                            WHERE `tid` ="
.$post['tid']."
                            LIMIT 0 , 1"
);
while(
$thema $db->fetch_array($query))
{
    
$parent_id malte($thema['fid']);
    
$query $db->query("SELECT * FROM ".TABLE_PREFIX."moderators 
                                            WHERE uid='"
.$post['uid']."'");
    while(
$moderatorinfo $db->fetch_array($query))
    {
        if(
$parent_id != $moderatorinfo['fid'])
        {
            
$query $db->query("SELECT * FROM ".TABLE_PREFIX."users 
                                        WHERE uid='"
.$post['uid']."'");
            while(
$user $db->fetch_array($query))
            {
                
$post['displaygroup'] = $user['usergroup'];
                
$post['usertitle'] = $user['usertitle'];
                
$query $db->query("SELECT * FROM ".TABLE_PREFIX."usergroups 
                                            WHERE gid='"
.$user['usergroup']."'");
                while(
$user $db->fetch_array($query))
                {
                    
$usergroup['title'] = $user['title'];
                    
$usergroup['stars'] = $user['stars'];
                }
                
$query $db->query("SELECT * FROM ".TABLE_PREFIX."usertitles 
                                            WHERE posts>'"
.$user['posts']."'
                                            ORDER BY `mybb_usertitles`.`posts` ASC
                                            LIMIT 0 , 1"
);
                while(
$user2 $db->fetch_array($query))
                {
                    
$post['usertitle'] = $user2['title'];
                    
$usergroup['stars'] = $user2['stars'];
                }
            }
        }
    }
}
########################################## 

Zitieren
#27
Zitat:Wieso möchtest das die Moderatoren nur in einer Kategorie als Moderator angezeigt werden? Es ist doch eigentlich ok, wenn man sie überall als Moderator wieder erkennt oder?

Das ist ganz einfach zu erklären. Ich werde später viele Moderatoren haben, die nicht von allen Bereichen die selbe Ahnung haben. Meine Moderatoren sind dann wirklich nur dort Moderatoren, wo sie auch als Moderatoren eingetragen sind. Und dort wo sie nicht eingetragen sind, haben sie auch keine Rechte als Moderator. Die User sollen dies gleich erkennen und nicht den falschen Moderator anschreiben, falls es mal Probleme geben sollte oder jemand für ein bestimmtest Thema Support braucht. Ich hoffe, dass war nicht zu schwierig zu verstehen.

PS: Ist die jetzige Code-Änderung das, was ich mir vorgestellt habe, oder was bewirkt die jetzt genau?

Grüße
jhusohöin
Zitieren
#28
Dein, sie bewirkt nur, das die Userinfos wieder genommen werden. Zumindestens soll es das.
Man muss die Abfrage ob der User Moderator ist noch erweitern.
Dann KÖNNTE es so sein wie du möchtest. Aber bitte wende dich auch an die beiden Links die ich oben geschrieben habe.
Danke und bitte

Zitieren
#29
So,

so dürfte es immer klappen. Vielleicht kann Michael sich den Code mal anschauen, wenn er Lust und Zeit hat.

Hast du das Forum schon? Wenn ja, dann mach doch bitte mal einen Klon davon und teste den Code mal.
Es kann sein, das er funktioniert, zumindestens macht er das lokal auf meinem PlugIn Board.

//edit:
Es gab ein Update beim zweiten Code, bitte diesen Code verwenden.

Hier mein Ergebnis:
Öffne /inc/functions_post.php und füge vor
PHP-Code:
/**
 * Build a post bit
 *
 * @param array The post data
 * @param int The type of post bit we're building (1 = preview, 2 = pm, 3 = announcement, else = post)
 * @return string The built post bit
 */ 
diesen Code ein:
PHP-Code:
/**        Unsere Behelfsfunktion für Moderatoren        */
function malte($id) {
    global 
$db$altbg$theme$mybb$postcounter;
    global 
$titlescache$page$templates$forumpermissions$attachcache;
    global 
$lang$ismod$inlinecookie$inlinecount$groupscache$fid;
    global 
$plugins$parser$cache$post;

$query $db->query("SELECT `fid` , `pid` 
                            FROM `mybb_forums` 
                            WHERE `fid` ="
.$id."
                            LIMIT 0 , 1"
);
    while(
$forumb $db->fetch_array($query))
    {
        if(
$forumb['pid'] == 0)
        {
            if(
is_moderator($forumb['fid'],"",$post['uid']) == 'yes')
            {
                
$mod_ok 'yes';
            }
            if(
is_moderator($forumb['fid'],"",$post['uid']) == 'no')
            {
                
$mod_ok 'no';
            }
            return 
$mod_ok;
        }
        else
        {
            
$parent_id malte($forumb['pid']);
            if(
is_moderator($forumb['fid'],"",$post['uid']) == 'yes')
            {
                
$mod_ok 'yes';
            }
            if(
is_moderator($forumb['fid'],"",$post['uid']) == 'no')
            {
                
$mod_ok 'no';
            }
            return 
$mod_ok;
        }
    }

Suche nach:
PHP-Code:
    if($post['userusername'])
    { 
// This post was made by a registered user 
und füge danach diesen Code ein:
PHP-Code:
##########################################
if($post['displaygroup'] == '6' || $post['displaygroup'] == '3')
{
    
$query $db->query("SELECT `tid` , `fid` 
                                FROM `mybb_threads` 
                                WHERE `tid` ="
.$post['tid']."
                                LIMIT 0 , 1"
);
    while(
$thema $db->fetch_array($query))
    {
        
$mod_ok malte($thema['fid']);
        if(
$mod_ok == 'no')
        {
            
$query $db->query("SELECT * FROM ".TABLE_PREFIX."users 
                                                    WHERE uid='"
.$post['uid']."'");
            while(
$user $db->fetch_array($query))
            {
                
$post['displaygroup'] = $user['usergroup'];
                
$post['usertitle'] = $user['usertitle'];
                
$query $db->query("SELECT * FROM ".TABLE_PREFIX."usergroups 
                                                        WHERE gid='"
.$user['usergroup']."'");
                while(
$user $db->fetch_array($query))
                {
                    
$usergroup['title'] = $user['title'];
                    
$usergroup['stars'] = $user['stars'];
                }
                
$query $db->query("SELECT * FROM ".TABLE_PREFIX."usertitles 
                                                        WHERE posts>'"
.$user['posts']."'
                                                        ORDER BY `mybb_usertitles`.`posts` ASC
                                                        LIMIT 0 , 1"
);
                while(
$user2 $db->fetch_array($query))
                {
                    
$post['usertitle'] = $user2['title'];
                    
$usergroup['stars'] = $user2['stars'];
                }
            }
        }
    }
}
########################################## 

Der Code ist nicht getestet und nicht 100% sicher. trotzdem kann er als Grundlage für einen Modifikation benutzt werden

Zitieren
#30
Ich lasse es erstmal lieber, bis da was 100 % raus kommt. Denn ich kann mein Projekt durch Fehler meinerseits nicht gefährden. Es wäre aber nett, mich mal zu informieren, wenn ihr da was ganz sicheres raus habt. Ist natürlich kein muss. Ihr bzw. du habt schon genug für mich getan.

Danke!
Zitieren


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Erledigt/Nicht erledigt Button Mato 4 362 21.11.2015, 12:14
Letzter Beitrag: Mato
  erledigt status eines Beitrags per Icons franz007 20 3.896 21.02.2008, 13:04
Letzter Beitrag: franz007