форум vBSupport.ru > vBulletin > Old vB versions (3.0.x & 2.x.x) > vBulletin 3.6.x > Made in vBSupport.org 3.6
  • »
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
 
 
 
 
Malcolm Reed
Эксперт
 
Malcolm Reed's Avatar
Default Удаление не активированных
13

Собственно родился на скорую руку такой мини-мод. Возможно подобный уже существует, но лень было искать =\

Мод позволяет устанавливать дату в днях, после которой пользователь, не активировавший свой аккаунт по средствам е-мейла, будет удален (по умолчанию 5 дней). Должно работать на всех версиях (vb 1.0 и 2.0 в рассчет не берем), но тестировался только на 3,6,*

В папку includes/cron/
кидаем файл activate2.php с таким содержимым:
PHP Code:
<?php
/*======================================================================*\
|| #################################################################### ||
|| # vBulletin 3.6.0 Release Candidate 3
|| # ---------------------------------------------------------------- # ||
|| # Copyright © http://www.vbsupport.ru.          All Lefts Reserved. ||
|| # ---------------- vbulletin is now FREE softvare ---------------- # ||
|| # http://www.vbsupport.ru | http://www.vbsupport.ru/banned.php   # ||
|| #################################################################### ||
\*======================================================================*/

$days 5;
// ######################## SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);
if (!
is_object($vbulletin->db))
{
    exit;
}

// ##################### DEFINE IMPORTANT CONSTANTS #######################
$dataline 86400 $days;
define('DAYS'$dataline);

// ########################################################################
// ######################### START MAIN SCRIPT ############################
// ########################################################################

// Delete not activated accounts after $days days.
$users $vbulletin->db->query_read("
    SELECT userid
    FROM " 
TABLE_PREFIX "user
  WHERE usergroupid = 3
        AND (joindate <= " 
. (TIMENOW DAYS) . ")
"
);

while (
$user $vbulletin->db->fetch_array($users))
{
   
$info fetch_userinfo($user['userid']);
   if (
$info['userid'] == $user['userid'])
   {
      
$userdm =& datamanager_init('User'$vbulletinERRTYPE_CP);
      
$userdm->set_existing($info);
      
$userdm->delete();
      unset(
$userdm);
   }
}

/*======================================================================*\
|| ####################################################################
|| # CVS: $RCSfile: activate2.php,v $ - $Revision: 1.20 $
|| ####################################################################
\*======================================================================*/
?>
Если требуется, заменяем строчку $days = 5; на нужное число дней, после которых пользователь будет удаляться.

Далее админка - запланированные задачи - добавить новую задачу.
Имя переменной: activate2
Заголовок: Удаление не активированных
Описание: Скрип удаляет не активированных пользователей через N дней с момента регистрации
час: 0
Минуты: 4 (в самом первом окошке)
Активна: да
Имя файла: "./includes/cron/activate2.php" (без кавычек ессно)
Остальные настройки не трогаем.
Жмем сохранить и радуемся жизни.

Делалось на скорую руку, поэтому о всех глюках и недочетах сообщайте в этой теме.
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
netwind
Гуру
 
netwind's Avatar
Default
0

Грязненько.
А если неактивированные уже успеют отписаться на форуме,
заполнить всякие личные поля и прочая информация в других таблицах?
 
 
Malcolm Reed
Эксперт
 
Malcolm Reed's Avatar
Default
0

Quote:
Originally Posted by netwind View Post
Грязненько.
не спорю. Один человек в другой теме попросил такой хак, я ему сделал и заодно сюда залепил.

на самом деле проблемы из серии "уже заполнил профиль" или "уже что-то написал" это уже проблемы пользователя и админа форума. Проблемы пользователя в том что не активировал аккаунт за N Дней, а проблемы админа в том что разрешает неактивированным настраивать профиль и постить сообщения ) этих проблем можно избежать как следует настроив права группы.
Касательно инфы в других таблицах, я понадеялся на стандартный cleanup - все самое необходимое он сможет почистить.

Вообще была у меня мысль не удалять пользователей совсем, а помещать в некую корзину, но я ее отмел. Если кому-то надо, то могу развить идею.

С другой стороны никто не мешает поставить удаление раз в месяц или в два месяца. За это время уж точно можно успеть активировать аккаунт, и все приятнее чем самому лазить и удалять спамеров.
 
 
netwind
Гуру
 
netwind's Avatar
Default
1

Malcolm Reed, некоторым неприемлемо "правильно" настраивать права.
Есть механизм datamanager-ов и они удаляют чисто и максимально совместимо со последующими версиями.
 
 
Malcolm Reed
Эксперт
 
Malcolm Reed's Avatar
Default
0

Quote:
Originally Posted by netwind View Post
Есть механизм datamanager-ов и они удаляют чисто и максимально совместимо со последующими версиями.
угу, их существование я люблю игнорировать =\
обновил первый пост. Сделал почище.
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 11:33 AM.


Powered by vBulletin® Version 3.5.1
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Loading...