2016-07-19 4 views
0

Ich benutze phpBB um eine einfache Community zu erstellen. Also, ich möchte eine costum-Seite erstellen, wo ich bestimmte Gruppen mit ihren Mitgliedern anzeigen möchte.Argument x an phpbb_generate_debug_output übergeben() muss eine Instanz von phpbb user sein

Der Code ist mein allererster Versuch, eine Costum-Site zu erstellen.

ich habe die members.php

<?php 
    define('IN_PHPBB', true); 
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './'; 
    $phpEx = substr(strrchr(__FILE__, '.'), 1); 
    include($phpbb_root_path . 'common.' . $phpEx); 

    // Start session management 
    $user->session_begin(); 
    $auth->acl($user->data); 
    $user->setup(); 

    // Inits Languagefile 
    page_header('test'); 

    // Groups that should displayed 
    $group_ids = array(
     5, 
     9, 
    ); 

    // Get Groups from Database 
    $sql = 'SELECT group_id, group_name, group_desc FROM ' . GROUPS_TABLE . ' WHERE ' . $db->sql_in_set('group_id', $group_ids); 
    $result = $db->sql_query($sql); 

    // Write Data for each Group 
    while ($row = $db->sql_fetchrow($result)) { 
     $template->assign_block_vars('unit', array(
      'GROUPNAME'  => $row['group_name'], 
      'DESCRIPTION' => $row['group_desc'], 
     )); 

     // Get Groupmembers from Database 
     $sqlusers = 'SELECT user_id FROM ' . USER_GROUP_TABLE . ' WHERE group_id = ' . $row['group_id']; 
     $users = $db->sql_query($sqlusers); 

     // Get User from Database 
     while ($user = $db->sql_fetchrow($users)) { 

      $sql_arr = array(
       'SELECT' => 'u.user_id, u.username, u.user_avatar, r.rank_title, r.rank_image', 
       'FROM'  => array(
        USERS_TABLE => 'u', 
        RANKS_TABLE => 'r' 
       ), 
       'WHERE'  => 'u.user_id = ' . $user['user_id'] . ' AND u.user_rank = r.rank_id', 
      ); 
      $sqluserdata = $db->sql_build_query('SELECT', $sql_arr); 

      $userdata = $db->sql_query($sqluserdata);   

      // Write Data for each User 
      while($single = $db->sql_fetchrow($userdata)) { 
       $template->assign_block_vars('unit.member', array(
        'USERID' => $single['user_id'], 
        'USERNAME' => $single['username'], 
        'AVATAR' => $single['user_avatar'], 
        'RANK'  => $single['rank_title'], 
        'RANGIMAGE' => $single['rank_image'], 
       )); 
      } 
      $db->sql_freeresult($userdata); 
     } 
     $db->sql_freeresult($users); 
    } 
    $db->sql_freeresult($result); 

    // Load Template 
    $template->set_filenames(array(
     'body' => 'members.html', 
    )); 

    // End Controller 
    make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx")); 
    page_footer(); 
?> 

Und weil die Stile/*/members.html:

<!-- INCLUDE overall_header.html --> 

<div id="sub-header"> 
    <div class="chunk"> 
     <div class="sub-header-title"> 
      <h2 class="titlespace">Mitglieder</h2> 
     </div> 
    </div> 
</div> 

<div class="background-main"> 
    <div class="chunk">  
     <!-- BEGIN unit --> 
     <div class="unit"> 
      <h3>{unit.GROUPNAME}</h3> 
      <p>{unit.DESCR}</p> 

      <!-- BEGIN unit.member --> 
      <div class="unitmember" style="background-color:red;"> 
       <p>{unit.member.USERNAME}</p> 
       <p>{unit.member.AVATAR}</p> 
       <p>{unit.member.USERID}</p> 
       <p>{unit.member.RANK}</p> 
       <p>{unit.member.RANKIMAGE}</p> 
      </div> 
      <!-- END unit.member --> 

     </div> 
     <!-- END unit --> 
    </div> 
</div> 


<!-- INCLUDE jumpbox.html --> 
<!-- INCLUDE overall_footer.html --> 

ich die Datenausgabe über var_dump getestet, jeder war in Ordnung .. ., aber jedes Mal analysiere ich die Vorlage an, mir diesen Fehler wirft:

„Abfangbare fatale Fehler: Argument 4() übergeben phpbb_generate_debug_output muss eine Instanz von phpbb \ user, boolean gegeben, genannt in C: \ xampp \ htdocs \ jgzga \ includes \ functions.php in Zeile 5431 und definiert in C: \ xampp \ htdocs \ jgzga \ includes \ functions.php in Zeile 5343 "

Ich habe nie die Core-Dateien von phpbb berührt ... so ... vielleicht können einige von euch mir helfen. ;)

+0

Okay ... Es wirft den Fehler nur mit meiner Abfrage. Wenn ich die Abfrage auszeichne, rendert sie die - leere - Seite. – pestKater

Antwort

0
  1. Soweit 3.1-Version von phpBB Forum veröffentlicht wurde, sollen Sie keinen benutzerdefinierten Code außerhalb von ext/ Verzeichnis. Alle Ihre Änderungen sollten als Erweiterungen mit Controllern, Diensten, DI usw. geschrieben werden. Weitere Informationen hier: https://www.phpbb.com/extensions/writing/
  2. In diesem Fall wird dieser Fehler durch Ihre $ Benutzer Variable verursacht, die in phpBB global ist und eine besondere Bedeutung hat - sie stellt ein Objekt für den aktuellen Benutzer dar. Sie überschreiben es in einer Schleife. Bei der letzten Iteration wird Boolean false und dann wird es an die Funktion phpbb_generate_debug_output() übergeben. Benennen Sie diese Variable um oder schreiben Sie (besser) Ihren Code als Erweiterung um.
Verwandte Themen