Мод Admin Userlist

Ответы на вопросы, связанные с модами для phpBB 2.0.x, кроме относящихся к форуму Для авторов (phpBB 2.0.x).
Аватара пользователя
Stass
phpBB 1.4.2
Сообщения: 56
Зарегистрирован: 21.08.2008 13:56
Откуда: у тебя пистолет и деньги?

Re: Мод Admin Userlist

Сообщение Stass » 22.12.2008 10:42

Обнаружена неприятная особенность. Если на форуме стоит активация юзеров админом, и с помощью этого мода активировать юзеров, то письмо об активации юзеру не приходит (конкретно даже не создается)

Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Зарегистрирован: 12.05.2005 17:25
Откуда: Оренбург (Южный Урал)
Благодарил (а): 24 раза
Поблагодарили: 54 раза
Контактная информация:

Re: Мод Admin Userlist

Сообщение Поручик » 22.12.2008 11:01

Да, не создаётся. Потому что нет соответствующего кода.

Добавлено спустя 21 минуту 50 секунд:
Попробуй. Код между этих строк в admin_userlist.php

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

	case 'activate':
	Заменяемый код
	................
	................
	case 'group':
заменить на этот

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

		//
		// activate or deactivate the seleted users
		//
		include($phpbb_root_path . 'includes/emailer.'.$phpEx);
		$emailer = new emailer($board_config['smtp_delivery']);
		$i = 0;
		while( $i < count($user_ids) )
		{
			$user_id = intval($user_ids[$i]);
			$sql = "SELECT user_active, user_lang, user_email, username FROM " . USERS_TABLE . "
				WHERE user_id = $user_id";
			if( !($result = $db->sql_query($sql)) )
			{
				message_die(GENERAL_ERROR, 'Could not obtain user information', '', __LINE__, __FILE__, $sql);
			}
			$row = $db->sql_fetchrow($result);
			$db->sql_freeresult($result);

			$new_status = ( $row['user_active'] ) ? 0 : 1;

			$sql = "UPDATE " .  USERS_TABLE . " 
				SET user_active = '$new_status'
				WHERE user_id = $user_id";
			if( !($result = $db->sql_query($sql)) )
			{
				message_die(GENERAL_ERROR, 'Could not update user status', '', __LINE__, __FILE__, $sql);
			}
			if ($new_status == 1)
			{
				$emailer->from($board_config['board_email']);
				$emailer->replyto($board_config['board_email']);
	
				$emailer->use_template('admin_welcome_activated', $row['user_lang']);
				$emailer->email_address($row['user_email']);
				$emailer->set_subject($lang['Account_activated_subject']);
	
				$emailer->assign_vars(array(
					'SITENAME' => $board_config['sitename'], 
					'USERNAME' => $row['username'],
					'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '')
				);
				$emailer->send();
				$emailer->reset();
			}
			
			unset($user_id);
			$i++;
		}

		$message = $lang['User_status_updated'] . "<br /><br />" . sprintf($lang['Click_return_userlist'], "<a href=\"" . append_sid("admin_userlist.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");

		message_die(GENERAL_MESSAGE, $message);
		break;
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции

наш форум http://forum.aeroion.ru/cat1.html

Аватара пользователя
Stass
phpBB 1.4.2
Сообщения: 56
Зарегистрирован: 21.08.2008 13:56
Откуда: у тебя пистолет и деньги?

Re: Мод Admin Userlist

Сообщение Stass » 10.02.2009 10:28

Небольшое добавление к моду. При удалении пользователя(ей) отсылается ему(им) письмо на e-mail с соответствующим текстом.

1. Нужно создать файл user_delete.tpl в language/lang_russian/email такого содержания:

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

Subject: Ваша учётная запись удалена
Charset: windows-1251

Здравствуйте, {USERNAME}.

Ваша учётная запись удалена с форума {SITENAME}.

{EMAIL_SIG}
2. Отредактировать файл admin/admin_userlist.php

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

После строк:
// delete users
                        $i = 0;
Вставить:
include($phpbb_root_path . 'includes/emailer.'.$phpEx);
$emailer = new emailer($board_config['smtp_delivery']);

Заменить строку:
$sql = "SELECT u.username, g.group_id

Этой строкой:
$sql = "SELECT u.username, g.group_id, user_email

Перед строками:
$sql = "DELETE FROM " . USERS_TABLE . "
                                        WHERE user_id = $user_id";
                                if( !$db->sql_query($sql) )
Вставить:
//---------------------------------------------
	$emailer->from($board_config['board_email']);
            $emailer->replyto($board_config['board_email']);
   
            $emailer->use_template('user_delete', $row['user_lang']);
            $emailer->email_address($row['user_email']);
           
            $emailer->assign_vars(array(
               'SITENAME' => $board_config['sitename'], 
               'USERNAME' => $row['username'],
               'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '')
            );
            $emailer->send();
            $emailer->reset();
//----------------------------------------------
Проверил на локалхосте. Ставить сразу на Ваш форум не рекомендую, еще не все протестил. Так что прошу сильно ногами не бить, если что не правильно

Закрыто

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