Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru Стол заказов Автоудаление пользователя через определенное время после регистрации

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


 ravchik    21.04.2014    Стол заказов    1157    8

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

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

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

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

Комментарии пользователей (8)

vitnet
218

2172 | 930

vitnet - 22 апреля 2014 00:56 - Эксперт

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

dj-avtosh
39

1479 | 390

dj-avtosh - 22 апреля 2014 05:18 - шашлычник

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

skype: elhan.isaev

ravchik
66

375 | 123

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

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

rocksmart
64

307 | 115

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

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

vitnet
218

2172 | 930

vitnet - 23 апреля 2014 09:53 - Эксперт

engine/modules/cron.php

ravchik
66

375 | 123

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
64

307 | 115

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
66

375 | 123

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

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

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