Mass Delete Users

Поддержка старых модов или модов, созданных авторами не из нашего сообщества, а также любые вопросы, связанные с модами для phpBB 2.0.x, кроме относящихся к форуму Для авторов (phpBB 2.0.x).

Mass Delete Users

Сообщение melnikaite 25.07.2005 23:57

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

Ссылка на скачивание
melnikaite
phpBB 1.4.2
 
Сообщения: 52
Зарегистрирован: 17.07.2005 13:23


Сообщение melnikaite 07.09.2005 0:39

на linux тоже самое
melnikaite
phpBB 1.4.2
 
Сообщения: 52
Зарегистрирован: 17.07.2005 13:23

Сообщение sigal 07.09.2005 1:09

дата последнего посещения юзера у всех показывается 01.01.1970

у меня тоже кстати мод так и не стал.. пробовал, ковырял.
только у меня другая проблема, после сообщения на индексе в рамке "Последнее сообщение", стоит не реальная дата. а 01.01.1970
sigal
phpBB Plus
 
Сообщения: 531
Зарегистрирован: 23.05.2004 13:26
Откуда: КПРФ ;)

Сообщение Coagulant 07.09.2005 1:18

Мод не смотрел, но уверен на 90%, что он просто некорректно удаляет пользователей, там есть некоторые нюансы. Если дойдут руки, исправлю, чтобы работало.
Аватара пользователя
Coagulant
phpBB 2.0.17
 
Сообщения: 1011
Зарегистрирован: 10.01.2005 19:43
Откуда: Москва

Сообщение Coagulant 09.09.2005 18:36

Господа, дайте ссылку на вашу версию, пожалуйста. :wink:
Аватара пользователя
Coagulant
phpBB 2.0.17
 
Сообщения: 1011
Зарегистрирован: 10.01.2005 19:43
Откуда: Москва

Сообщение melnikaite 17.09.2005 16:27

со всем разобрался (в коде было несколько описок)
выкладываю свежую рабочую версию мода
не забудьте исправить $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&amp;" . 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&amp;" .

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) . "&amp;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&amp;" . 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&amp;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 1:28, всего редактировалось 3 раз(а).
melnikaite
phpBB 1.4.2
 
Сообщения: 52
Зарегистрирован: 17.07.2005 13:23

Сообщение DiG 17.09.2005 21:29

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

Как насчёт совместимости твоих исправлений с новыми версиями?
DiG
phpBB 1.2.0
 
Сообщения: 19
Зарегистрирован: 08.09.2005 18:21

Сообщение melnikaite 19.09.2005 3:04

сори, еще одна описка
замените
Код: Выделить всё
// 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'] = 'Массовое удаление пользователей';

тем у кого уже стоял этот мод нужно просто заменить файлы
melnikaite
phpBB 1.4.2
 
Сообщения: 52
Зарегистрирован: 17.07.2005 13:23

Сообщение DiG 19.09.2005 21:19

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

Первое:
Код: Выделить всё
Notice: Undefined variable: ModName in ...\phpBB2\admin\admin_mass_delete_users.php on line 35


Второе:
Заголовок утилиты и её описание отображены в таблице. Я конечно попытаюсь всё пофиксить своими силами, но для других, да и вообще, чтобы мод был полноценным, рекомендую доделать. ;)

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

Я тупо удалил кусок . $ModName . '' из admin_mass_delete_users.php и первый косяк перестал вылазить. :)
DiG
phpBB 1.2.0
 
Сообщения: 19
Зарегистрирован: 08.09.2005 18:21

Сообщение melnikaite 23.09.2005 13:00

Код: Выделить всё
'U_VIEWPROFILE' => append_sid("profile.$phpEx?mode=viewprofile&amp;" . POST_USERS_URL . "=$user_id"))
      );
заменить на
Код: Выделить всё
'U_VIEWPROFILE' => append_sid($phpbb_root_path .
"profile.$phpEx?mode=viewprofile&amp;" . POST_USERS_URL . "=$user_id"))
      );


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

а все почему, а все потому что мод заточен под PNphpBB2 :?
melnikaite
phpBB 1.4.2
 
Сообщения: 52
Зарегистрирован: 17.07.2005 13:23

Сообщение DiG 23.09.2005 20:42

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]);

Честно признаюсь, что она собой представляет, я не знаю. :( Но подозреваю.
Как решать бум?
DiG
phpBB 1.2.0
 
Сообщения: 19
Зарегистрирован: 08.09.2005 18:21

Сообщение Coagulant 23.09.2005 20:58

Замените 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']";
Аватара пользователя
Coagulant
phpBB 2.0.17
 
Сообщения: 1011
Зарегистрирован: 10.01.2005 19:43
Откуда: Москва

Сообщение DiG 23.09.2005 21:07

Coagulant
Попробовал. Результат - исчез линк в админском меню. А перед этим на парсинг ругнулся. :(
DiG
phpBB 1.2.0
 
Сообщения: 19
Зарегистрирован: 08.09.2005 18:21

Сообщение Coagulant 23.09.2005 21:12

DiG писал(а):Попробовал. Результат - исчез линк в админском меню. А перед этим на парсинг ругнулся.
Напишите, как именно ругнулся, я же не телепат :wink: Странно, что исчез линк, не должен был...
Аватара пользователя
Coagulant
phpBB 2.0.17
 
Сообщения: 1011
Зарегистрирован: 10.01.2005 19:43
Откуда: Москва

Сообщение DiG 23.09.2005 21:39

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

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

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

Так... я покрылся глюками. Придётся вам уважаемый подождать пока я поборю этих жуков (bugs). :roll:
DiG
phpBB 1.2.0
 
Сообщения: 19
Зарегистрирован: 08.09.2005 18:21

След.

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0