Datum des letzten Beitrags in groupcp.php

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
IPB_Flüchtling
Mitglied
Beiträge: 1862
Registriert: 23.12.2004 22:46

Datum des letzten Beitrags in groupcp.php

Beitrag von IPB_Flüchtling »

Ahoi,

ausgehend von dem in diesem Thread geschilderten Problem, habe ich mich mal selbst an die Arbeit gemacht - bislang allerdings ohne Erfolg. Es geht darum, in der groupcp.php eine weitere Spalte mit dem Datum des letzten Beitrags, den ein Gruppenmitglied geschrieben hat, anzuzeigen.

(Anregungen für meine Versuche habe ich mir übrigens aus der index.php und von diesem Mod geholt.)

Insbesondere habe ich folgende Stelle in der groupcp.php ersetzt:

Original:

Code: Alles auswählen

	//
	// Get user information for this group
	//

	$sql = "SELECT u.username, u.user_id, u.user_viewemail, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_msnm, ug.user_pending
		FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug
		WHERE ug.group_id = $group_id
			AND u.user_id = ug.user_id
			AND ug.user_pending = 0
			AND ug.user_id <> " . $group_moderator['user_id'] . "
		ORDER BY u.username";

//-- mod : group moderatorZ ----------------------------------------------------
//-- add
	$sql = str_replace(', ug.user_pending', ', ug.group_moderator, ug.user_pending', $sql);
	$sql = str_replace('ORDER BY', 'ORDER BY ug.group_moderator DESC,', $sql);
//-- fin mod : group moderatorZ ------------------------------------------------

	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Error getting user list for group', '', __LINE__, __FILE__, $sql);
	}

	$group_members = $db->sql_fetchrowset($result);
	$members_count = count($group_members);
	$db->sql_freeresult($result);

	$sql = "SELECT u.username, u.user_id, u.user_viewemail, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_msnm
		FROM " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug, " . USERS_TABLE . " u
		WHERE ug.group_id = $group_id
			AND g.group_id = ug.group_id
			AND ug.user_pending = 1
			AND u.user_id = ug.user_id
		ORDER BY u.username";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Error getting user pending information', '', __LINE__, __FILE__, $sql);
	}
Meine Modifikation:

Code: Alles auswählen

	//
	// Get user information for this group
	//

	$sql = "SELECT u.username, u.user_id, u.user_viewemail, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_msnm, ug.user_pending, p.poster_id, p.post_time
		FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug, " . POSTS_TABLE . " p
		WHERE ug.group_id = $group_id
			AND u.user_id = ug.user_id
			AND ug.user_pending = 0
			AND ug.user_id <> " . $group_moderator['user_id'] . "
			AND u.user_id = p.poster_id
		ORDER BY p.post_time";

//-- mod : group moderatorZ ----------------------------------------------------
//-- add
	$sql = str_replace(', ug.user_pending', ', ug.group_moderator, ug.user_pending', $sql);
	$sql = str_replace('ORDER BY', 'ORDER BY ug.group_moderator DESC,', $sql);
//-- fin mod : group moderatorZ ------------------------------------------------

	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Error getting user list for group', '', __LINE__, __FILE__, $sql);
	}

while ( $row = $db->sql_fetchrow($result) ) 
{ 
   $letzterbeitrag = $row['post_time'];
   $letzterbeitrag_zeit = create_date($board_config['default_dateformat'], $row['post_time'], $board_config['board_timezone']);
	$letzterbeitrag = $letzterbeitrag_zeit;
} 
$db->sql_freeresult($result); 
//Ende Letzter Beitrag in groupcp.php 

	$group_members = $db->sql_fetchrowset($result);
	$members_count = count($group_members);
	$db->sql_freeresult($result);

	$sql = "SELECT u.username, u.user_id, u.user_viewemail, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_msnm, p.poster_id, p.post_time
		FROM " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug, " . USERS_TABLE . " u, " . POSTS_TABLE . " p
		WHERE ug.group_id = $group_id
			AND g.group_id = ug.group_id
			AND ug.user_pending = 1
			AND u.user_id = ug.user_id
			AND u.user_id = p.poster_id
		ORDER BY p.post_time";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Error getting user pending information', '', __LINE__, __FILE__, $sql);
	}
while ( $row = $db->sql_fetchrow($result) ) 
{ 
   $letzterbeitrag = $row['post_time'];
   $letzterbeitrag_zeit = create_date($board_config['default_dateformat'], $row['post_time'], $board_config['board_timezone']);
	$letzterbeitrag = $letzterbeitrag_zeit;
} 
$db->sql_freeresult($result); 
//Ende Letzter Beitrag in groupcp.php
Leider funktioniert mein Code nicht. :( Folgende Fehler- bzw. Falschmeldungen kommen:

1. "Diese Gruppe hat keine Mitglieder." Das stimmt nicht. Die Gruppe hat schon Mitglieder. Aber nach meiner Veränderung der groupcp.php werden diese anscheinend nicht mehr "gefunden".

2.
Warning: mysql_fetch_array(): 30 is not a valid MySQL result resource in /home/traumma/public_html/forum/db/mysql4.php on line 381

Warning: mysql_free_result(): 30 is not a valid MySQL result resource in /home/traumma/public_html/forum/db/mysql4.php on line 526

Warning: mysql_fetch_array(): 31 is not a valid MySQL result resource in /home/traumma/public_html/forum/db/mysql4.php on line 381

Warning: mysql_free_result(): 31 is not a valid MySQL result resource in /home/traumma/public_html/forum/db/mysql4.php on line 526

Warning: Cannot modify header information - headers already sent by (output started at /home/traumma/public_html/forum/db/mysql4.php:381) in /home/traumma/public_html/forum/includes/page_header.php on line 598

Warning: Cannot modify header information - headers already sent by (output started at /home/traumma/public_html/forum/db/mysql4.php:381) in /home/traumma/public_html/forum/includes/page_header.php on line 600

Warning: Cannot modify header information - headers already sent by (output started at /home/traumma/public_html/forum/db/mysql4.php:381) in /home/traumma/public_html/forum/includes/page_header.php on line 601
EDIT: Dank des Mods http://www.phpbbhacks.com/download/356 habe ich jetzt zumindest schon mal das Feld "Letzter Beitrag" in der groupcp.php! :P

Allerdings sollten die Gruppenmitglieder halt nach dem Datum ihres letzten Beitrags sortiert werden...

Der Mod ist zwar für die memberlist.php geschrieben worden, lässt sich aber auch für die groupcp.php heranziehen. Da der Mod nur kurz ist, erlaube ich mir mal, ihn hier wiederzugeben:

Code: Alles auswählen

$Id: last_post_date.txt,v 1.2 2003/07/03 12:10:25 nivisec Exp $
###############################################
##   Hack Title:   Add Last User Post Date to Members List
##                 (A phpBB2 Quickie)
##   Author:       Nivisec (support@nivisec.com)
##                 http://www.nivisec.com
##   Description:  Adds a new field in the members list that displays the date
##                 that the user last posted on.  "None" will be displayed if
##                 the user has never posted.
##
##   Compatibility:   2.0.x
##
##   Support:      http://www.phpbbhacks.com/forums
##   Copyright:      ©2003 Billy Sauls
##
###############################################
#
#-----[ OPEN ]------------------------------------------
#
memberlist.php

#
#-----[ FIND ]------------------------------------------
#
	'L_POSTS' => $lang['Posts'],

#
#-----[ AFTER, ADD ]------------------------------------------
#
	'L_POST_TIME' => $lang['Last_Post'] . ' ' . $lang['Time'],

#
#-----[ FIND ]------------------------------------------
#
		$row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
		$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];

#
#-----[ AFTER, ADD ]------------------------------------------
#

		$post_time_sql = "SELECT post_time
			FROM " . POSTS_TABLE . "
			WHERE poster_id = " . $user_id . "
			ORDER BY post_time DESC
			LIMIT 1";

		if ( !($post_time_result = $db->sql_query($post_time_sql)) )
		{
			message_die(GENERAL_ERROR, 'Error getting user last post time', '', __LINE__, __FILE__, $post_time_sql);
		}

		$post_time_row = $db->sql_fetchrow($post_time_result);
		$last_post_time = ( isset($post_time_row['post_time']) ) ? create_date($board_config['default_dateformat'], $post_time_row['post_time'], $board_config['board_timezone']) : $lang['None'];

#
#-----[ FIND ]------------------------------------------
#
			'YIM' => $yim,

#
#-----[ AFTER, ADD ]------------------------------------------
#
			'LAST_POST_TIME' => $last_post_time,

#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/memberlist_body.tpl

#
#-----[ FIND ]------------------------------------------
#
	  <th class="thTop" nowrap="nowrap">{L_JOINED}</th>
	  <th class="thTop" nowrap="nowrap">{L_POSTS}</th>

#
#-----[ AFTER, ADD ]------------------------------------------
#
	  <th class="thTop" nowrap="nowrap">{L_POST_TIME}</th>

#
#-----[ FIND ]------------------------------------------
#
	  <td class="{memberrow.ROW_CLASS}" align="center" valign="middle"><span class="gensmall">{memberrow.JOINED}</span></td>
	  <td class="{memberrow.ROW_CLASS}" align="center" valign="middle"><span class="gen">{memberrow.POSTS}</span></td>

#
#-----[ AFTER, ADD ]------------------------------------------
#
	  <td class="{memberrow.ROW_CLASS}" align="center" valign="middle"><span class="gen">{memberrow.LAST_POST_TIME}</span></td>

#
#-----[ FIND ]------------------------------------------
#
	  <td class="catbottom" colspan="8" height="28">&nbsp;</td>

#
#-----[ REPLACE ]------------------------------------------
#
	  <td class="catbottom" colspan="9" height="28">&nbsp;</td>

#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
#End
Ich wäre Euch sehr dankbar, wenn Ihr mir helfen könntet, dass die Gruppenmitglieder auch noch nach dem Datum ihres letzten Beitrags sortiert werden. :oops:

LG, IPB_Flüchtling
Antworten

Zurück zu „Coding & Technik“