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
Das Pluginsystem von myBB
#21
Ok gut ich denke auch das ohne den eigentlichen code kein weiterkommen möglich ist.. in der Regel mache ich dies nicht gerne Code zu posten der unfertig ist oder nicht richtig funktioniert.. aber da wir so nicht weiter kommen..

Hier das besagte Plugin: http://exp-soft.de/bullshid/toplist.zip

Das Problem, soweit läuft alles ganz gut die abfragen sind alle korrekt, das Problem ist jetzt wenn ich ein neues Thema aufmache oder auf einen beitrag antworte wird die Anzeige nicht aktualisiert. auch ein Reload der page bringt nichts.. erst das Deaktivieren und Aktivieren des Plugins bringt den erwünschten effekt das die daten aktuallisiert werden.. was aber so nicht sein soll.. es sollte sich halt durch reload aktuallisieren...

hier nochmal ein beispiel Bild von meiner Toplist, und der Overview...    
Das Leben ist schon ein scheiss Game, aber mit einer Pervers geilen Grafik Wink
DOS Forum | DOSHISTORY
Zitieren
#22
Du führst die Funktionen beim Aktivieren vom Plugin aus und schreibst die Daten in das Template. Du musst aber den Code bei jedem Aufruf ausführen und als Variable ins Template einfügen.
Versuche das:
PHP-Code:
<?php
#############################################################
#                     Top List 0.5 Beta                           #
#############################################################
#                                                               #
#     Explora.Pc's Software                                      #
#     Copyright (c) 1998 - 2007                                  #
#     by. Benjamin Nehls                                           #
#                                                               #
#     Website: www.Exp-Soft.de                                   #
#                                                               #
# learn from this file but do not change any data on this   #
# file write your file / plugin self!                         #
#                                                                #
#############################################################

if(!defined("IN_MYBB")) {
    die(
"Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
}

$plugins->add_hook("index_start","toplist");



function 
toplist_info()
{
    return array(
        
"name"        => "TopList",
        
"description" => "Zeigt die letzten Beitr&auml;ge der User an & die besten Poster an.",
        
"website"     => "http://www.Exp-Soft.de",
        
"author"      => "Benjamin Nehls",
        
"authorsite"  => "http://www.Exp-Soft.de",
        
"version"     => "0.5 Beta",
        );
}

function 
toplist_activate()
{
global 
$db;

require 
MYBB_ROOT."/inc/adminfunctions_templates.php";
    
find_replace_templatesets("index"'#{\$forums}(\r?)\n#'"{\$forums}\n{\$toplist}\n");

$templatearray = array(
        
"tid" => "NULL",
        
"title" => "index_toplist",
        
"template" => "<table border=\"0\" cellspacing=\"{$theme['borderwidth']}\" cellpadding=\"{$theme['tablespace']}\" class=\"tborder\">
<thead>
<tr>
<td class=\"thead\" colspan=\"2\">
<div class=\"expcolimage\"><img src=\"
{$theme['imgdir']}/collapse{$collapsedimg['blabla']}.gif\" id=\"blabla_img\" class=\"expander\" alt=\"[-]\" /></div>
<div><strong>
{$lang->boardstats} <a href=\"http://www.Exp-Soft.de\" target=\"_blank\">Top List</a></strong></div>
</td>
</tr>
<tbody style=\"
{$collapsed['toplist_e']}\" id=\"toplist_e\">
 <tr>
  <td class=\"tcat\" width=\"40%\"><strong>Top 10 Poster</strong></td>
  <td class=\"tcat\"><strong>Neueste Beitr&auml;ge</strong></td>
 </tr>
 <tr>
  <td class=\"trow1\" valign=\"top\">
{$top10}</td>
  <td class=\"trow1\" valign=\"top\">
{$thrd10}</td>
 </tr>
</tbody>
</thead>
</table>
<div>&nbsp;</div>"
,
        
"sid" => "-1",
        );
    
$db->insert_query(TABLE_PREFIX."templates"$templatearray);



 
 
$toplist_group = array(
        
"gid" => "NULL",
        
"name" => "TopList",
        
"title" => "TopList",
        
"description" => "Zeigt die letzten Beitr&auml;ge der User an & die besten Poster an.",
        
"disporder" => "1",
        
"isdefault" => "no",
        );
    
$db->insert_query(TABLE_PREFIX."settinggroups"$toplist_group);
    
$gid $db->insert_id(); 
  
  
$toplist_1 = array(
        
"sid" => "NULL",
        
"name" => "toplist_topposter",
        
"title" => "Zeige Beste Poster an?",
        
"description" => "Sollen die besten Poster angezeigt werden?",
        
"optionscode" => "yesno",
        
"value" => "yes",
        
"disporder" => "1",
        
"gid" => intval($gid),
        );
    
$db->insert_query(TABLE_PREFIX."settings"$toplist_1);    
    
    
$toplist_2 = array(
        
"sid" => "NULL",
        
"name" => "toplist_last_post",
        
"title" => "Zeige die letzten Beiträge an?",
        
"description" => "Sollen die letzten Beiträge angezeigt werden?",
        
"optionscode" => "yesno",
        
"value" => "yes",
        
"disporder" => "2",
        
"gid" => intval($gid),
        );
        
    
$db->insert_query(TABLE_PREFIX."settings"$toplist_2); 

rebuild_settings();
}

function 
toplist_deactivate()
{
global 
$db;

    require 
MYBB_ROOT."/inc/adminfunctions_templates.php";
    
find_replace_templatesets("index"'#{\$toplist}(\r?)\n#'""0);
    
$db->query("DELETE FROM ".TABLE_PREFIX."templates WHERE title='index_toplist'");
    
// Einstellungsgruppen löschen
    
$query $db->query("SELECT gid FROM ".TABLE_PREFIX."settinggroups WHERE name='TopList'");
    
$g $db->fetch_array($query);
    
$db->query("DELETE FROM ".TABLE_PREFIX."settinggroups WHERE gid='".$g['gid']."'");

    
// Einstellungen löschen
    
$db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE gid='".$g['gid']."'");

    
// Rebuilt settings.php
    
rebuild_settings();
}



// ######################   Hier werden die Besten Poster ermittelt und ausgegeben #####################################
function top10()
{
 global 
$db;
 
$top10 .= "<table border=\"0\" width=\"100%\"><tr><td width=\"60%\"><strong>Username</strong></td><td width=\"40%\" align=\"right\"><strong>Beitr&auml;ge</strong></td></tr>";
 
 
$query2 $db->query ("SELECT username,uid,postnum FROM ".TABLE_PREFIX."users ORDER BY postnum DESC LIMIT 0,10"); 
 while (
$topposters $db->fetch_array($query2)) 
 {
  
$top10 .= "<tr><td class=\"smalltext\"><a href=\"member.php?action=profile&uid=".$topposters['uid']."\">".$topposters['username']."</a></td><td align=\"right\" class=\"smalltext\"><a href=\"search.php?action=finduser&uid=".$topposters['uid']."\">".$topposters['postnum']."</a></td></tr>";
 }

 
$top10 .= "</table>";

 return 
$top10;        
}

// ######################   Hier werden die letzten Beiträge der User ermittelt und ausgegeben #########################
function thrd10()
{
 global 
$db;
 
$thrd10 .= "<table border=\"0\" width=\"100%\"><tr><td width=\"60%\"><strong>Thread</strong></td><td width=\"20%\" align=\"right\"><Strong>Erstellt von</strong></td><td width=\"20%\" align=\"right\"><Strong>Antowrten</strong></td></tr>";
 
 
$query2 $db->query ("SELECT * FROM ".TABLE_PREFIX."threads ORDER BY lastpost DESC LIMIT 0,10")or die ("error");
 while (
$threadsdb $db->fetch_array($query2))
 {
  
$query3 $db->query ("SELECT uid,pid,tid FROM ".TABLE_PREFIX."posts WHERE tid=".$threadsdb['tid']."");
  
$threadsdb2 $db->fetch_array($query3);
  
$thrd10 .= "<tr><td width=\"60%\" class=\"smalltext\"><a href=\"showthread.php?tid=".$threadsdb['tid']."&pid=".$threadsdb2['pid']."#pid".$threadsdb2['pid']."\">".substr(mysql_real_escape_string($threadsdb['subject']),0,50)."</a></td><td width=\"20%\" align=\"right\" class=\"smalltext\">".$threadsdb['lastposter']."</td><td width=\"20%\" align=\"right\" class=\"smalltext\">".$threadsdb['replies']."</td></tr>";
 }
 
 
$thrd10 .= "</table>";
 return 
$thrd10;
}

function 
toplist() {
// Gobale Variablen
global $db$mybb$cache$templates$lang$toplist;
$top10 top10();
$thrd10 thrd10();
eval(
"\$toplist = \"".$templates->get("index_toplist")."\";");


// ######################   Einstellungen erneuern #########################
if(!function_exists("rebuild_settings")) {

    function 
rebuild_settings() {
        global 
$db;
        
$query $db->query("SELECT * FROM ".TABLE_PREFIX."settings ORDER BY title ASC");
        while(
$setting $db->fetch_array($query)) {
            
$setting['value'] = addslashes($setting['value']);
            
$settings .= "\$settings['".$setting['name']."'] = \"".$setting['value']."\";\n";
        }
        
$settings "<?php\n/*********************************\ \n  DO NOT EDIT THIS FILE, PLEASE USE\n  THE SETTINGS EDITOR\n\*********************************/\n\n$settings\n?>";
        
$file fopen(MYBB_ROOT."/inc/settings.php""w");
        
fwrite($file$settings);
        
fclose($file);
    }
}
?>
PS: Die Einstellungen werden nicht beachtet. Du solltest die auch abfragen. Wink
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#23
Jup, und nun ist da wieder das Problem, es Funktioniert nicht, so hatte ich das anfangs auch nach deiner Anleitung gecodet..

Allerdings ist das Resultat dann dieses:    

Und genau das Verstehe ich nicht.. denn eigentlich müsste es doch funktionieren?!

P.s: das Script ist ja noch Beta in der Finale wird das dann auch alles beachtet aber erstmal hab ich halt dieses Problem ohne die lösung komm ich dann nicht weiter..
Das Leben ist schon ein scheiss Game, aber mit einer Pervers geilen Grafik Wink
DOS Forum | DOSHISTORY
Zitieren
#24
hey leute!!
versucht mal diesen code:
PHP-Code:
<?php
#############################################################
#                     Top List 0.5 Beta                           #
#############################################################
#                                                               #
#     Explora.Pc's Software                                      #
#     Copyright (c) 1998 - 2007                                  #
#     by. Benjamin Nehls                                           #
#                                                               #
#     Website: www.Exp-Soft.de                                   #
#                                                               #
# learn from this file but do not change any data on this   #
# file write your file / plugin self!                         #
#                                                                #
#############################################################

if(!defined("IN_MYBB")) {
    die(
"Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
}

$plugins->add_hook("index_start","toplist");



function 
toplist_info()
{
    return array(
        
"name"        => "TopList",
        
"description" => "Zeigt die letzten Beiträge der User an & die besten Poster an.",
        
"website"     => "http://www.Exp-Soft.de",
        
"author"      => "Benjamin Nehls",
        
"authorsite"  => "http://www.Exp-Soft.de",
        
"version"     => "0.5 Beta",
        );
}

function 
toplist_activate()
{
global 
$db;

require 
MYBB_ROOT."/inc/adminfunctions_templates.php";
    
find_replace_templatesets("index"'#{\$forums}(\r?)\n#'"{\$forums}\n{\$toplist}\n");

$templatearray = array(
        
"tid" => "NULL",
        
"title" => "index_toplist",
        
"template" => "<table border=\"0\" cellspacing=\"{$theme['borderwidth']}\" cellpadding=\"{$theme['tablespace']}\" class=\"tborder\">
<thead>
<tr>
<td class=\"thead\" colspan=\"2\">
<div class=\"expcolimage\"><img src=\"
{$theme['imgdir']}/collapse{$collapsedimg['blabla']}.gif\" id=\"blabla_img\" class=\"expander\" alt=\"[-]\" /></div>
<div><strong>
{$lang->boardstats} <a href=\"http://www.Exp-Soft.de\" target=\"_blank\">Top List</a></strong></div>
</td>
</tr>
<tbody style=\"
{$collapsed['toplist_e']}\" id=\"toplist_e\">
 <tr>
  <td class=\"tcat\" width=\"40%\"><strong>Top 10 Poster</strong></td>
  <td class=\"tcat\"><strong>Neueste Beiträge</strong></td>
 </tr>
 <tr>
  <td class=\"trow1\" valign=\"top\">
{$top10}</td>
  <td class=\"trow1\" valign=\"top\">
{$thrd10}</td>
 </tr>
</tbody>
</thead>
</table>
<div> </div>"
,
        
"sid" => "-1",
        );
    
$db->insert_query(TABLE_PREFIX."templates"$templatearray);



 
 
$toplist_group = array(
        
"gid" => "NULL",
        
"name" => "TopList",
        
"title" => "TopList",
        
"description" => "Zeigt die letzten Beiträge der User an & die besten Poster an.",
        
"disporder" => "1",
        
"isdefault" => "no",
        );
    
$db->insert_query(TABLE_PREFIX."settinggroups"$toplist_group);
    
$gid $db->insert_id(); 
  
  
$toplist_1 = array(
        
"sid" => "NULL",
        
"name" => "toplist_topposter",
        
"title" => "Zeige Beste Poster an?",
        
"description" => "Sollen die besten Poster angezeigt werden?",
        
"optionscode" => "yesno",
        
"value" => "yes",
        
"disporder" => "1",
        
"gid" => intval($gid),
        );
    
$db->insert_query(TABLE_PREFIX."settings"$toplist_1);    
    
    
$toplist_2 = array(
        
"sid" => "NULL",
        
"name" => "toplist_last_post",
        
"title" => "Zeige die letzten Beiträge an?",
        
"description" => "Sollen die letzten Beiträge angezeigt werden?",
        
"optionscode" => "yesno",
        
"value" => "yes",
        
"disporder" => "2",
        
"gid" => intval($gid),
        );
        
    
$db->insert_query(TABLE_PREFIX."settings"$toplist_2); 

rebuild_settings();
}

function 
toplist_deactivate()
{
global 
$db;

    require 
MYBB_ROOT."/inc/adminfunctions_templates.php";
    
find_replace_templatesets("index"'#{\$toplist}(\r?)\n#'""0);
    
$db->query("DELETE FROM ".TABLE_PREFIX."templates WHERE title='index_toplist'");
    
// Einstellungsgruppen löschen
    
$query $db->query("SELECT gid FROM ".TABLE_PREFIX."settinggroups WHERE name='TopList'");
    
$g $db->fetch_array($query);
    
$db->query("DELETE FROM ".TABLE_PREFIX."settinggroups WHERE gid='".$g['gid']."'");

    
// Einstellungen löschen
    
$db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE gid='".$g['gid']."'");

    
// Rebuilt settings.php
    
rebuild_settings();
}



// ######################   Hier werden die Besten Poster ermittelt und ausgegeben #####################################
function top10()
{
 global 
$db;
 
$top10 .= "<table border=\"0\" width=\"100%\"><tr><td width=\"60%\"><strong>Username</strong></td><td width=\"40%\" align=\"right\"><strong>Beiträge</strong></td></tr>";
 
 
$query2 $db->query ("SELECT username,uid,postnum FROM ".TABLE_PREFIX."users ORDER BY postnum DESC LIMIT 0,10") OR die($db->error()); 
 while (
$topposters $db->fetch_array($query2)) 
 {
  
$top10 .= "<tr><td class=\"smalltext\"><a href=\"member.php?action=profile&uid=".$topposters['uid']."\">".$topposters['username']."</a></td><td align=\"right\" class=\"smalltext\"><a href=\"search.php?action=finduser&uid=".$topposters['uid']."\">".$topposters['postnum']."</a></td></tr>";
 }

 
$top10 .= "</table>";

 return 
$top10;        
}

// ######################   Hier werden die letzten Beiträge der User ermittelt und ausgegeben #########################
function thrd10()
{
 global 
$db;
 
$thrd10 .= "<table border=\"0\" width=\"100%\"><tr><td width=\"60%\"><strong>Thread</strong></td><td width=\"20%\" align=\"right\"><Strong>Erstellt von</strong></td><td width=\"20%\" align=\"right\"><Strong>Antowrten</strong></td></tr>";
 
 
$query2 $db->query ("SELECT * FROM ".TABLE_PREFIX."threads ORDER BY lastpost DESC LIMIT 0,10") OR die($db->error());
 while (
$threadsdb $db->fetch_array($query2))
 {
  
$query3 $db->query ("SELECT uid,pid,tid FROM ".TABLE_PREFIX."posts WHERE tid=".$threadsdb['tid']."");
  
$threadsdb2 $db->fetch_array($query3);
  
$thrd10 .= "<tr><td width=\"60%\" class=\"smalltext\"><a href=\"showthread.php?tid=".$threadsdb['tid']."&pid=".$threadsdb2['pid']."#pid".$threadsdb2['pid']."\">".substr(mysql_real_escape_string($threadsdb['subject']),0,50)."</a></td><td width=\"20%\" align=\"right\" class=\"smalltext\">".$threadsdb['lastposter']."</td><td width=\"20%\" align=\"right\" class=\"smalltext\">".$threadsdb['replies']."</td></tr>";
 }
 
 
$thrd10 .= "</table>";
 return 
$thrd10;
}

function 
toplist() {
// Gobale Variablen
global $db$mybb$cache$templates$lang$toplist;
$top10 top10();
$thrd10 thrd10();
eval(
"\$toplist = \"".$templates->get("index_toplist")."\";");


// ######################   Einstellungen erneuern #########################
if(!function_exists("rebuild_settings")) {

    function 
rebuild_settings() {
        global 
$db;
        
$query $db->query("SELECT * FROM ".TABLE_PREFIX."settings ORDER BY title ASC");
        while(
$setting $db->fetch_array($query)) {
            
$setting['value'] = addslashes($setting['value']);
            
$settings .= "\$settings['".$setting['name']."'] = \"".$setting['value']."\";\n";
        }
        
$settings "<?php\n/*********************************\ \n  DO NOT EDIT THIS FILE, PLEASE USE\n  THE SETTINGS EDITOR\n\*********************************/\n\n$settings\n?>";
        
$file fopen(MYBB_ROOT."/inc/settings.php""w");
        
fwrite($file$settings);
        
fclose($file);
    }
}
?>

mfg,
marcel

änderungen:
sollte es einen fehler im mysql query ist, wird dies ausgegeben!
Zitieren
#25
nope ist kein MySQL fehler, die Variablen sind einfach leer... Sad
Das Leben ist schon ein scheiss Game, aber mit einer Pervers geilen Grafik Wink
DOS Forum | DOSHISTORY
Zitieren
#26
Dein Fehler liegt im Einfügen des Templates.
Dadurch, dass du die Variablen/Funktionen beim einspeisen des Templates nicht escaped hast, wurden diese beim Einfügen des Templates ausgeführt und bereits im ausgeführten Zustand in Template geschrieben.
Das im Anhang enthaltene Archiv enthält eine funktionierende Version deines Plugins.
Ich habe darin Kleinigkeiten angepasst.

Mfg Garlant


Angehängte Dateien
.zip   toplist.zip (Größe: 2,8 KB / Downloads: 2)
Ich gebe keinen Support per Messenger oder PN!
Zitieren
#27
ok besten dank hat mich echt sehr viel weiter gebracht... Smile

nochmal eine letzte frage ich denke den rest schaff ich dann allein Smile

    <-- dies bekomme ich immer angezeigt, das Plugin arbeitet jedoch ohne probleme.. woher könnte das kommen?

Zeile 200 - 203:

PHP-Code:
$file fopen(MYBB_ROOT."/inc/settings.php""w");
      
fwrite($file$settings);
      
fclose($file); 
Das Leben ist schon ein scheiss Game, aber mit einer Pervers geilen Grafik Wink
DOS Forum | DOSHISTORY
Zitieren
#28
Das muss heißen:
PHP-Code:
$file fopen(MYBB_ROOT."inc/settings.php""w");
      
fwrite($file$settings);
      
fclose($file); 
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#29
Ersetze
PHP-Code:
$file fopen(MYBB_ROOT."/inc/settings.php""w"); 
mal bitte durch:
PHP-Code:
$file fopen(MYBB_ROOT."inc/settings.php""w"); 
Geht es dann? Ist die Datei inc/settings.php beschreibbar?

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