Webboard

Pełna wersja: Dodanie nowej grupy rang
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
wersja skryptu MyBB:1.6
adres forum:www.poldek.xaa.pl

Witam
Chciałbym zmienić usergrup bym mógł pod spodem utworzyć kolejne rangi na kolejne serwery. np:
Rangi forum:
Admin ,mod
poniżej
Rangi serwera
Hq ,skrypter itd.

Mniej więcej chodzi mi o to :
http://scr.hu/1gu0/ulu1m

Posiadam plugin :
Usergroup Legend (3.0)
kod:
Kod PHP:
<?php
/*
    ===============================================================
    @author     : Surdeanu Mihai ;
    @date       : 1 iulie 2011 ;
    @version    : 3.0 ;
    @mybb       : compatibilitate cu MyBB 1.6.x ;
    @description: Aceasta modificare genereaza o lista cu grupurile de pe forumul tau, afisand-o in zona statisticilor, din subsol.
    @homepage   : http://mybb.ro ! Viziteaza-ne acum!
    @copyright  : Licenta MyBB Romania. Toate drepturile rezervate.
    ===============================================================
    @change log :
    [v3.0][1 iulie 2011] - posibilitatea rularii pe baza cache-ului, in acest fel saitul se incarca mai repede, fixarea unui posibil atac de tip SQL Injection din Admin CP;
    [v2.0][18 august 2010] - modul automat a temei, fixarea unui bug la interogarea bazei de date;
    [v1.0][5 august 2010] - prima versiune ;
    ===============================================================
*/
// Test impotriva accesarii directe, din browser a fisierului modificarii
if(!defined("IN_MYBB"))
{
    die(
"Acest fisier nu poate fi accesat direct.");
}
// Carligul de legatura cu forumul tau
$plugins->add_hook("index_start""grouplegend_show");
// Functie pentru intoarcerea informatiilor despre modificare
function grouplegend_info()
{
    return array(
        
"name"                => "Usergroup Legend",
        
"description"        => "Show a legend of your selected usergroups. (on footer)",
        
"website"            => "http://mybb.ro",
        
"author"            => "Surdeanu Mihai",
        
"authorsite"        => "http://mihu.me",
        
"version"            => "3.0",
        
"guid"                => "8a96dd36a70537d9ce3c47b1479fd7c1",
        
'compatibility'     => "16*",
                );
}
// Functie pentru activarea modificarii
function grouplegend_activate()
{
    global 
$db;
    
$grup_de_setari = array(
        
"gid"               => NULL,
        
"name"              => "ugl_mybbro",
        
"title"             => "Usergroup Legend",
        
"description"       => "This will add a nice little legend at the end of your forum, above the Board Statistics.",
        
"disporder"         => "35",
        
"isdefault"         => "no"
                           
);
    
$db->insert_query("settinggroups"$grup_de_setari);
    
$gid $db->insert_id();
    
$setare_1 = array(
        
"sid"               => NULL,
        
"name"              => "ugl_enabled",
        
"title"             => "Is enabled ?",
        
"description"       => "Can this plugin do his job?",
        
"optionscode"       => "yesno",
        
"value"             => "no",
        
"disporder"         => "1",
        
"gid"               => intval($gid)
                     );
    
$setare_2 = array(
        
"sid"               => NULL,
        
"name"              => "ugl_cache_enabled",
        
"title"             => "Cache data ?",
        
"description"       => "Now we have the ability to work with cache data, and as a result we increase your server performances.",
        
"optionscode"       => "yesno",
        
"value"             => "yes",
        
"disporder"         => "2",
        
"gid"               => intval($gid)
                     );
    
$setare_3 = array(
        
"sid"               => NULL,
        
"name"              => "ugl_mode",
        
"title"             => "Theme type :",
        
"description"       => "If you choose the \'Theme without images\' the plugin image will not be displayed, else if you choose \'Theme with images\' the group legend image will be displayed! (Default : Automatic)",
        
"optionscode"       => "select\n0=Automatic\n1=Theme without images\n2=Theme with images",
        
"value"             => "0",
        
"disporder"         => "3",
        
"gid"               => intval($gid)
                     );
    
$setare_4 = array(
        
"sid"               => NULL,
        
"name"              => "ugl_orderbyelement",
        
"title"             => "Element show/order :",
        
"description"       => "Please specify the field from the database that will be ordering / show groups! (Default : title)",
        
"optionscode"       => "select\ngid=gid\nusertitle=usertitle\ntitle=title",
        
"value"             => "title",
        
"disporder"         => "4",
        
"gid"               => intval($gid)
                     );
    
$setare_5 = array(
        
"sid"                => NULL,
        
"name"                => "ugl_ordergrouplegend",
        
"title"                => "Show on this order :",
        
"description"        => "Please specify the display order of groups! Pay attention to the field specified at the above setting! You can find how to use it by reading ReadMe.pdf.",
        
"optionscode"        => "text",
        
"value"                => "ALL[ASC]",
        
"disporder"            => "5",
        
"gid"                => intval($gid)
                     );
    
$db->insert_query("settings"$setare_1);
    
$db->insert_query("settings"$setare_2);  
    
$db->insert_query("settings"$setare_3); 
    
$db->insert_query("settings"$setare_4);    
    
$db->insert_query("settings"$setare_5); 
    
// se reconstruiesc toate setarile
    
rebuild_settings();   
    
$sablon = array(
        
"tid"        => NULL,
        
"title"        => "ugl_template",
        
"template"    => "<!-- Powered by MyBB Romania : http://mybb.ro -->\n{\$ugl_final}",
        
"sid"        => "-1"
                     
);
    
// se insereaza sablonul in sistem
    
$db->insert_query("templates"$sablon);
    require 
MYBB_ROOT."/inc/adminfunctions_templates.php";
    
// se face legatura sablonului cu tema de pe forum
    
find_replace_templatesets("index_boardstats"'#{\$whosonline}#'"{\$whosonline}\n{\$ugl_userlegend}");
}
//Deactivate plugin
function grouplegend_deactivate()
{
    global 
$db;
    
// se sterg din baza de date toate setarile adaugate de modificare
    
$db->delete_query('settings''name IN("ugl_enabled", "ugl_cache_enabled", "ugl_mode", "ugl_orderbyelement", "ugl_ordergrouplegend")');
    
$db->delete_query('settinggroups''name = "ugl_mybbro"');
    
// se reconstruiesc toate setarile
    
rebuild_settings();
    
// se sterge din baza de date sablonul adaugat
    
$db->delete_query('templates''title = "ugl_template"');       
    require 
MYBB_ROOT."/inc/adminfunctions_templates.php";
    
// se desface legatura sablonului cu tema de pe forum
    
find_replace_templatesets("index_boardstats"'#(\n?){\$ugl_userlegend}#'''0);
}
// Functia de cautare, complexitate O(n)
function grouplegend_search($array$key$value)
{
    foreach (
$array as $subarray)
        if (
$subarray[$key] == $value)
            return array(
                
'title' => $subarray['title'],
                
'namestyle' => $subarray['namestyle']
                        );
    return array();
}
// Functia de comparare, necesara sortarii
function grouplegend_compare($array1$array2
{
    global 
$mybb;
    
// se compara ca stringuri si nu ca numere
    
return strcmp($array1[$mybb->settings['ugl_orderbyelement']], $array2[$mybb->settings['ugl_orderbyelement']]);
}
// Functia de generare a template-ului
function grouplegend_template($final$type
{
    if (
$type == "complex") {
        return 
"<tr><td class=\"trow1 smalltext\" align=\"center\" width=\"1\"><img src=\"images/group_legend.png\" alt=\"Usergroup Legend\" /></td><td colspan=\"6\" class=\"trow1\"><span class=\"smalltext\">".$final."</span></td></tr>";
    }
    else {
        return 
"<tr><td class=\"trow1\"><span class=\"smalltext\">".$final."</span></td></tr>";   
    }
}
// Functia care face toata treaba
function grouplegend_show()
{
    
// Variabile globale
    
global $db$mybb$ugl_userlegend$templates$cache;
    
// Variabile de lucru
    
$final "";
    
// Se verifica daca acest plugin are permisiunea de a rula
    
if ($mybb->settings['ugl_enabled'] == 1
    {
        
// Se creeaza un vector cu ordinea elementelor alese
        
$ordergrouplegend explode(','$mybb->settings['ugl_ordergrouplegend']);
        
// Versiunea 3.0 a acestui plugin utilizeaza cache-uri. Performanta este astfel sporita!
        
if ($mybb->settings['ugl_cache_enabled'] == 1
        {
            
// se merge pe varianta de caching
            
$groupscache $cache->read("usergroups");
            
// daca cache-ul de grupuri de utilizatori nu exista atunci se face update
            
if(!is_array($groupscache)) {
                
$cache->updateusergroups();
                
$groupscache $cache->read("usergroups");
            }
            
// acum totul ar trebui sa fie in regula cu cache-ul grupurilor de useri
            // verificam mai intai daca exista cuvantul cheie "all" in lista
            
if (in_array("ALL[ASC]"$ordergrouplegend) || in_array("ALL[DESC]"$ordergrouplegend))
            {
                
// se ordoneaza alfabetic mai intai
                
usort($groupscache"grouplegend_compare");
                if (
in_array("ALL[DESC]"$ordergrouplegend)) {
                    
// daca apare descrescator atunci se inverseaza array-ul
                    
$groupscache array_reverse($groupscache);
                }
                
// fiecare grup din cache este afisat
                
foreach ($groupscache as $grup)
                {
                    
// incepe sa se creeze formatul cu tot cu titlu si culori
                    
$format $grup['namestyle'];
                    
$userin substr_count($format"{username}");
                    if(
$userin == 0)
                    {
                        
$format "{username}";
                    }
                    
$format stripslashes($format);
                    
$usergroup str_replace("{username}"$grup['title'], $format);
                    
// se adauga stringul la structura finala
                    
$final .= " [".$usergroup."] ";
                } 
            }
            else
            {
                
// pentru fiecare element din lista propusa de user
                   
foreach($ordergrouplegend as $orderelement)
                {
                    
// se verifica daca exista grupul in cache
                    
$rezultat grouplegend_search($groupscache$mybb->settings['ugl_orderbyelement'], $orderelement);
                    
// daca este array nevid atunci s-a gasit rezultatul
                    
if (count($rezultat) > 0)
                    {
                        
// incepe sa se creeze formatul cu tot cu titlu si culori
                        
$format $rezultat['namestyle'];
                        
$userin substr_count($format"{username}");
                        if(
$userin == 0) {
                            
$format "{username}";
                        }
                        
$format stripslashes($format);
                        
$usergroup str_replace("{username}"$rezultat['title'], $format);
                        
// se adauga stringul la structura finala
                        
$final .= " [".$usergroup."] ";
                    }
                    
// pe cealalta ramura nu ne intereseaza
                    // se repeta structura repetitiva    
                
}
            }
        }
        else
        {
            
// verificam mai intai daca exista cuvantul cheie "all" in lista
            
if (in_array("ALL[ASC]"$ordergrouplegend) || in_array("ALL[DESC]"$ordergrouplegend))
            {
                
// se realizeaza interogarea
                // Versiunea 3.0 securizeaza interogarea MySQL impotriva unor injectii de tip SQL Injection din Admin CP
                
if (in_array("ALL[DESC]"$ordergrouplegend)) {
                    
// daca apare descrescator atunci se inverseaza interogarea
                    
$interogare $db->simple_select("usergroups""title, namestyle""", array("order_by" => "title""order_dir" => "DESC"));
                }
                else {
                    
$interogare $db->simple_select("usergroups""title, namestyle""", array("order_by" => "title"));
                }
                
// procesari de date
                
while ($group $db->fetch_array($interogare))
                {
                    
// incepe sa se creeze formatul cu tot cu titlu si culori
                    
$format $group['namestyle'];
                    
$userin substr_count($format"{username}");
                    if(
$userin == 0) {
                        
$format "{username}";
                    }
                    
$format stripslashes($format);
                    
$usergroup str_replace("{username}"$group['title'], $format);
                    
// se aduga la stringul final
                    
$final .= " [".$usergroup."] ";
                }
            }
            else 
            {
            
// userul nu a ales cache-ul ca solutie pentru forumul sau
            
foreach($ordergrouplegend as $orderelement)
            {
                
// se realizeaza interogarea
                // Versiunea 3.0 securizeaza interogarea MySQL impotriva unor injectii de tip SQL Injection din Admin CP
                
$interogare $db->simple_select("usergroups""title, namestyle"$mybb->settings['ugl_orderbyelement']." = '".$db->escape_string($orderelement)."'", array("limit" => 1));
                
// se creeaza vectorul cu datele
                
$group $db->fetch_array($interogare);
                
// se verifica daca s-a intors ceva din baza de date
                
if (!empty($group))
                {
                    
// incepe sa se creeze formatul cu tot cu titlu si culori
                    
$format $group['namestyle'];
                    
$userin substr_count($format"{username}");
                    if(
$userin == 0) {
                        
$format "{username}";
                    }
                    
$format stripslashes($format);
                    
$usergroup str_replace("{username}"$group['title'], $format);
                    
// se aduga la stringul final
                    
$final .= " [".$usergroup."] ";
                }
                
// daca nu s-a intors nimic din baza de date, se trece la urmatorul element de ordine
            
}
            }
         }
         
// se produce afisarea datelor
         
switch($mybb->settings['ugl_mode'])  
         {  
            case 
:
                
// tema avansata, cu imagini la statistici
                
$ugl_final grouplegend_template($final"complex");
                
// in sfarsit se creeaza template-ul cu datele prelucrate
                
eval("\$ugl_userlegend = \"".$templates->get("ugl_template")."\";"); 
                break;
            case 
:
                
// tema simpla, fara imagini la statistici   
                
$ugl_final grouplegend_template($final"simple");
                
// in sfarsit se creeaza template-ul cu datele prelucrate
                
eval("\$ugl_userlegend = \"".$templates->get("ugl_template")."\";"); 
                break;
            default :
                
// cazul in care este setat pe Automatic
                // va trebui sa procesam template-ul mama si sa vedem daca are sau nu mai multe coloane
                
if (strpos($templates->get("index_whosonline"), "colspan") === false) {
                    
// atunci e tema simpla
                    
$ugl_final grouplegend_template($final"simple");
                }
                else {
                    
// e tema avansata, complexa
                    
$ugl_final grouplegend_template($final"complex");
                }
                eval(
"\$ugl_userlegend = \"".$templates->get("ugl_template")."\";"); 
         }
     }
    
// daca pluginul nu e activ nu se intampla nimic !
}
?>
Tworzysz wszystko w szablonie ugl_template (szablony globalne), według np. tego: https://webboard.pl/wiki.php?legenda-gru...ujacy.html