Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Стол заказов » Автоудаление пользователя через определенное время после регистрации

Автоудаление пользователя через определенное время после регистрации


 ravchik    21.04.2014    Стол заказов    2053    8 комментариев

Доброго врмени!

В DLE в настройках пользователя есть такой пункт
Автоматическое удаление зарегистрированных пользователей:
Количество дней, через которое удалять пользователя, если он не посещал сайт 0 = ограничений нет

Необходимо сделать так, чобы независимо от того, как часто пользователь посещает сайт, он автоматически удалялся по истечении 6-ти месяцев со дня регистрации? И чтобы это касалось только пользователей определенной группы. За неделю перед автоудалением необходимо отправлять уведомление пользователю по е-майл и в ПМ.

Сколько будет стоить данная доработка (хак или модуль)?

8 комментариев

vitnet
PHP-developer

vitnet - 22 апреля 2014 00:56 -

+ Вам за хорошую идею, нужно будет собрать подобный хак.

dj-avtosh
PHP-developer

dj-avtosh - 22 апреля 2014 05:18 -

Бедные юзеры :D Маржинальность прорастает от такого прикола :D

https://elkhan.ru
По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

ravchik
Юзер

ravchik - 22 апреля 2014 05:55 -

dj-avtosh, просто на сайте осуществляется подписка на пдф-версию газеты, по-другому просто никак....

rocksmart
Юзер

rocksmart - 22 апреля 2014 20:25 -

В каком файле используется $config[max_users_day']?

vitnet
PHP-developer

vitnet - 23 апреля 2014 09:53 -

engine/modules/cron.php

ravchik
Юзер

ravchik - 23 апреля 2014 13:54 -

vitnet, т.е. я правильно понял, что надо в этом файле подредактировать эти строки
    if( intval( $config['max_users_day'] ) ) {
        $thisdate = $_TIME - ($config['max_users_day'] * 3600 * 24);
        
        $sql_result = $db->query( "SELECT name, user_id, foto FROM " . USERPREFIX . "_users WHERE lastdate < '$thisdate' and user_group = '4'" );
        
        while ( $row = $db->get_row( $sql_result ) ) {

            $db->query( "DELETE FROM " . USERPREFIX . "_pm WHERE user_from = '{$row['name']}' AND folder = 'outbox'" );
            $db->query( "DELETE FROM " . USERPREFIX . "_pm WHERE user='{$row['user_id']}'" );
            $db->query( "DELETE FROM " . USERPREFIX . "_banned WHERE users_id='{$row['user_id']}'" );
            $db->query( "DELETE FROM " . USERPREFIX . "_users WHERE user_id = '{$row['user_id']}'" );
            @unlink( ROOT_DIR . "/uploads/fotos/" . $row['foto'] );
        }

        $db->free( $sql_result );
        
    }

Сработает-ли такое изменение:
$sql_result = $db->query( "SELECT name, user_id, foto FROM " . USERPREFIX . "_users WHERE reg_date > '$thisdate' and user_group = '4'" );
и в настройках max_users_day указать, например, 182 дня?

rocksmart
Юзер

rocksmart - 23 апреля 2014 17:22 -

после строки
$thisdate = $_TIME - ($config['max_users_day'] * 3600 * 24);

Вставить это
//для оповещений до удаления
        include_once ENGINE_DIR . '/classes/mail.class.php';
        $mail = new dle_mail( $config );
        $timenotif = $thisdate + (7 * 3600 * 24);
        $sql_notif = $db->query( "SELECT email, name, user_id, foto FROM " . USERPREFIX . "_users WHERE lastdate < '$timenotif' and user_group = '4'" );
        while ( $row = $db->get_row( $sql_notif ) ) {$mail->send( $row['email'], "заголовок сообщения", "текст сообщения" );}
    $db->free($sql_notif);

ravchik
Юзер

ravchik - 23 апреля 2014 21:27 -

rocksmart, это, я так понимаю, отправка письма-предупреждения пользователю? А по-поводу моей правки кода - она будет работать?

Чтобы комментировать - войдите или зарегистрируйтесь на сайте
наверх