Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Mass Delete Users

Ответы на вопросы, связанные с модами для phpBB 2.0.x, кроме относящихся к форуму Для авторов (phpBB 2.0.x).
melnikaite
phpBB 1.4.2
Сообщения: 52
Стаж: 18 лет 9 месяцев

Mass Delete Users

Сообщение melnikaite »

с проблемой 01.01.1970 я так понял сталкивались многие
как ее решить в Mass Delete Users?
дата последнего посещения юзера у всех показывается 01.01.1970
это зависит от сервера?
сейчас у меня windows, потом буду переносить на linux

Ссылка на скачивание
melnikaite
phpBB 1.4.2
Сообщения: 52
Стаж: 18 лет 9 месяцев

Сообщение melnikaite »

на linux тоже самое
sigal
phpBB Plus
Сообщения: 442
Стаж: 19 лет 10 месяцев
Откуда: КПРФ ;)

Сообщение sigal »

дата последнего посещения юзера у всех показывается 01.01.1970
у меня тоже кстати мод так и не стал.. пробовал, ковырял.
только у меня другая проблема, после сообщения на индексе в рамке "Последнее сообщение", стоит не реальная дата. а 01.01.1970
Аватара пользователя
Coagulant
Former team member
Сообщения: 955
Стаж: 19 лет 3 месяца
Откуда: Москва

Сообщение Coagulant »

Мод не смотрел, но уверен на 90%, что он просто некорректно удаляет пользователей, там есть некоторые нюансы. Если дойдут руки, исправлю, чтобы работало.
Аватара пользователя
Coagulant
Former team member
Сообщения: 955
Стаж: 19 лет 3 месяца
Откуда: Москва

Сообщение Coagulant »

Господа, дайте ссылку на вашу версию, пожалуйста. :wink:
melnikaite
phpBB 1.4.2
Сообщения: 52
Стаж: 18 лет 9 месяцев

Сообщение melnikaite »

со всем разобрался (в коде было несколько описок)
выкладываю свежую рабочую версию мода
не забудьте исправить $phpbb_root_path
admin_mass_delete_users.php

Код: Выделить всё

<?php
/***************************************************************************
 *                           admin_mass_delete_users.php
 *                            -------------------
 *   begin                : Sunday, July 27th, 2003
 *   copyright            : (C) 2003 Antony Bailey & Freakin' Booty ;-P
 *   email                : santony_bailey@lycos.co.uk
 *
 ***************************************************************************/

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/
define('IN_PHPBB', 1);

//
// First we do the setmodules stuff for the admin cp.
//
if( !empty($setmodules) )
{
	$filename = basename(__FILE__);
// Begin PNphpBB2 Module
	$module['Users']['Mass Delete Users'] = $filename;
//End PNphpBB2 Module

	return;
}

// Begin PNphpBB2 Module

$phpbb_root_path = '../../f/';
require($phpbb_root_path . 'extension.inc');
require($phpbb_root_path . 'admin/pagestart.' . $phpEx);
require($phpbb_root_path . 'includes/bbcode.'.$phpEx);
require($phpbb_root_path . 'includes/functions_post.'.$phpEx);
require($phpbb_root_path . 'includes/functions_selects.'.$phpEx);
require($phpbb_root_path . 'includes/functions_validate.'.$phpEx);
include($phpbb_root_path.'language/lang_' . $board_config['default_lang'] . 

'/lang_admin_mass_user_delete.'.$phpEx);
//End PNphpBB2 Module

//
// Delete the users
//
if( $HTTP_POST_VARS['deleteusers'] && $HTTP_POST_VARS['users'] )
{
	$user_list = $HTTP_POST_VARS['users'];

	for( $i = 0; $i < count($user_list); $i++ )
	{
		// Begin PNphpBB2 Module
		$this_userdata = get_userdata($user_list[$i]);
		// End PNphpBB2 Module

		//
		// Do not delete admins! Let the person make the admins a user first!
		//
		if( $this_userdata['user_level'] == ADMIN )
		{
			message_die(GENERAL_MESSAGE, $lang['First_make_admin_user']);
		}

		$sql = "SELECT g.group_id
				FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . 

" g
				WHERE ug.user_id = " . $this_userdata['user_id'] . "
					AND g.group_id = ug.group_id
					AND g.group_single_user = 1";
		if( !$result = $db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, 'Could not obtain group information for 

this user', '', __LINE__, __FILE__, $sql);
		}

		$row = $db->sql_fetchrow($result);

		$sql = "UPDATE " . POSTS_TABLE . "
				SET poster_id = " . DELETED . ", post_username = '$username'
				WHERE poster_id = " . $this_userdata['user_id'];
		if( !$db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, 'Could not update posts for this user', '', 

__LINE__, __FILE__, $sql);
		}

		$sql = "UPDATE " . TOPICS_TABLE . "
				SET topic_poster = " . DELETED . "
				WHERE topic_poster = " . $this_userdata['user_id'];
		if( !$db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, 'Could not update topics for this user', '', 

__LINE__, __FILE__, $sql);
		}

		$sql = "UPDATE " . VOTE_USERS_TABLE . "
				SET vote_user_id = " . DELETED . "
				WHERE vote_user_id = " . $this_userdata['user_id'];
		if( !$db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, 'Could not update votes for this user', '', 

__LINE__, __FILE__, $sql);
		}

		$sql = "SELECT group_id
				FROM " . GROUPS_TABLE . "
				WHERE group_moderator = " . $this_userdata['user_id'];
		if( !$result = $db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, 'Could not select groups where user 

was moderator', '', __LINE__, __FILE__, $sql);
		}

		while ( $row_group = $db->sql_fetchrow($result) )
		{
			$group_moderator[] = $row_group['group_id'];
		}

		if ( count($group_moderator) )
		{
			$update_moderator_id = implode(', ', $group_moderator);

			$sql = "UPDATE " . GROUPS_TABLE . "
					SET group_moderator = " . $userdata['user_id'] . "
					WHERE group_moderator IN 

($update_moderator_id)";
			if( !$db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, 'Could not update group 

moderators', '', __LINE__, __FILE__, $sql);
			}
		}

		$sql = "DELETE FROM " . USERS_TABLE . "
				WHERE user_id = " . $this_userdata['user_id'];
		if( !$db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, 'Could not delete user', '', __LINE__, 

__FILE__, $sql);
		}

		$sql = "DELETE FROM " . USER_GROUP_TABLE . "
				WHERE user_id = " . $this_userdata['user_id'];
		if( !$db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, 'Could not delete user from user_group 

table', '', __LINE__, __FILE__, $sql);
		}

		$sql = "DELETE FROM " . GROUPS_TABLE . "
				WHERE group_id = " . $row['group_id'];
		if( !$db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, 'Could not delete group for this user', '', 

__LINE__, __FILE__, $sql);
		}

		$sql = "DELETE FROM " . AUTH_ACCESS_TABLE . "
				WHERE group_id = " . $row['group_id'];
		if( !$db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, 'Could not delete group for this user', '', 

__LINE__, __FILE__, $sql);
		}

		$sql = "DELETE FROM " . TOPICS_WATCH_TABLE . "
				WHERE user_id = " . $this_userdata['user_id'];
		if ( !$db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, 'Could not delete user from topic watch 

table', '', __LINE__, __FILE__, $sql);
		}

		$sql = "SELECT privmsgs_id
				FROM " . PRIVMSGS_TABLE . "
				WHERE ( ( privmsgs_from_userid = " . 

$this_userdata['user_id'] . "
					AND privmsgs_type = " . PRIVMSGS_NEW_MAIL . 

" )
						OR ( privmsgs_from_userid = " . 

$this_userdata['user_id'] . "
					AND privmsgs_type = " . PRIVMSGS_SENT_MAIL 

. " )
						OR ( privmsgs_to_userid = " . 

$this_userdata['user_id'] . "
					AND privmsgs_type = " . PRIVMSGS_READ_MAIL 

. " )
						OR ( privmsgs_to_userid = " . 

$this_userdata['user_id'] . "
					AND privmsgs_type = " . 

PRIVMSGS_SAVED_IN_MAIL . " )
						OR ( privmsgs_from_userid = " . 

$this_userdata['user_id'] . "
					AND privmsgs_type = " . 

PRIVMSGS_SAVED_OUT_MAIL . " ) )";
		if ( !$result = $db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, 'Could not select all user\'s private 

messages', '', __LINE__, __FILE__, $sql);
		}

		while ( $row_privmsgs = $db->sql_fetchrow($result) )
		{
			$mark_list[] = $row_privmsgs['privmsgs_id'];
		}

		if ( count($mark_list) )
		{
			$delete_sql_id = implode(', ', $mark_list);

			$delete_text_sql = "DELETE FROM " . PRIVMSGS_TEXT_TABLE . "
								WHERE 

privmsgs_text_id IN ($delete_sql_id)";
			$delete_sql = "DELETE FROM " . PRIVMSGS_TABLE . "
							WHERE privmsgs_id IN 

($delete_sql_id)";

			if ( !$db->sql_query($delete_sql) )
			{
				message_die(GENERAL_ERROR, 'Could not delete private 

message info', '', __LINE__, __FILE__, $delete_sql);
			}

			if ( !$db->sql_query($delete_text_sql) )
			{
				message_die(GENERAL_ERROR, 'Could not delete private 

message text', '', __LINE__, __FILE__, $delete_text_sql);
			}
		}

		$sql = "UPDATE " . PRIVMSGS_TABLE . "
				SET privmsgs_to_userid = " . DELETED . "
				WHERE privmsgs_to_userid = " . $this_userdata['user_id'];
		if ( !$db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, 'Could not update private messages 

saved to the user', '', __LINE__, __FILE__, $sql);
		}

		$sql = "UPDATE " . PRIVMSGS_TABLE . "
				SET privmsgs_from_userid = " . DELETED . "
				WHERE privmsgs_from_userid = " . $this_userdata['user_id'];
		if ( !$db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, 'Could not update private messages 

saved from the user', '', __LINE__, __FILE__, $sql);
		}
	}

	$message = $lang['Mass_delete_done'] . '<br /><br />' . 

sprintf($lang['Return_Mass_User_delete'], '<a href="' . append_sid("admin_mass_delete_users.$phpEx") 

. '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_admin_index'], '<a href="' . 

append_sid("index.$phpEx?pane=right") . '">', '</a>');
	message_die(GENERAL_MESSAGE, $message);

}


//
// Default page
//
$start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0;
if(isset($HTTP_POST_VARS['order']))
{
	$sort_order = ($HTTP_POST_VARS['order'] == 'ASC') ? 'ASC' : 'DESC';
}
else if(isset($HTTP_GET_VARS['order']))
{
	$sort_order = ($HTTP_GET_VARS['order'] == 'ASC') ? 'ASC' : 'DESC';
}
else
{
	$sort_order = 'ASC';
}

$mode_types_text = array($lang['Sort_Joined'], $lang['Lastvisit'], $lang['Sort_Username'], 

$lang['Sort_Location'], $lang['Sort_Posts'], $lang['Sort_Email'],  $lang['Sort_Website'], 

$lang['Sort_Top_Ten']);
$mode_types = array('joindate', 'lastvisit', 'username', 'location', 'posts', 'email', 'website', 'topten');

$select_sort_mode = '<select name="mode">';
for($i = 0; $i < count($mode_types_text); $i++)
{
	$selected = ( $mode == $mode_types[$i] ) ? ' selected="selected"' : '';
	$select_sort_mode .= '<option value="' . $mode_types[$i] . '"' . $selected . '>' . 

$mode_types_text[$i] . '</option>';
}
$select_sort_mode .= '</select>';

$select_sort_order = '<select name="order">';
if($sort_order == 'ASC')
{
	$select_sort_order .= '<option value="ASC" selected="selected">' . $lang['Sort_Ascending'] . 

'</option><option value="DESC">' . $lang['Sort_Descending'] . '</option>';
}
else
{
	$select_sort_order .= '<option value="ASC">' . $lang['Sort_Ascending'] . '</option><option 

value="DESC" selected="selected">' . $lang['Sort_Descending'] . '</option>';
}
$select_sort_order .= '</select>';


//
// Assign template
//
$template->set_filenames(array(
	'body' => 'admin/admin_mass_delete_users.tpl')
);

$template->assign_vars(array(
	'L_SELECT_SORT_METHOD' => $lang['Select_sort_method'],
	'L_USERNAME' => $lang['Username'],
	'L_LASTVISIT' => $lang['Lastvisit'],
	'L_ADMIN_MASS_DELETE_USERS' => $lang['Admin_mass_delete_users'],
	'L_MASS_DELETE_USERS' => $lang['Mass_Delete_Users'],
	'L_MASS_DELETE_USERS_EXPLAIN' => $lang['Mass_Delete_Users_Explain'],
	'L_PM' => $lang['Private_Message'],
	'L_EMAIL' => $lang['Email'],
	'L_WEBSITE' => $lang['Website'],
	'L_FROM' => $lang['Location'],
	'L_ORDER' => $lang['Order'],
	'L_SORT' => $lang['Sort'],
	'L_SUBMIT' => $lang['Sort'],
	'L_JOINED' => $lang['Joined'],
	'L_POSTS' => $lang['Posts'],
	'L_POST_TIME' => $lang['Last_Post'],
	'L_MARK' => $lang['Mark'],
	'L_MARK_ALL' => $lang['Mark_all'],
	'L_UNMARK_ALL' => $lang['Unmark_all'],

	'S_MODE_SELECT' => $select_sort_mode,
	'S_ORDER_SELECT' => $select_sort_order,
	'S_MODE_ACTION' => append_sid("admin_mass_delete_users.$phpEx"))
);

if ( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) )
{
	$mode = ( isset($HTTP_POST_VARS['mode']) ) ? $HTTP_POST_VARS['mode'] : 

$HTTP_GET_VARS['mode'];

	switch( $mode )
	{
		case 'joindate':
			$order_by = "user_regdate $sort_order LIMIT $start, " . 

$board_config['topics_per_page'];
			break;
		case 'lastvisit':
			$order_by = "user_lastvisit $sort_order LIMIT $start, " . 

$board_config['topics_per_page'];
			break;
		case 'username':
			$order_by = "username $sort_order LIMIT $start, " . 

$board_config['topics_per_page'];
			break;
		case 'location':
			$order_by = "user_from $sort_order LIMIT $start, " . 

$board_config['topics_per_page'];
			break;
		case 'posts':
			$order_by = "user_posts $sort_order LIMIT $start, " . 

$board_config['topics_per_page'];
			break;
		case 'email':
			$order_by = "user_email $sort_order LIMIT $start, " . 

$board_config['topics_per_page'];
			break;
		case 'website':
			$order_by = "user_website $sort_order LIMIT $start, " . 

$board_config['topics_per_page'];
			break;
		case 'topten':
			$order_by = "user_posts DESC LIMIT 10";
			break;
		default:
			$order_by = "user_regdate $sort_order LIMIT $start, " . 

$board_config['topics_per_page'];
			break;
	}
}
else
{
	$order_by = "user_regdate $sort_order LIMIT $start, " . $board_config['topics_per_page'];
}

//
// Fetch userdata
//
$sql = "SELECT username, user_id, user_viewemail, user_posts, user_lastvisit, user_regdate, user_from, 

user_website, user_email, user_icq, user_aim, user_yim, user_msnm, user_avatar, user_avatar_type, 

user_allowavatar
	FROM " . USERS_TABLE . "
	WHERE user_id <> " . ANONYMOUS . "
	ORDER BY $order_by";
if( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Could not query users', '', __LINE__, __FILE__, $sql);
}

if ( $row = $db->sql_fetchrow($result) )
{

	$i = 0;
	do
	{

//
// Last Post Data
//
$post_time_sql = "SELECT post_time
	FROM " . POSTS_TABLE . "
	WHERE poster_id = " . $row['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'];



		$lastvisit = create_date($lang['DATE_FORMAT'], $row['user_lastvisit'], 

$board_config['board_timezone']);
		$username = $row['username'];
		$user_id = $row['user_id'];

		$from = ( !empty($row['user_from']) ) ? $row['user_from'] : '&nbsp;';
		$joined = create_date($lang['DATE_FORMAT'], $row['user_regdate'], 

$board_config['board_timezone']);
		$posts = ( $row['user_posts'] ) ? $row['user_posts'] : 0;

		$email_uri = ( $board_config['board_email_form'] ) ? append_sid($phpbb_root_path 

. "profile.$phpEx?mode=email&" . POST_USERS_URL .'=' . $user_id) : 'mailto:' . $row['user_email'];
		$email_img = '<a href="' . $email_uri . '"><img src="' . $phpbb_root_path . 

$images['icon_email'] . '" alt="' . $lang['Send_email'] . '" title="' . $lang['Send_email'] . '" border="0" /></a>';
		$email = '<a href="' . $email_uri . '">' . $lang['Send_email'] . '</a>';

		$temp_url = append_sid($phpbb_root_path . "privmsg.$phpEx?mode=post&" . 

POST_USERS_URL . "=$user_id");
		$pm_img = '<a href="' . $temp_url . '"><img src="' . $phpbb_root_path . 

$images['icon_pm'] . '" alt="' . $lang['Send_private_message'] . '" title="' . $lang['Send_private_message'] . 

'" border="0" /></a>';
		$pm = '<a href="' . $temp_url . '">' . $lang['Send_private_message'] . '</a>';

		$www_img = ( $row['user_website'] ) ? '<a href="' . $row['user_website'] . '" 

target="_userwww"><img src="' . $phpbb_root_path . $images['icon_www'] . '" alt="' . 

$lang['Visit_website'] . '" title="' . $lang['Visit_website'] . '" border="0" /></a>' : '';
		$www = ( $row['user_website'] ) ? '<a href="' . $row['user_website'] . '" 

target="_userwww">' . $lang['Visit_website'] . '</a>' : '';

		$temp_url = append_sid($phpbb_root_path . "search.$phpEx?search_author=" . 

urlencode($username) . "&showresults=posts");
		$search_img = '<a href="' . $temp_url . '"><img src="' . $phpbb_root_path . 

$images['icon_search'] . '" alt="' . $lang['Search_user_posts'] . '" title="' . $lang['Search_user_posts'] . '" 

border="0" /></a>';
		$search = '<a href="' . $temp_url . '">' . $lang['Search_user_posts'] . '</a>';

	// Begin PNphpBB2 Module
		$row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
		$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];
	//End PNphpBB2 Module

		$template->assign_block_vars('memberrow', array(
			'ROW_NUMBER' => $i + ( $HTTP_GET_VARS['start'] + 1 ),
			'ROW_COLOR' => '#' . $row_color,
			'ROW_CLASS' => $row_class,
			'USERNAME' => $username,
			'USERID' => $user_id,
			'FROM' => $from,
			'LASTVISIT' => $lastvisit,
			'LAST_POST_TIME' => $last_post_time,
			'JOINED' => $joined,
			'POSTS' => $posts,
			'SEARCH_IMG' => $search_img,
			'SEARCH' => $search,
			'PM_IMG' => $pm_img,
			'PM' => $pm,
			'EMAIL_IMG' => $email_img,
			'EMAIL' => $email,
			'WWW_IMG' => $www_img,
			'WWW' => $www,

			'U_VIEWPROFILE' => append_sid($phpbb_root_path . 

"profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$user_id"))
		);

		$i++;
	}
	while ( $row = $db->sql_fetchrow($result) );
}

if ( $mode != 'topten' || $board_config['topics_per_page'] < 10 )
{
	$sql = "SELECT count(*) AS total
		FROM " . USERS_TABLE . "
		WHERE user_id <> " . ANONYMOUS;

	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Error getting total users', '', __LINE__, __FILE__, 

$sql);
	}

	if ( $total = $db->sql_fetchrow($result) )
	{
		$total_members = $total['total'];

		$pagination = 

generate_pagination("admin_mass_delete_users.$phpEx?mode=$mode&order=$sort_order", 

$total_members, $board_config['topics_per_page'], $start) . '&nbsp;';
	}
}
else
{
	$pagination = '&nbsp;';
	$total_members = 10;
}

$template->assign_vars(array(
	'PAGINATION' => $pagination,
	'PAGE_NUMBER' => sprintf($lang['Page_of'], ( floor( $start / $board_config['topics_per_page'] 

) + 1 ), ceil( $total_members / $board_config['topics_per_page'] )),

	'L_GOTO_PAGE' => $lang['Goto_page'])
);

$template->pparse('body');

include('page_footer_admin.'.$phpEx);

?>
admin_mass_delete_users.tpl

Код: Выделить всё

<table width="100%" border="0" cellpadding="3" cellspacing="1" border="0" class="forumline" bgcolor=""#ffffff">
<tr>
<td class="row2" align="center"><div class="maintitle">{L_ADMIN_MASS_DELETE_USERS}</div></td>
</tr><tr>
<td class="row2"><div class="genmed">{L_MASS_DELETE_USERS_EXPLAIN}</div></td>
</tr></table>
<script language="JavaScript" type="text/javascript">
<!--
	function check_switch(val)
	{
		for( i = 0; i < document.post.elements.length; i++ )
		{
			document.post.elements[i].checked = val;
		}
	}
//-->
</script>

<form method="post" action="{S_MODE_ACTION}" name="post">
  <table width="100%" cellspacing="2" cellpadding="2" border="0" align="center">
	<tr> 
	  <td align="right" nowrap="nowrap"><span class="genmed">{L_SELECT_SORT_METHOD}: {S_MODE_SELECT}  {L_ORDER} {S_ORDER_SELECT}   
		<input type="submit" name="submit" value="{L_SUBMIT}" class="liteoption" />
		</span></td>
	</tr>
  </table>
  <table cellspacing="1" cellpadding="4" border="0" width="100%" align="center" class="forumline">
	<tr> 
	  <th height="25" class="thCornerL" nowrap="nowrap">#</th>
	  <th class="thTop" nowrap="nowrap">&nbsp;{L_USERNAME}&nbsp;</th>
	  <th class="thTop" nowrap="nowrap">&nbsp;{L_PM}&nbsp;</th>
	  <th class="thTop" nowrap="nowrap">&nbsp;{L_EMAIL}&nbsp;</th>
	  <th class="thTop" nowrap="nowrap">{L_FROM}</th>
	  <th class="thTop" nowrap="nowrap">{L_POSTS}</th>
	  <th class="thTop" nowrap="nowrap">{L_POST_TIME}</th>
	  <th class="thTop" nowrap="nowrap">{L_JOINED}</th>
	  <th class="thTop" nowrap="nowrap">{L_LASTVISIT}</th>
	  <th class="thCornerR" nowrap="nowrap">{L_WEBSITE}</th>
	  <th class="thTop" nowrap="nowrap">{L_MARK}</th>
	</tr>
	<!-- BEGIN memberrow -->
	<tr> 
	  <td class="{memberrow.ROW_CLASS}" align="center"><span class="gen"> {memberrow.ROW_NUMBER} </span></td>
	  <td class="{memberrow.ROW_CLASS}" align="center"><span class="gen"><a href="{memberrow.U_VIEWPROFILE}" class="gen">{memberrow.USERNAME}</a></span></td>
	  <td class="{memberrow.ROW_CLASS}" align="center"> {memberrow.PM_IMG} </td>
	  <td class="{memberrow.ROW_CLASS}" align="center" valign="middle"> {memberrow.EMAIL_IMG} </td>
	  <td class="{memberrow.ROW_CLASS}" align="center" valign="middle"><span class="gen">{memberrow.FROM}</span></td>
	  <td class="{memberrow.ROW_CLASS}" align="center" valign="middle"><span class="gen">{memberrow.POSTS}</span></td>
	  <td class="{memberrow.ROW_CLASS}" align="center" valign="middle" nowrap="nowrap"><span class="gensmall">{memberrow.LAST_POST_TIME}</span></td>
	  <td class="{memberrow.ROW_CLASS}" align="center" valign="middle" nowrap="nowrap"><span class="gensmall">{memberrow.JOINED}</span></td>
	  <td class="{memberrow.ROW_CLASS}" align="center" valign="middle" nowrap="nowrap"><span class="gensmall">{memberrow.LASTVISIT}</span></td>
	  <td class="{memberrow.ROW_CLASS}" align="center">{memberrow.WWW_IMG}</td>
	  <td class="{memberrow.ROW_CLASS}" align="center" valign="middle"><span class="gen"><input type="checkbox" name="users[]" value="{memberrow.USERID}"></span></td>
	</tr>
	<!-- END memberrow -->
	<tr> 
	  <td class="catBottom" colspan="11" height="28" align="right"><input type="submit" name="deleteusers" value="{L_MASS_DELETE_USERS}" class="liteoption" /></td>
	</tr>
  </table>
<table width="100%" cellspacing="2" border="0" align="center" cellpadding="2">
	<tr>
		<td><span class="nav">{PAGINATION}</span></td>
		<td align="right"><span class="nav"><a href="javascript:check_switch(true);" class="nav">{L_MARK_ALL}</a> :: <a href="javascript:check_switch();" class="nav">{L_UNMARK_ALL}</a></span></td>
	</tr>
	<tr> 
		<td><span class="nav">{PAGE_NUMBER}</span></td>
		<td align="right"><span class="gensmall">{S_TIMEZONE}</span></td>
	</tr>
</table></form>
lang_admin_mass_user_delete.php

Код: Выделить всё

<?php 
/*************************************************************************** 
 *                     lang_admin_mass_delete_users.php 
 *                            ------------------- 
 *   begin                : Sunday, July 27th, 2003 
 *   copyright            : (C) 2003 Antony Bailey & Freakin' Booty ;-P 
 *   email                : santony_bailey@lycos.co.uk 
 * 
 ***************************************************************************/ 

/*************************************************************************** 
 * 
 *   This program is free software; you can redistribute it and/or modify 
 *   it under the terms of the GNU General Public License as published by 
 *   the Free Software Foundation; either version 2 of the License, or 
 *   (at your option) any later version. 
 * 
 ***************************************************************************/ 
$lang['Admin_mass_delete_users'] = 'Массовое удаление пользователей'; 
$lang['Mass_Delete_Users'] = 'Удалить отмеченных пользователей'; 
$lang['Mass_Delete_Users_Explain'] = 'На этой странице Вы можете производить удаление большого количества пользователей.'; 
$lang['Lastvisit'] = 'последнему посещению'; 
$lang['Mass_delete_done'] = 'Выбранные user/s были удалены.'; 
$lang['Return_Mass_User_delete'] = 'Нажмите %sЗдесь%s, чтобы возвратиться на страницу удаления пользователей'; 
$lang['First_make_admin_user'] = 'Извините, но Вы не можете удалить администратора. Для удаления выбранного пользователя, необходимо изменить статус администратора - на статус пользователя.'; 
?>
Последний раз редактировалось melnikaite 24.09.2005 2:28, всего редактировалось 3 раза.
DiG
phpBB 1.2.0
Сообщения: 18
Стаж: 18 лет 7 месяцев

Сообщение DiG »

Испытал твои изменения на версии 2.0.17
Результат - в меню админки строки Mass delete users или чего-то подобного нет!!!

Как насчёт совместимости твоих исправлений с новыми версиями?
melnikaite
phpBB 1.4.2
Сообщения: 52
Стаж: 18 лет 9 месяцев

Сообщение melnikaite »

сори, еще одна описка
замените

Код: Выделить всё

// Begin PNphpBB2 Module
	$phpbb_module['Users']['Mass Delete Users'] = $filename;
//End PNphpBB2 Module
на

Код: Выделить всё

// Begin PNphpBB2 Module
	$module['Users']['Mass Delete Users'] = $filename;
//End PNphpBB2 Module
и что бы по-русски в админке было добавьте в lang_russian/lang_admin.php

Код: Выделить всё

$lang['Mass Delete Users'] = 'Массовое удаление пользователей';
тем у кого уже стоял этот мод нужно просто заменить файлы
DiG
phpBB 1.2.0
Сообщения: 18
Стаж: 18 лет 7 месяцев

Сообщение DiG »

Спасибо за исправления. Ссылка стала отображаться, правда косяки еще остались. По порядку.

Первое:

Код: Выделить всё

Notice: Undefined variable: ModName in ...\phpBB2\admin\admin_mass_delete_users.php on line 35
Второе:
Заголовок утилиты и её описание отображены в таблице. Я конечно попытаюсь всё пофиксить своими силами, но для других, да и вообще, чтобы мод был полноценным, рекомендую доделать. ;)

Добавлено спустя 1 час 13 минут 55 секунд:

Я тупо удалил кусок . $ModName . '' из admin_mass_delete_users.php и первый косяк перестал вылазить. :)
melnikaite
phpBB 1.4.2
Сообщения: 52
Стаж: 18 лет 9 месяцев

Сообщение melnikaite »

Код: Выделить всё

'U_VIEWPROFILE' => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$user_id"))
		);
заменить на

Код: Выделить всё

'U_VIEWPROFILE' => append_sid($phpbb_root_path . 
"profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$user_id"))
		);
Добавлено спустя 11 минут 25 секунд:

а все почему, а все потому что мод заточен под PNphpBB2 :?
DiG
phpBB 1.2.0
Сообщения: 18
Стаж: 18 лет 7 месяцев

Сообщение DiG »

melnikaite
Фиг с ним, дружище. Мы с тобой его и под простой phpBB2 отточим. ;) Для того и существует phpBB комьюнити. :)

Полез я его мучать. Может где еще косячки найду. ;) 8)

Добавлено спустя 8 минут 23 секунды:

Вооот, уже наковырял. При удалении пользователей пишет:

Код: Выделить всё

[b]Fatal error:[/b] Call to undefined function: phpbb_get_userdata() in .../admin/admin_mass_delete_users.php on line 58
При этом, строчка 58:

Код: Выделить всё

$this_userdata = phpbb_get_userdata($user_list[$i]); 
Честно признаюсь, что она собой представляет, я не знаю. :( Но подозреваю.
Как решать бум?
Аватара пользователя
Coagulant
Former team member
Сообщения: 955
Стаж: 19 лет 3 месяца
Откуда: Москва

Сообщение Coagulant »

Замените phpbb_get_userdata на get_userdata.

А вообще, мод криво обновляет сообщения удаленных пользователей:
вместо

Код: Выделить всё

      $sql = "UPDATE " . POSTS_TABLE . " 
            SET poster_id = " . DELETED . ", post_username = '$username' 
            WHERE poster_id = " . $this_userdata['user_id'];
должно быть

Код: Выделить всё

      $sql = "UPDATE " . POSTS_TABLE . "
           SET poster_id = " . DELETED . ", post_username = '" . str_replace("\\'", "''", addslashes($this_userdata['username'])) . "' 
           WHERE poster_id = $this_userdata['user_id']";
DiG
phpBB 1.2.0
Сообщения: 18
Стаж: 18 лет 7 месяцев

Сообщение DiG »

Coagulant
Попробовал. Результат - исчез линк в админском меню. А перед этим на парсинг ругнулся. :(
Аватара пользователя
Coagulant
Former team member
Сообщения: 955
Стаж: 19 лет 3 месяца
Откуда: Москва

Сообщение Coagulant »

DiG писал(а):Попробовал. Результат - исчез линк в админском меню. А перед этим на парсинг ругнулся.
Напишите, как именно ругнулся, я же не телепат :wink: Странно, что исчез линк, не должен был...
DiG
phpBB 1.2.0
Сообщения: 18
Стаж: 18 лет 7 месяцев

Сообщение DiG »

Хороший вопрос. Он ругнулся всего раз. Теперь сколько не обновляй, ничего невыводит. Ща верну всё на исходную и снова попробую.

Сам знаю, что не должен, но факт. Могу скриншот показать, если не верите, уважаемый. :)

Добавлено спустя 13 минут 18 секунд:

Так... я покрылся глюками. Придётся вам уважаемый подождать пока я поборю этих жуков (bugs). :roll:

Вернуться в «Поддержка модов для phpBB 2.0.x»